サウンドデザインに関する文書の翻訳

2007年7月14日土曜日

基本的な加算法

面白くない音でしょ?まぁでも次のステップの電話を作るための出発点だ。下のダイアグラムを見て。もう1つオシレータを足した。2つのオシレータの出力を繋げる要素は[+~]ユニットで、そいつは単に2つのオーディオ信号を足してるだけ。注意して欲しいのが、今回はメッセージを送る代わりにデフォルトのパラメータを既に入力してるってとこ。これはPureDataのリアルタイムコントロールにもよく使われるし特定の初期値に最適化させる時にも使われる。つまりこのパッチはすぐ音が鳴らせる。でもこの周波数で決まっちゃって動かないって訳ではなくて、インレットに入力があればパラメータを上書きすることもできる。でたらめな周波数、単に打ちやすかった1234と789を選んだんだけど、ちょっと聴いてみて...知ってる感じしない?何でかって言うと、1980年代の電話はDTMF信号を使ってて、単純にユニークな周波数をお互いに足し合わせただけの仕組みだったからだ。周波数を正確に選ぶことで、電話交換スイッチはひどいノイズからダイアルされた音を判別できた。phase locked loopと呼ばれる回路を使って変調を戻す。これらのオシレータが初期の電話に組み込まれたので、同じチップが電話の呼び鈴を作るのに再利用されても驚くことはない。文化的/商業的理由からこうやって80年代の音は作られた。もうここまできちゃったけど、まずは単にサイン波のペアを重ね合わせるだけで可能性を探ってみよう。

ダイアルの音色をつくるのはとても簡単。ちょっとスパイスを足してキーパッドで数字を押してダイアルするようにしてみよう。

これがDTMF/CCITTで使われてる周波数のペアのリスト。

1209 1336 1477 1633
-------------------------------------------
697 | 1 2 3 A
770 | 4 5 5 B
852 | 7 8 9 C
941 | * 0 # D

9の音色を得るためには、1477Hzに852Hzを加える。そのため最終的な音はそれぞれ与えられた周波数に2つの成分をもつことになる。サイン波が使われてるのは重要で、サイン波やコサイン波は固有の周波数しかもたないことを思い出して欲しい。純粋なんだ。純粋なサイン波の重ね合わせはスペクトラムの理解が簡単で、結果はただ入力した二つの成分に過ぎない。これは正直な加算合成だ。シグナルを歪ませない限り、二つの成分は互いに干渉し合うことはない。化学の類推例で言えば水と油だったり溶液中の反応しない溶液みたいなもの。また後でフィルタリングとかその他のテクニックを使ってミックスされた状態から元に戻す。今回のはどの番号も純粋なサイン波の信号だ。

上記の表を使って僕らはDTMFダイアラを作ることができるようになった。サウンドカードをボイスモデムデバイスにつなげば実際に機能する。キーパッド上のキーは固有の行き先にbangメッセージを送り、それぞれの行き先は二つの周波数のリストメッセージをダイアラーパッチに送る。[unpack f f]要素はリストを二つの浮動小数点に分割し、それぞれオシレータに渡す。加算機能はシンメトリカルなので実際はどの値がどのオシレータに行こうが関係ない。1234Hz+789Hz=789Hz+1234Hzってこと。全部の機能がこうやって実現される訳じゃないってのは覚えておいて欲しい、けど加算と積算は全くこの通り。パッチをダウンロードするか実例を聴いてみて欲しい。
ピュアデータファイル .pd
オーディオ.mp3



Telephone bell synthesis 1
Practical Synthetic Sound Design

0 件のコメント: