音の鳴る仕組み
音声をつくる
音の三大要素とは、
⇒音量
⇒音程
⇒音色
と一般的には言われている。これさえ理解すれば基本はOK。
ただし、音色をどう表現するかというのはとても難しく色んな研究もある。
音は空気を振るわせる波である。
人間はその波を感知して音として認識する(と思われる)。
では、波という物理的な現象として音を捉えると三大要素は
⇒振幅(振幅の二乗がエネルギーに相当)
⇒周波数(もしくはその逆数である周期)
⇒波形(何個のどんなサイン波[など]で表現できるか)
と一つの解釈することができる。
だから、この際音の基本は、振幅、周波数、波形を決めることだとまずは思ってしまうことが一番シンプル*1。
音のイメージ
弦楽器の弦が震える様子が最も波を実感する対象として分かりやすい。
ギターなどの弦楽器でハーモニクスを作るとき、指を浮かせてある位置で弦に触れる。
ハーモニクスというのは高調波、もしくは倍音という日本語訳である。
ギターであれば、5,7,12フレットのハーモニクスが一般的だと思う。
実は12フレットは弦の真ん中なのだ。だから開放弦の音が倍音で響くハーモニクスは、12フレットに指を置く。
波の真ん中あたりに指を置くと、ちょうど真ん中で谷になってひとつの波が
二つに分かれたような状態になる。このとき周波数は倍になっている。
だから倍音と呼ばれる。倍音は1オクターブ上の音になる。
ギターを弾く人はすでにその事実を使って調弦している。
音の実装
この物理現象を数学的もしくはプログラム的に表現するために、最初の実例であるexample.csdではocsilとかファンクションテーブルと使って表現している。
ただし、この物理現象や数学的な解釈を変えれば色々な音声合成の手法が考えられる。
定義が与えられ、それに甘んじ、鵜呑みにすること程、了見を狭めてクリエイティビティーを失わせることはない。
「驚異の発明家(エンヂニア)の形見函 (海外文学セレクション)」の主人公が鳥の啼声などを真似るための音声合成方や表記法を知りたいと思うのは僕だけではないだろう。
oscilとファンクションテーブルを用いると
- ファンクションテーブルでは波形を作っておいて音色をスコアセクションで決める
- oscilでは作った波形を指定された振幅と周波数で繰り返して音を作る。
oscilの最初の引数は振幅、二つ目の引数は周波数、三つ目の引数は波形。が読みこまれる。
すなわち楽器1で定義されている
a1 oscil p5, p4, 1
に
i1 0.0 2.5 440 5500
が読みこまれると、振幅5500、周波数440kHZ(ラの音)すなわち、ファンクションテーブル1番の波を1秒間に440k回=440000回繰り替えすような音を0(beat)から、2.5(beat)間の音を作り出す。
ちなみに、デフォルトでt0 60(=60bpm)なので、1(beat)=1秒である。
*1:いや、強引なのは分かっています。すいませんこの分野の研究者ではないので