ギターエフェクターの効果解析

20EC024 大井川玲央 指導教員 坂本直志

目次

1.目的

2.知識・原理

3. 分析手法

 3.1.基本的な解析の手順

 3.2.Delayの解析方法

 3.3.OverDriveの解析方法

4.計測実験

 4.1.使用機材

 4.2.Delayの計測

  4.2.1.Delay用の音源の作成

  4.2.2.Delayの分析

 4.3.OverDriveの計測

  4.3.1.OverDrive用の音源の作成

  4.3.2.OverDriveの分析

5.評価・考察

 5.1.Delayの評価

 5.2.OverDriveの評価・考察

6.まとめ

7.参考文献

8.付録

 8.1.音の作成

 8.2.ディレクトリ構成>

 8.3.作成したプログラム

1.目的

 エレキギターというものは弦を弾いて出した音をピックアップにより電気信号に変換する。その電気信号はケーブルによりアンプに伝えられスピーカーから音を出す。但し、通常ギターの音は生音のままではなく、ギターとアンプの間にエフェクターと呼ばれる信号処理器を噛ませることで音色を変え、演奏家の意図を表現した様々な音を出している。

 エレキギターの演奏では様々なミュージシャンが多彩な音を出している。演奏技術と共にエフェクターの使用技術の分析も必要になってくる。しかし、耳だけで音色効果を分析することは困難であるだけでなく、エフェクターはアナログレンジの場合が多いため、調節が難しい。ミュージシャンの演奏を分析するうえで本研究では、エフェクターを噛ませたときの音色を分析、数値化、エフェクターの使用法や設定を再現することを目的とした。また、これを目的とすることで初心者の方にエフェクターの性質を簡単に掴んで貰うことも可能にしている。

 数あるエフェクターの内のDelayとOverDriveに関して行った。

2.知識・原理

ギター

 ギターとは弦の振動によって音を出す楽器である。弦を抑える位置や、弦の張りの強さ、弦の太さ、硬さによって音程を変えることが出来る。ギターには大まかに分けて二種類が存在し、アコースティックギターとエレキギターがある。アコースティックギターはホールと呼ばれる空洞を利用して、本体を振動させて音を増強させるのに対し、エレキギターは、ピックアップと呼ばれる機関が弦の振動を電気信号に変換し、ケーブルを通ってアンプにより増幅して、スピーカーに出力し音を出す(図1)。しかし、エレキギターでは一般にはギターのアンプの間にエフェクターと呼ばれる音色を変える装置を取り付けられる。この論文ではエレキギターで用いられるエフェクターについて論ずるため、以後単に「ギター」を表す。

guitar
図1 ギター

ギターによる波形

 ギターは両側が固定端であるため、弦の振動の仕方をする(図2)。振動の腹が1つの基本振動だけでなく、2倍、3倍振動などの倍音の振動が混ざっている。例えば、基本振動が100Hzであったとするなら、200Hz、300Hz…などの周波数の成分が重なることによって一つの音を形作っている。そのためギターの音声波形は単純なsin波ではなく、不規則な変化をする音波である。

gen
図2 弦の振動

 ギターの音波の周波数帯域は基本振動が80Hz~1.5kHzであり、人間の可聴領域20Hz~20kHzと比べると、倍音を含めても十分に聞き取れることが分かる。

エフェクター

 エフェクターとはギターの音色に変化を加える部品であり、ギターとアンプの間に挿入する。エフェクターにはギター側からの入力口、アンプ側への出力口、電源入力口がある(図3)。エフェクターは色々な種類があり、音色の変え方として倍音を増やしたり、周波数を限定したり、音量を増減させるものもある。複数を直列に繋ぐこともでき、複数の音色の変化を合成することが出来る。

effectior
図3 エフェクター接続例

Delay

 Delayはエフェクターの種類の中の一つで、原音を原音に時間を遅らせて加算するものである(図4)。やまびこを作るようなものであるが、複数の楽器による演奏に聞こえるため音に厚みが出る。

 Delayの中にはDelayTimeとFeedBackという調整項目がある。DelayTimeとはその遅らせる時間のことで、FeedBackは遅らせて合成する音の音量を表す。DelayTimeは曲のスピードに合わせて使われることもある。

delsmu
図4 Delayエフェクトシュミレーション図

OverDrive

 Overdriveはエフェクターの種類の中の一つで、アンプのボリュームを過度に大きくした時に生じる歪みを再現したものである。歪んだ波形は元の音の倍音成分が付加されるため音色が厚く、華やかになる。なお、単純なOverDriveは本当に内部のアンプで増幅して、クリッピングさせているので音量が大きくなる。そのため音を大きくするためのブースターとして使われることもある。

 クリッピングとは音響機器において音量を大きくし過ぎてしまうと、許容出来る音量からはみ出た分が切り取られ、その部分が矩形波のような波になってしまう現象である(図5)。クリッピングが起こると音が歪み、音階が分かりにくくなるが、エネルギッシュな音を出すことが出来る。

 OverDriveの中にはToneとDriveという調整項目があり、Toneとは音を大きくさせるときに高周波の音を目立たせる割合を示し、Driveとはクリッピングをどれだけ起こすかを決めるものである。

clip
図5 クリッピング

自己相関

 自己相関とは「元のデータ」と「元のデータから時間をずらしたデータ」との相関係数を計算することで、そのデータの周期性を調べることが出来るものである。

 自己相関関数Rの定義式を数式1に示す。

jiko
自己相関定義式

「元のデータ」がf(t)にあたり、「元のデータから時間をずらしたデータ」がf(t+τ)にあたる。T→∞となっていることから、式(1)は非周期信号のときを表す。また、t、f(t)が離散値を取るとき式(2)のように変換できる。

risan
離散自己相関定義式

つまり、「元のデータ」と「元のデータから時間をずらしたデータ」を掛けた値の平均が自己相関になっていることが分かる。

 この論文では、サンプリング周波数によって音響信号を離散値としているため、v(t):音響信号とした、式(2)の方を利用している。

フーリエ変換

 フーリエ変換とは、ある関数が時間の関数として表されていたとき、それを周波数の関数として表せるように変換することである。フーリエ変換の対象関数は非周期関数であり、周期関数の場合はフーリエ級数を求め、離散スペクトルを利用する。

 フーリエ変換の定義式を式(3)に示す。

fft
フーリエ変換

式(3)を見ると、関数の入力から関数の出力(連続スペクトル)を得ることが出来る。

フーリエ級数

 フーリエ級数とは、周期関数を正弦波と余弦波の無限和によって表すことが出来るという性質を利用した、関数の表現手法である。また、フーリエ級数に使われる係数をフーリエ係数と呼ぶ。フーリエ級数の式を式(4)、フーリエ係数の式を式(5)~(7)に示す。

ffk
フーリエ級数
a0
an bn
フーリエ係数

 式(4)を見ると、周期ごとの正弦波と余弦波の信号を足し合わせていることが分かる。式(6),(7)は異なる周波数の正弦波、または余弦波の積を積分したときの結果が0になることを利用して周波数成分を取り出している。

3.分析手法

3.1.基本的な解析の手順

 本研究ではギターの音源に対して、音を分析することでエフェクターの効果を解析する手法を提案する。究極的な方法としては、一般に入手できる様々な楽曲音源からエフェクターの効果を解析することである。しかし、現段階では次のような手法により解析を行う。

単音のギター音を生成

エフェクターで処理して解析用音源としてファイルにする

解析用のソフトウェアでエフェクターの効果を捉える

 なお、解析用のソフトウェアとして MatLab を使用した。以後、解析の手法を説明するが、適宜、 MatLab の関数名を使用して説明する。

