OpenMusic公式チュートリアル解説:2 - 音程間隔の反転(転置)(I)

■今回のテーマ

算術演算子を使用してノートを反転させる。

■使用するファンクション

NOTE、om+、om-、x-append.

■解説

 このパッチは NOTEボックス (A) - (B) 間の転回形を返す。つまり、C3-B3 (長7度) を入力値としているので、C#2-C3を返している。

画像1

X-APPEND [GENERIC-FUNCTION]
対象要素の前後に要素を追加する。

Ex. (x-append '(1 2 3) 4 '(5 6 7)) => (1 2 3 4 5 6 7)

A, B:CHORDボックスではなく、NOTEボックスであることに注意。また、単音なので、出力がリスト化されていない状態のアトム(カッコが付いていない最小限の要素)であることにも注目したい。 

C: 最初のNOTEボックス (A) と第二のNOTEボックス (B)の差分を、"om-" で計算する。

D: 最初のNOTEボックスと(C)の演算結果をom+で加算する。これにより、トップノートの転置後のピッチを算出している。

E: x-append で各ピッチの値をリストとしてまとめ、CHORD ボックスに出力している。CommonLispの "append" と違い、リストだろうがアトムだろうがなんでも取りまとめてくれる。

F: CHORD ボックスを評価し (F) 、結果を確認してみよう。反転された間隔をが返却されるはずだ。

 で、CommonLispの"append"じゃ駄目なのか?という事になるのだが、結論から言うと駄目。"append"は、リスト同士の結合で利用する為の物(正確にはちょっと違うが)。引数が両方アトムだとエラーとなってしまう。

画像2

 ↓こちらは、お互いの引数を調整してList化したものなのでエラーにならない。

画像3


いいなと思ったら応援しよう!