オトダマリ

音・語学関係その他。

Max for Live 再入門 #9 Velocity Sequnencer Part I, #10 Velocity Sequnencer Part II

かなりグダグダな感じで書いてますが許して。

#9 Velocity Sequnencer Part I

目標

MIDIノートが現在何個演奏されているかを取得するためのパッチングを行う。
 

メモ

[midiparse]:生のMIDIのバイト情報をスタンダードメッセージの形式に分割する(分割された情報はリストとしていくつかのアウトレットから出力される)。

 
MIDIノートが何個鳴らされているかを把握したい。
そのためにborax, unjoinを使う。
 
[borax]:note value(ピッチ?), velocityを取得する。
[unjoin]:midiparseのアウトレットから得た情報を整理した形でアウトプットする。
 
Notesが何かを把握したい。
 
[trigger]:"t"で略記可能。ここでは引数l(小文字のL。リストのこと)を二つ取る。
 
[bag]:midi notesのforceを管理する。0以上のベロシティに反応する。ベロシティが0だと情報を捨てる。bangを受け取ると、現在のノートの状況をアウトする。
zl:リスト処理のために色んな使い方ができるオブジェクト。
 
[zl group N(integer)]
group, output a list after N items are received.
N個目のアイテムを受け取った後にリストをアウトプットする。
 

#10 Velocity Sequencer Part II

目標

GUIを伴ったベロシティシーケンサー部分を作る
[phasor~ @frequency 1 0 0 bars .beats .units @lock 1]
ノコギリ波のオシレーター
@で始まるのはAttribute(属性)の設定
@freauency:周波数の設定。ここでは結構長い書き方をしている。1 0 0がそれぞれどんな値なのかを後ろのbars .beats .unitsで設定している……はず。
@lock:周波数を固定(ロック)するか否か。
 
[snapshot~ 5]
phasor~等のオーディオシグナルをfloat メッセージに変換。引数は切り取る間隔をミリ秒で指定するためのもの(つまりこれは5msごとにメッセージを受信・送信する)。
 
[scale 0. 1. 1 17]
受け取った数値の範囲を違う範囲へと変換する。ここでは0~1を1〜17へと変換。
 
[change]
このオブジェクトに保存された数値と異なる数値を受け取った場合のみ数値を出力し、その数値を新たに保存する。
 
[multislider]
マルチスライダーを表示できる。スライダーとは言っているが、色んな表示のさせ方があるので、点描のグラフなんかにも使えるみたい。fetchという(多分)整数の値を出力する(この出力は普通にnumber boxで表示可能)。
 
m[fetch $1]
[multislider]が扱うデータタイプに合わせてnumber boxの出力を変換するためのメッセージオブジェクト。
 
メッセージボックスにおける$(ドル・マーク)の使い方のメモ
メッセージボックスが受け取った数値が代入される引数(だと思う)。
m[fetch $1]のインレットにただの数値……例えば「10」が入力された場合、m[fetch $1]から出力される情報は「fetch 10」となる。