3.2.Delayの解析方法

 Delay は同じ音を遅らせて加算した波形のため、遅らせた時間だけずらした波形と自己相関が高くなる。また、音源にピークがある場合、Delay で遅らせた時間の後に再びピークが来る。

 そのため、入力した解析用音源に対して、自己相関を取って、ピークの間隔を求め、時間差(DelayTime)を求めた。さらに、ピークの高さの比からフィードバック量(FeedBack)を求めた。

  1. ydにエフェクト波形データを格納した。
  2. xcorr関数を利用し自己相関を計算した。引数はyd、返り値は相関係数(cro)と目標データ同士の時間差(lags)とした。
  3. findpeak関数を利用しcroの極値を取った、これをcropの値が6個以下になるまで複数回行った。引数は相関係数(cro)、返り値は相関係数の極値をとったもの(crop)とその極値のインデックス(loc)。
  4. cropの内、二番目に大きい値がDelayによって生まれた波となるため、そこからデータを抽出した。(一番大きい値はlags≒0となるため。)
  5. 時間差をDelayTime、cropの二番目に大きい値を一番大きい値で割った減衰率をFeedBack(delayPower)とした。

3.3.OverDriveの解析方法

 OverDrive は過剰に増幅してクリッピングを起こさせることで、倍音成分が付加される。

 そのため、周波数特性を考えると倍音部分のレベルの上昇が観測されるはずである。

  1. 読み込んだエフェクト波形を配列(yodt)に格納した。
  2. 周波数領域(freq)を可聴領域に限定した。
  3. fft関数を利用しyodtをフーリエ変換した。引数をエフェクト波形(yodtの成分)、返り値をフーリエ変換(fyodt)とした。
  4. X軸を周波数(freq)とした、fyodtのグラフを生成し、パワースペクトルが大きい値をExcelにメモした。
  5. その得られたデータから法則性を見出し、y-Toneグラフを作成した。

4.計測実験

 ここでは実際に観測用の音源を作成し、3章で提案した手法でエフェクターの効果が分析できるかを検証する。

4.1.使用機材

 この実験で使用した機材は以下のとおりである。

Matlab

 数値計算言語、波形や行列を計算するプログラミング言語
 MathWorks製
 アドオン – Signal Processing Toolbox
 バージョン – R2022b

Cakewalk

 DAW、楽曲制作ソフトウェア
 BandLab製
 バージョン - 2023.09

sforzando

 仮想ギター音のプラグイン、ハムバッカーピックアップのギター
 Plogue製
 UI_Standard_Guitar – Programs – 01-Standard Guitar KSOP

Excel

 Microsoft Office、表計算アプリ
 Microsoft製

ChatGPT 3.5

 対話型AI、アドバイザとして利用
 OpenAI製

4.2.Delayの計測

4.2.1.Delay用の音源の作成

  1. ギター音のプラグインを音楽制作ソフトウェアにロードする。
  2. BPMは175、音階はC4(260Hz)、録音範囲は3/4小節、ギター音は八分音符を入力した。
  3. エフェクターメニューからDigital Delayを挿入し、エフェクターの設定を表1のように調節した。
表1 Delay設定
データ名TimeRegenSpreadLowHighDelayLevelLevel
delay1350ms25%0s40Hz20kHz30%0dB
delay2500ms25%0s40Hz20kHz50%0dB
  1. 2つの音響データをwavファイルに出力した。

4.2.2.Delayの分析

delay_v2を実行した。delay1から得られたデータを図6~8に示す。

----Execution----

delayTime = 0.349342 (s)

delayPower = 36.213495 (%)

図 6 delay1実行結果
d1e
図7 delay1エフェクト後波形
d1j
図8 delay1自己相関(青線:cro,赤丸crop)

delay2から得られたデータを図9~11に示す。

----Execution----

delayTime = 0.499342 (s)

delayPower = 47.111880(%)

