Archive for 1月, 2009

Dictionaryは字引く書なりー。

某ブログでみた疑問を解決!

英語音名をMIDIノートナンバーで表記するときに、C3=60 … と、
考えるのが大変な場合は、Dictionaryを利用すると便利です。

Dictionaryクラスとは….その名前の通り、辞書のようなクラスです。辞書は、ある「単語」とその「意味(内容)」が一セットになったものの集合ですね。それと同じようにDictinaryに、key(キーワード)とvalue(その値)を登録しておき、それらを自由自在に呼び出す事ができます。

Dictionaryクラフのヘルプより:
(
d = Dictionary.new;
d.add(’monkey’ -> 0).postln; // monkeyは0
d.add(’robot’ -> 1).postln; // robotは1
d.add(’monkey’ -> 2).postln; // monkeyを2に上書き
)

d.at(’monkey’); // monkeyの値を取得する。

これを使って、英語音名でmidiノートを呼び出してみましょう。

(
d = Dictionary.new;
d.add(’3C’ -> 60).postln;
d.add(’3D’ -> 62).postln;
d.add(’3E’ -> 64).postln;

SynthDef(\simpleSine, {arg out, freq=400, gate= 1 ;

Out.ar(out, SinOsc.ar(freq) * EnvGen.kr(Env.asr(1,1,1), gate, doneAction:2))

}
).store;

Pbind(\midinote, Pseq([d.at('C'),d.at('D'), d.at('E')],inf),
\instrument, \simpleSine
).play;

全部書いたりするのも面倒ですが、どなたかコードのディクショナリーをどこかで発表している方がいらっしゃいました。ちょっと見つからなかったのですが、そんなのがあると便利かもしれないし、もっとエレガントにも書く事もできるでしょう。と、まぁ、Dictionaryは、こんな感じ、デシタ。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes