エレキギターというものは弦を弾いて出した音をピックアップにより電気信号に変換する。その電気信号はケーブルによりアンプに伝えられスピーカーから音を出す。但し、通常ギターの音は生音のままではなく、ギターとアンプの間にエフェクターと呼ばれる信号処理器を噛ませることで音色を変え、演奏家の意図を表現した様々な音を出している。
エレキギターの演奏では様々なミュージシャンが多彩な音を出している。演奏技術と共にエフェクターの使用技術の分析も必要になってくる。しかし、耳だけで音色効果を分析することは困難であるだけでなく、エフェクターはアナログレンジの場合が多いため、調節が難しい。ミュージシャンの演奏を分析するうえで本研究では、エフェクターを噛ませたときの音色を分析、数値化、エフェクターの使用法や設定を再現することを目的とした。また、これを目的とすることで初心者の方にエフェクターの性質を簡単に掴んで貰うことも可能にしている。
数あるエフェクターの内のDelayとOverDriveに関して行った。
ギターとは弦の振動によって音を出す楽器である。弦を抑える位置や、弦の張りの強さ、弦の太さ、硬さによって音程を変えることが出来る。ギターには大まかに分けて二種類が存在し、アコースティックギターとエレキギターがある。アコースティックギターはホールと呼ばれる空洞を利用して、本体を振動させて音を増強させるのに対し、エレキギターは、ピックアップと呼ばれる機関が弦の振動を電気信号に変換し、ケーブルを通ってアンプにより増幅して、スピーカーに出力し音を出す(図1)。しかし、エレキギターでは一般にはギターのアンプの間にエフェクターと呼ばれる音色を変える装置を取り付けられる。この論文ではエレキギターで用いられるエフェクターについて論ずるため、以後単に「ギター」を表す。
ギターは両側が固定端であるため、弦の振動の仕方をする(図2)。振動の腹が1つの基本振動だけでなく、2倍、3倍振動などの倍音の振動が混ざっている。例えば、基本振動が100Hzであったとするなら、200Hz、300Hz…などの周波数の成分が重なることによって一つの音を形作っている。そのためギターの音声波形は単純なsin波ではなく、不規則な変化をする音波である。
ギターの音波の周波数帯域は基本振動が80Hz~1.5kHzであり、人間の可聴領域20Hz~20kHzと比べると、倍音を含めても十分に聞き取れることが分かる。
エフェクターとはギターの音色に変化を加える部品であり、ギターとアンプの間に挿入する。エフェクターにはギター側からの入力口、アンプ側への出力口、電源入力口がある(図3)。エフェクターは色々な種類があり、音色の変え方として倍音を増やしたり、周波数を限定したり、音量を増減させるものもある。複数を直列に繋ぐこともでき、複数の音色の変化を合成することが出来る。
Delayはエフェクターの種類の中の一つで、原音を原音に時間を遅らせて加算するものである(図4)。やまびこを作るようなものであるが、複数の楽器による演奏に聞こえるため音に厚みが出る。
Delayの中にはDelayTimeとFeedBackという調整項目がある。DelayTimeとはその遅らせる時間のことで、FeedBackは遅らせて合成する音の音量を表す。DelayTimeは曲のスピードに合わせて使われることもある。
Overdriveはエフェクターの種類の中の一つで、アンプのボリュームを過度に大きくした時に生じる歪みを再現したものである。歪んだ波形は元の音の倍音成分が付加されるため音色が厚く、華やかになる。なお、単純なOverDriveは本当に内部のアンプで増幅して、クリッピングさせているので音量が大きくなる。そのため音を大きくするためのブースターとして使われることもある。
クリッピングとは音響機器において音量を大きくし過ぎてしまうと、許容出来る音量からはみ出た分が切り取られ、その部分が矩形波のような波になってしまう現象である(図5)。クリッピングが起こると音が歪み、音階が分かりにくくなるが、エネルギッシュな音を出すことが出来る。
OverDriveの中にはToneとDriveという調整項目があり、Toneとは音を大きくさせるときに高周波の音を目立たせる割合を示し、Driveとはクリッピングをどれだけ起こすかを決めるものである。
自己相関とは「元のデータ」と「元のデータから時間をずらしたデータ」との相関係数を計算することで、そのデータの周期性を調べることが出来るものである。
自己相関関数Rの定義式を数式1に示す。
「元のデータ」がf(t)にあたり、「元のデータから時間をずらしたデータ」がf(t+τ)にあたる。T→∞となっていることから、式(1)は非周期信号のときを表す。また、t、f(t)が離散値を取るとき式(2)のように変換できる。
つまり、「元のデータ」と「元のデータから時間をずらしたデータ」を掛けた値の平均が自己相関になっていることが分かる。
この論文では、サンプリング周波数によって音響信号を離散値としているため、v(t):音響信号とした、式(2)の方を利用している。
フーリエ変換とは、ある関数が時間の関数として表されていたとき、それを周波数の関数として表せるように変換することである。フーリエ変換の対象関数は非周期関数であり、周期関数の場合はフーリエ級数を求め、離散スペクトルを利用する。
フーリエ変換の定義式を式(3)に示す。
式(3)を見ると、関数の入力から関数の出力(連続スペクトル)を得ることが出来る。
フーリエ級数とは、周期関数を正弦波と余弦波の無限和によって表すことが出来るという性質を利用した、関数の表現手法である。また、フーリエ級数に使われる係数をフーリエ係数と呼ぶ。フーリエ級数の式を式(4)、フーリエ係数の式を式(5)~(7)に示す。
式(4)を見ると、周期ごとの正弦波と余弦波の信号を足し合わせていることが分かる。式(6),(7)は異なる周波数の正弦波、または余弦波の積を積分したときの結果が0になることを利用して周波数成分を取り出している。
本研究ではギターの音源に対して、音を分析することでエフェクターの効果を解析する手法を提案する。究極的な方法としては、一般に入手できる様々な楽曲音源からエフェクターの効果を解析することである。しかし、現段階では次のような手法により解析を行う。
なお、解析用のソフトウェアとして MatLab を使用した。以後、解析の手法を説明するが、適宜、 MatLab の関数名を使用して説明する。
Delay は同じ音を遅らせて加算した波形のため、遅らせた時間だけずらした波形と自己相関が高くなる。また、音源にピークがある場合、Delay で遅らせた時間の後に再びピークが来る。
そのため、入力した解析用音源に対して、自己相関を取って、ピークの間隔を求め、時間差(DelayTime)を求めた。さらに、ピークの高さの比からフィードバック量(FeedBack)を求めた。
OverDrive は過剰に増幅してクリッピングを起こさせることで、倍音成分が付加される。
そのため、周波数特性を考えると倍音部分のレベルの上昇が観測されるはずである。
ここでは実際に観測用の音源を作成し、3章で提案した手法でエフェクターの効果が分析できるかを検証する。
この実験で使用した機材は以下のとおりである。
データ名 | Time | Regen | Spread | Low | High | DelayLevel | Level |
---|---|---|---|---|---|---|---|
delay1 | 350ms | 25% | 0s | 40Hz | 20kHz | 30% | 0dB |
delay2 | 500ms | 25% | 0s | 40Hz | 20kHz | 50% | 0dB |
delay_v2を実行した。delay1から得られたデータを図6~8に示す。
----Execution---- delayTime = 0.349342 (s) delayPower = 36.213495 (%) |
delay2から得られたデータを図9~11に示す。
----Execution---- delayTime = 0.499342 (s) delayPower = 47.111880(%) |
図7,10は音響データの波形を図示したものである。横軸は時間、縦軸は強さを表している。グラフでは3つのおおきな塊が横に並んでいて、左から右へ大きさが小さくなっている。これは一番左の塊が原音であり、真ん中や、右の塊はエフェクターにより原音の時間をずらして加算された波形になっている。そのため、塊同士のピークの幅がDelayTimeとなり、塊の高さの比がFeedBackに対応している。しかし、特徴点が分かりにくいため、二点間を比べようと考えても、その二点を絞り込むことが出来ない。
図8,11は音響データの自己相関を図示したものである。横軸は時間差、縦軸は相関の強さを表している。グラフでは3つのおおきな塊が横に並んでいて、中央が最も大きく、左右の端に行く程小さくなっている。中央の塊は時間差が0、つまり原音そのものとなっており、左右の塊はエフェクターにより原音の時間をずらして加算された波形の類似度になっている。そのため、それぞれ塊同士のピークの幅がDelayTimeとなり、塊の高さの比がFeedBackに対応している。ここで、中央と左右の塊の頂点の値を特徴点として抽出したものが赤丸となる。これによってDelayTimeとFeedBackを算出したものが、図6,9となる。
データ名 | DRIVE | TONE | LEVEL |
---|---|---|---|
od_5_0 | 5 | 0 | 5 |
od_5_1 | 5 | 1 | 5 |
od_5_2 | 5 | 2 | 5 |
od_5_5 | 5 | 5 | 5 |
od_5_7 | 5 | 7 | 5 |
od_5_9 | 5 | 9 | 5 |
od_5_10 | 5 | 10 | 5 |
overdrive_tone_v2を実行した。得られたデータを図12~19、表3に示す。
図12はToneの値が0の音響データod_5_0のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。グラフでは一定周期で値が塔のように大きくなったものが並んでいて、図の中央より左側に塔が集まっていて、中央より右側には塔はほぼ無く平坦になっている。これは音響データの可聴領域に含まれている周波数ごとの含有度を示すグラフであり、特に大きい値となっている塔は左から一つ目(x≒250)がC4(260Hz)の1倍振動、二つ目(x≒500)がC4の2倍振動、三つ目(x≒750)がC4の3倍振動…の周波数スペクトルとなっている。
図12~18ではフーリエ変換計算方法は変えずに、音響データをod_5_0~od_5_10というように変えてフーリエ変換グラフを生成し、データごとのフーリエ変換グラフがどのような値を取るかを比較した。
図13はToneの値が1の音響データod_5_1のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっている。
図14はToneの値が2の音響データod_5_2のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1600Hz付近の成分が大きくなっている。
図15はToneの値が5の音響データod_5_5のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、1500Hz以降の成分の塔が全体的に高くなっているが、1500Hz以前の成分は同程度である。
図16はToneの値が7の音響データod_5_7のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっており、図14より大きい。
図17はToneの値が9の音響データod_5_9のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、800Hz以前の成分の塔が全体的に小さくなっている反面、1000Hz以降の成分の塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっており、図13と同程度、図16よりは小さい。
図18はToneの値が10の音響データod_5_10のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、800Hz以前の成分の塔がぜんたいてきに小さくなっている反面、1000Hz以降の成分の塔が全体的に高くなっている。特に1600Hz付近の成分が大きくなっており、図12~18の1600Hzの間で最も大きい値を取っている。
図12~18のこれらの違いをまとめて見られるように表3、図19を作成した。
Hz | data0 | data1 | data2 | data5 | data7 | data9 | data10 |
---|---|---|---|---|---|---|---|
260 | 184 | 156 | 150 | 165 | 137 | 105 | 91 |
520 | 219 | 244 | 261 | 285 | 282 | 165 | 214 |
790 | 744 | 875 | 883 | 861 | 825 | 734 | 683 |
1050 | 1209 | 1420 | 1330 | 1176 | 1498 | 1437 | 1340 |
1315 | 265 | 301 | 331 | 339 | 279 | 347 | 347 |
1580 | 476 | 574 | 657 | 664 | 727 | 740 | 925 |
1850 | 285 | 395 | 398 | 421 | 408 | 482 | 596 |
2110 | 155 | 204 | 217 | 206 | 212 | 276 | 344 |
2385 | 98 | 114 | 109 | 135 | 135 | 165 | 195 |
図19は図12~18の音響データの周波数スペクトルの数値をまとめたものである。横軸が周波数、縦軸が強さを表している。周波数を固定してdata0からdata10にかけてのスペクトルの遷移を見ることで、Toneの変更によって規則性が生まれた部分を見分けることが出来る。1315Hz以下はdata0からdata10にかけての遷移は増減がバラバラであるが、1580Hz以上はdata0からdata10にかけて単調増加になっていることが分かる。
図8、11を見るとdelay1、delay2ともに自己相関結果の高周波成分を取り除き、特徴点を抽出できていることが分かる。赤丸の内、最も大きい相関値は時間差が0の点にあるが、これは自身の信号自体を示し、二番目に大きい相関値はディレイ信号(エフェクターによって生まれた信号)を示している。
この二点間の時間差を算出したものが出力結果のdelayTimeであるが、delay1は0.3493、delay2は0.4993となっており、表1の設定のTimeと比較すると誤差は非常に小さく、誤差率は+―0.002%程度になっている。
また、二点間の相関値の比率を求めたものがdelayPowerであるが、delay1は36.1、delay2は47,1となっており、表1の設定のDelayLevelと比較すると、誤差は10以下に収まっており十分と言える。
表3,図19を見ると260Hzから1315HzまではToneによって規則的に変化している様子は無く、data間での増減は不規則であることが見て取れる。これは高周波を強調するToneの影響範囲外であると考えられる。1580Hz以降ではToneを上げるに従って、その周波数帯域の強さが上がっていることが分かる。特に、表3に注目すると、data0~2、data7~10にかけての増加率が大きいことが分かる。
ギターにおいて中音域は1000Hz前後、高音域は2000Hz前後とされていることを考慮に入れると、1500Hz付近から周波数スペクトルが増加するのは妥当だと言える。
1580Hz以降の周波数スペクトル増加率に規則性がないかを考察する。表3で得られたデータをグラフ化したものを図20~23に示す。
図20は1580Hzの時のToneによる周波数スペクトルの変化を見ている。横軸はTone、縦軸は強さを表している。図には青の折れ線と、緑の曲線、赤の曲線があり、どの色の線も左から中央にかけて増加し、また中央から右にかけて増加している。青の折れ線は表3の周波数スペクトルを直線でつないだものであり、緑の曲線は青の折れ線を最小二乗法利用して三次関数に近似したものである。赤の曲線は青の折れ線の概形を見て、y=x^3のグラフに似ているように感じたため、極値を取らない単調増加の三次関数という前提で近似したものである。これは、Toneを大きくしていくごとに周波数スペクトルがどのような変化をするかを調べ、またその近似曲線の妥当性を測るグラフである。
図20~23では近似曲線の次数と計算手法は変えずに、周波数とそれに対応する周波数スペクトルを変えて青の折れ線を生成し、それに対応する緑の曲線と赤の曲線を比較している
1580Hz(図20)、1850Hz(図21)では近似関数は概形がおおよそ一致していることから、Toneは三次関数的に増加するのではないかと考える。また、値がそれぞれの実データに近いものは最小二乗法の方であるが、実データが単調増加であることを考えると極値無し近似関数の方が適していると言える。
2110Hz(図22)、2385Hz(図23)では実データと単調増加三次関数との乖離が大きく、三次関数が適していないと感じられる。これは、実データの値同士の差が小さいためと考えられる。
本研究では、エフェクトを掛けた単音の音響信号から、エフェクターの設定を再現するための数値を得ることを目的に研究した結果、Delayエフェクターの主な設定を音響データから抜き出し、OverDriveエフェクターのToneの設定を音響データから数値化することが出来た。今後の課題としては、「他種類のエフェクターの分析」と「多重にエフェクトを掛けた時の聞き分け」、「2音以上のエフェクター設定の抜き出し」がある。
sinRead.mは利用していないため省略する。