図9 delay2実行結果
d2e
図10 delay2エフェクト後波形
d2j
図11 delay2 自己相関(青線:cro,赤丸:crop)

 図7,10は音響データの波形を図示したものである。横軸は時間、縦軸は強さを表している。グラフでは3つのおおきな塊が横に並んでいて、左から右へ大きさが小さくなっている。これは一番左の塊が原音であり、真ん中や、右の塊はエフェクターにより原音の時間をずらして加算された波形になっている。そのため、塊同士のピークの幅がDelayTimeとなり、塊の高さの比がFeedBackに対応している。しかし、特徴点が分かりにくいため、二点間を比べようと考えても、その二点を絞り込むことが出来ない。

 図8,11は音響データの自己相関を図示したものである。横軸は時間差、縦軸は相関の強さを表している。グラフでは3つのおおきな塊が横に並んでいて、中央が最も大きく、左右の端に行く程小さくなっている。中央の塊は時間差が0、つまり原音そのものとなっており、左右の塊はエフェクターにより原音の時間をずらして加算された波形の類似度になっている。そのため、それぞれ塊同士のピークの幅がDelayTimeとなり、塊の高さの比がFeedBackに対応している。ここで、中央と左右の塊の頂点の値を特徴点として抽出したものが赤丸となる。これによってDelayTimeとFeedBackを算出したものが、図6,9となる。

4.3.OverDriveの計測

4.3.1.OverDrive用の音源の作成

  1. ギター音のプラグインを音楽制作ソフトウェアにロードする。
  2. BPMは175、音階はC4(260Hz)、録音範囲は3/4小節、ギター音は八分音符を入力した。
  3. エフェクターメニューからTUBE NINEを挿入し、エフェクターの設定を表2のように調節した。
表2 OverDrive-Tone設定
データ名DRIVETONELEVEL
od_5_0505
od_5_1515
od_5_2525
od_5_5555
od_5_7575
od_5_9595
od_5_105105
  1. 7つの音響データをwavファイルに出力した。また、エフェクト波形の概形にばらつきがあったため、似ている波形が出るまで録音しなおした。

4.3.2.OverDriveの分析

overdrive_tone_v2を実行した。得られたデータを図12~19、表3に示す。

o0f
図12 od5_0フーリエ変換

 図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というように変えてフーリエ変換グラフを生成し、データごとのフーリエ変換グラフがどのような値を取るかを比較した。

01f
図13 od5_1フーリエ変換

 図13はToneの値が1の音響データod_5_1のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっている。

o2f
図14 od5_2フーリエ変換

 図14はToneの値が2の音響データod_5_2のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1600Hz付近の成分が大きくなっている。

o5f
図15 od5_5フーリエ変換

 図15はToneの値が5の音響データod_5_5のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、1500Hz以降の成分の塔が全体的に高くなっているが、1500Hz以前の成分は同程度である。

o7f
図16 od5_7フーリエ変換

 図16はToneの値が7の音響データod_5_7のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっており、図14より大きい。

o9f
図17 od5_9フーリエ変換

 図17はToneの値が9の音響データod_5_9のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、800Hz以前の成分の塔が全体的に小さくなっている反面、1000Hz以降の成分の塔が全体的に高くなっている。特に1000Hz付近の成分が大きくなっており、図13と同程度、図16よりは小さい。

o10f
図18 od5_10フーリエ変換

 図18はToneの値が10の音響データod_5_10のフーリエ変換を図示したものである。横軸は周波数、縦軸は強さを表している。図12と比べて、800Hz以前の成分の塔がぜんたいてきに小さくなっている反面、1000Hz以降の成分の塔が全体的に高くなっている。特に1600Hz付近の成分が大きくなっており、図12~18の1600Hzの間で最も大きい値を取っている。

 図12~18のこれらの違いをまとめて見られるように表3、図19を作成した。

表 3 OverDrive-Toneパワースペクトル
Hzdata0data1data2data5data7data9data10
26018415615016513710591
520219244261285282165214
790744875883861825734683
10501209142013301176149814371340
1315265301331339279347347
1580476574657664727740925
1850285395398421408482596
2110155204217206212276344
238598114109135135165195
vow
図19 OverDrive-Toneフーリエ変換比較図

 図19は図12~18の音響データの周波数スペクトルの数値をまとめたものである。横軸が周波数、縦軸が強さを表している。周波数を固定してdata0からdata10にかけてのスペクトルの遷移を見ることで、Toneの変更によって規則性が生まれた部分を見分けることが出来る。1315Hz以下はdata0からdata10にかけての遷移は増減がバラバラであるが、1580Hz以上はdata0からdata10にかけて単調増加になっていることが分かる。

5.評価・考察

5.1.Delayの評価

 図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以下に収まっており十分と言える。

5.2.OverDriveの評価・考察

 表3,図19を見ると260Hzから1315HzまではToneによって規則的に変化している様子は無く、data間での増減は不規則であることが見て取れる。これは高周波を強調するToneの影響範囲外であると考えられる。1580Hz以降ではToneを上げるに従って、その周波数帯域の強さが上がっていることが分かる。特に、表3に注目すると、data0~2、data7~10にかけての増加率が大きいことが分かる。

 ギターにおいて中音域は1000Hz前後、高音域は2000Hz前後とされていることを考慮に入れると、1500Hz付近から周波数スペクトルが増加するのは妥当だと言える。

 1580Hz以降の周波数スペクトル増加率に規則性がないかを考察する。表3で得られたデータをグラフ化したものを図20~23に示す。

1580
図20 OverDrive-Tone-1580Hz
(青:実データ, 緑:最小二乗法三次関数, 赤:単調増加3次関数)

 図20は1580Hzの時のToneによる周波数スペクトルの変化を見ている。横軸はTone、縦軸は強さを表している。図には青の折れ線と、緑の曲線、赤の曲線があり、どの色の線も左から中央にかけて増加し、また中央から右にかけて増加している。青の折れ線は表3の周波数スペクトルを直線でつないだものであり、緑の曲線は青の折れ線を最小二乗法利用して三次関数に近似したものである。赤の曲線は青の折れ線の概形を見て、y=x^3のグラフに似ているように感じたため、極値を取らない単調増加の三次関数という前提で近似したものである。これは、Toneを大きくしていくごとに周波数スペクトルがどのような変化をするかを調べ、またその近似曲線の妥当性を測るグラフである。

 図20~23では近似曲線の次数と計算手法は変えずに、周波数とそれに対応する周波数スペクトルを変えて青の折れ線を生成し、それに対応する緑の曲線と赤の曲線を比較している

1850
図21 OverDrive-Tone-1850Hz
(青:実データ, 緑:最小二乗法三次関数, 赤:単調増加3次関数)
2110
図22 OverDrive-Tone-2110Hz
(青:実データ, 緑:最小二乗法三次関数, 赤:単調増加3次関数)
2385
図23 OverDrive-Tone-2385Hz
(青:実データ, 緑:最小二乗法三次関数, 赤:単調増加3次関数)

 1580Hz(図20)、1850Hz(図21)では近似関数は概形がおおよそ一致していることから、Toneは三次関数的に増加するのではないかと考える。また、値がそれぞれの実データに近いものは最小二乗法の方であるが、実データが単調増加であることを考えると極値無し近似関数の方が適していると言える。

 2110Hz(図22)、2385Hz(図23)では実データと単調増加三次関数との乖離が大きく、三次関数が適していないと感じられる。これは、実データの値同士の差が小さいためと考えられる。

6.まとめ

 本研究では、エフェクトを掛けた単音の音響信号から、エフェクターの設定を再現するための数値を得ることを目的に研究した結果、Delayエフェクターの主な設定を音響データから抜き出し、OverDriveエフェクターのToneの設定を音響データから数値化することが出来た。今後の課題としては、「他種類のエフェクターの分析」と「多重にエフェクトを掛けた時の聞き分け」、「2音以上のエフェクター設定の抜き出し」がある。

7.参考文献

  1. ギターってどんな楽器?ギターの構造や基礎知識を紹介 | KOUJUN Guitar Academy
  2. https://koujun.ac/music-theory-basic-003/
  3. 初心者からはじめる「エフェクター自作 講座」〜 回路図記号と回路図のルール 〜 | エフェクター専門サイト EFFECTOR COLLECTION BOX
  4. https://effectorbox.com/effector-jisaku-kairo/
  5. 【エフェクター】初心者さん!学生さん必見!はじめてのエフェクターにオススメ~コスパ重視編~|島村楽器 イオンモール長久手店
  6. https://www.shimamura.co.jp/shop/nagakute/product/20180611/2393
  7. 弦の振動 ■わかりやすい高校物理の部屋■
  8. https://wakariyasui.sakura.ne.jp/p/wave/koyuu/genn.html
  9. 32-5. 自己相関 | 統計学の時間 | 統計WEB
  10. https://bellcurve.jp/statistics/course/12935.html
  11. Autocorr.pdf | 近畿大学
  12. https://www.phys.kindai.ac.jp/laboratory/kondo/lectures/ichikawa/Autocorr.pdf
  13. フーリエ変換の定義と性質 | 物理の学校
  14. https://physics-school.com/fourier-transform/
  15. エフェクターの基礎知識⑧:ディストーション&オーバードライブの基礎を理解しよう! – OTO×NOMA
  16. https://kensukeinage.com/effector_distortion_and_overdrive/
  17. エレキギター 音色を決める共振周波数と、トーン回路コンデンサ容量、ケーブルとの関係
  18. https://www.ne.jp/asahi/u-eg/eguitar/S_Tone_500K_Freq.html

8.付録

8.1.音の作成

sforzandoのロード

  1. Cakewalkを起動し、デフォルト設定でプロジェクト作成
  2. 挿入→プラグインシンセ→sforzand→ok を選択
  3. 挿入したトラックのピアノのマークをクリック
  4. INSTRUMENT→User→UI_Standard_Guitar→Programs→01-Standard Guitar KSOP を選択

原音波形作成

  1. BPMは175、音階はC4、録音範囲は3/4小節とした。(図24)
c4
図24 Cakewalk音階・範囲設定
  1. トラックのFX→オーディオFXの挿入→TH3 を選択
  2. ITEMSからOverrange 120を挿入し図25のようにつまみを設定した。Overageはアンプである。
amp
図25 Overange設定
  1. ファイル→エクスポート→オーディオ を選択
  2. 拡張子をwavとし、レンジをタイム選択範囲とし、エクスポートした。

エフェクト波形作成(Delay)

  1. FXメニューのOverangeの右にITEMSからDigital Delayを挿入し、つまみを表1のように調節した。
  2. それぞれwavファイルにエクスポートした。

エフェクト波形作成(OverDrive)

  1. FXメニューのOverangeの右にITEMSからTUBE NINEを挿入し、つまみを表2のように調節した。
  2. それぞれwavファイルにエクスポートした。また、エフェクト波形の概形にばらつきがあったため、似ている波形が出るまで録音しなおした。

Matlabで読み込み

  1. audioread関数を利用し音声データを読み込んだ。引数はデータの相対パス(‘../..wav’)、返り値はデータ値(y)とサンプリング周波数(Fs)とした。

8.2.ディレクトリ構成

dhi

8.3.作成したプログラム

sinRead.mは利用していないため省略する。

delay_v2.m

d1 d2 d3 d4 d5

overdrive_tone_v2

o21 o22 o23

overdrive_tone_v3

o31 o32 o33 o34

tannonRead.m

tR

normal.m

sS

fftNormalize.m

fftN