投稿

7月, 2007の投稿を表示しています

SC3の導入、言語、プログラミングの基本

基本 最初にSCを起動したら、起動したことについての情報がウィンドウに現れる。最初の訳わかんない文字列は無視しちゃっていいけど、見えるところに動かしておくこと。というのも、君のコードのエラーや実行結果など役立つ情報を出力してくれるからだ。これからこれをポストウィンドウと呼ぶよ。そのままこのウィンドウを使ってコードを編集したり入力したりもできるんだけど、僕は新しいウィンドウを開く方が好きだな。 SuperColliderはテキストエディタ、プログラミング言語、コンパイラ、デジタルシンセサイザーが一体となってる。これは君がSCを使ってコードを書いたり編集したりすることが、音楽を演奏することを含んでるってことを意味する。それから君はSCを使ってコードを評価したり、デバッグしたり、コンパイルしたり実行したりできて、その結果はリアルタイムに音になる。テキストを編集する機能(選択、コピー、置き換え、など)は他の基本的なエディタと一緒。でもいくつかコードを編集するのに手軽で役立つユニークな特徴がある。もし君が今まで一度もコードを書いたことがないなら、その価値はすぐには理解できないだろう。何度もここに戻って、見直すことをおすすめする。 Com-, 指定行に移動 Com-/ 選択された行をコメントアウト Opt-Com-/ 選択された行のコメントを外す Shift-Com-B 括弧を対照する Com-] コードを右にシフト Com-[ コードを左にシフト Com-. 全ての録音再生を止める Shift-Com-/ (Com-?) 選択されたアイテムからヘルプを開く Com-' シンタックスを色付けする 括弧をダブルクリック 括弧を対照する Com-\ ポストウィンドウを前面にする Shift-Com-K ポストウィンドウをクリアする Shift-Com-\ 全てを前面にする 評価はコードについてのシステムのメッセージ、数値(データ)、式や関数(計算機みたいな)、またはシンセサイザーパッチの音などになる。SCパッチからのデータは録音のためのピッチや、演奏者への命令、解析の結果になり得る。けど次のチャプターでの僕らの目的は、音だ。 選択されたコードを評価するには、エンターキーを押す(リターンじゃない、エンターだよ)。もし一行だけ評価したい場合は、選択する必要はない。その行にカーソ...

基本的な加算法

イメージ
面白くない音でしょ?まぁでも次のステップの電話を作るための出発点だ。下のダイアグラムを見て。もう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を加える。そのため最終的な音はそれぞ...

1980年がもう一度電話をかけ直してくれと呼んでる

イメージ
ちょっと最初の実例を聴いてみるところから始めよう。 オーディオ.mp3 どうやってこの音を作ったか?ーオシレータの基本 まず始めに、基礎を築き上げよう。僕らがやろうとする構成的な合成のほとんどは、シンプルなアウトラインや目的に近い大体の音から始めて、細部を足していくやり方だ。ある時はいきなり大きな音が欲しかったり、まず振幅のカーブが欲しかったり、またある時は大体の周波数だったり、正しいトーンを得ることから始めたりすることができる。基礎として、シンプルなサイン波から始める以外にいい信号ってあるだろうか?こういう合成を始める際によく出発点とされてて、下のダイアグラムなんてもう慣れ親しんでる。あとの実例ではこのステージを飛ばして、もう当然のことにする。だけど、このステージではダイアグラムのパラメータについてちょっと考えてみよう。僕らはただ周波数と位相を付け加えるだけ。基本を人間の可聴域の大体中点である1000ヘルツにしておく。位相に関しては忘れていていい。コードを繋がないか、0にしておく。というのも、シンプルな加算合成やAM合成では耳はちゃんと聴いてないし信号の位相に注意は向かないからだ。振幅を知ることは、実際信号がどのように合成に影響するか決定するのに非常に重要なんだけど、今は無視しよう。 真ん中の[osc~]って名前がついた要素。これがサイン波のオシレータユニット。2つの入力を持ってて、片方は周波数を、もう片方は位相をセットする。これらの入力は対になったメッセージによって与えられる。PureDataでこのパッチを作っても、最初は何の音も聴こえない。というのも、デフォルトの周波数が決められてなくて0Hzになってるから。0Hzの音は音がないと言ってもいい。だからまずメッセージボックスをクリックして何の周波数で実行するかってのを送ってやる必要がある。オシレータの出力は直接DAコンバータ(君のコンピュータのサウンドカード)に接続されてとてもでかい音になる、気をつけてね。普通は、振幅を少し減らすために減衰器/音量ブロックを置く。[*~ 0.25]とかがよく使われるんだけど、最大の音量から1/4または25%に減衰する。もし何も聴こえない場合、PureDataのオーディオエンジンがオンになってるかどうか確認して欲しい。メニューからMedia->AudioONか、コントロール(...

3つの電話

このエクササイズでは3つの電話の音を作るつもり。それぞれ全く異なっていて、別々の原理を使ってる。これを実現するために3つの合成手法と3つの制御構造をみていこう。「同じ音」を3つの異なった手法で作ることで、どのような音の記述法が実現可能な実装に導くのかを理解できるようになる。それぞれが効果的に合成され、ある登場人物が鳴らす音を生成するための客観的な手法として、ゲームデザイナーは簡単にコードに組み込める。こういうことをやってくと、インターフェースデザインが振る舞いや制御構造にどのように関係してるかが分かるようになる。 最初の電話は1980年代のアメリカ式のもので、沢山のテレビ番組でおなじみだ。現実世界とは何の対応もなく、言い換えれば完全に人工の音だ。僕らは電話を知ってるから、電話が鳴ってることを連想できる。つまり、第一原理や物理的な分解は機能しないってこと。その代わりそういう電話がどうやって動いているかを学ぶ知識を基礎にして取り組む必要がある。これに関しては、特定の間隔で側帯波を発生させるAM合成を使って、それ自身が振幅変調を起こしている制御構造を結合する。 2つ目の実例は最初のとは根本的に違うところから出発する。ここではオールドファッションな着信音に近づけるため力技で加算合成を使う。欲しい音に近づけてくれる方法を理解することによって、絶対的/生産的な知識を使うんだ。これは1930年代から1940年代の電話の音で、戦時中や戦前の古い映画に特徴的な音。この時点で合成の構造から分離した操作の概念を拡張して、イベントメッセージがPureDataの中でどのようにオーディオブロックと異なっているかを探求しよう。これで以前よりは共依存のパラメータから離れられるし、モジュール性を通してより多才な操作が可能になる。 最後の実例はもっと進んだリアルな着信音を作り直す試みだ。そうすることで、僕らは最初の2つの試みでの欠点やごまかしを見つけ、どうやって洗練し、重要性をひとひねりしてその振る舞いを一般的に改良するかを調べていこう。このために僕らはclosed form cosine synthesisやstochastic control methodsを使う。 Telephone bell synthesis 1 Practical Synthetic Sound Design [訳者補足]...