OpenMusic公式チュートリアル解説:1 - 移調(トランスポーズ)
■今回のテーマ
算術演算子を利用してノートを移調する。
■使用するファンクション
CHORD , om+
■解説
"om+" を使用してCHORDの各ノートにmidicent値を加算していくだけである。例を見たほうが早い。
Om において、ノートのピッチは midicent で表現される。Midicent は midiのノート番号に (中央のC3が60に対応してるアレ) セントを表す100を乗算したもの。つまり、100 cent = 1 半音だ。
ノートを上下に移調するということは、与えられたノートにmidicents値を加減算することと同義ということになる。例のCHORDボックスは和音なので、それぞれのノートに移調したい micicent を加算しなくてはならない。なので、om謹製の "om+" を使用する。"om+" はリストの各要素に対してそれぞれ加算できる。
ちなみに単音であるNOTEボックスならCommonLisp標準の "+" でなんの問題もない。(CHORDボックスでやるとエラーになる)
このパッチではCHORDボックス(A)内の全てのノートに、入力した値200 (B) を加算 (C) する事によって、ノートを短2度移調している。
ただ、今後のチュートリアル全てに言えることだが、読むより自分でパッチ組んで、それぞれのボックスのアウトプットをEVALUATEしたほうが理解が早いとは思う。
ちなみに、OM界隈の達人方がEVALUATEってどう呼んでいるのかわからいのだが、俺の周りのコボラー(※)はみんなEVALUATEの事はEVAL(イーバル)と略して呼んでいる。この方が言いやすいと個人的に思っているので、本稿でもEVALって略していく予定だ。
※ 古(いにしえ)の言語、COBOLを利用している方をこう呼ぶ。ちなみに、古とは言うものの、まだまだ金融機関のシステムではCOBOLを利用している・・・というか金融機関でしかもう使われていない。
CHORDボックスの各インレットについて詳しく知りたくなったら、右クリック>Show Documentationで詳細が見れる。本稿でもコピペではあるが一応載せておこう。
CHORD [CLASS]
SLOTS:
- SELF : object
- LMIDIC : pitches (list of midicents)
- LVEL : velocities (list of values 0-127)
- LOFFSET : offsets (list of values in ms)
- LDUR : durations (list of values in ms)
- LCHAN : MIDI channels (list of values 0-16)
頭に L がついてるのは、Listを意味しているのだろう、多分。
これで、解説は終わりなのだが、公式チュートリアルでは各ボックス毎にもう少し詳しくやっているので、本稿もそれに習っていこう。各アルファベットは、パッチ例の横に記載されれているアルファベットに対応している。
A: ボックスの中心をダブルクリックするとCHORDのスコアエディタが表示される。このエディタ上でノートを編集したりする。
ちなみに編集後のボックスを選択し、"b"を押下することでロックすることができる。ボックスの左上に☓のアイコンが出るはずだ。また、再度押下するとロックが解除される。よく使うので覚えておこう。
B: om+ボックスの右インプットで移調値を入力する。100入力した場合は、半音だけ移調する。ということは。四分音は50、八分音は25に相当するということである。これらの値は先前述のとおりmidicentsで表されている。四分音、八分音を表示するには、エディタのApproxを1/4なり1/8に変更する必要がある。
C: om+は、CHORDボックス内のすべてのノートに移調値を加算している。
D:CHORDボックスを評価(選択して"v"を押下)し、ボックスを開いて結果を確認してみよう。
最後に、文中で紹介したCommonLisp標準の"+"を利用した例を紹介する。これは、Noteボックスのピッチを移調した例。
こっちは、エラーとなった例。両方のインレットが数値型(リスト型は不可)でないと"+"は利用できないのだ。