MIDI用の楽器とスコア用の楽器
midi関連のopcodeが追加されたときに、MIDI入力値の取得に関してMIDI起動される楽器からしか使えないopcodeと、スコアから呼び出されてもよいopcodeの別ができた(のかもしれない)。さらに、MIDI/Score Interoperability opcodesというのがあるのだからそちらを使ったほうがいいのかもしれない。しかし、良く分からん。似たようなのが沢山あって。
MIDI入力値取得用のopcodes対応表
目的 | midi用楽器のみ | midi/score用楽器 |
---|---|---|
ノート番号 | ival notnum | midinoteonkey xkey, xvelocity |
ベロシティー | veloc,ampmidi | midinoteonkey xkey, xvelocity midinoteoncps xcps, xvelocity midinoteonoct xoct, xvelocity midinoteonpch xpch, xvelocity |
音程 | cpsmidi, cpsmidib, octmidi, octmidib, pchmidi, pchmidib | midinoteoncps xcps, xvelocity midinoteonoct xoct, xvelocity midinoteonpch xpch, xvelocity |
モノフォニックアフタータッチ | aftouch | midichannelaftertouch xchannelaftertouch [, ilow] [, ihigh] |
ポリフォニックアフタータッチ | polyaft | midipolyaftertouch xpolyaftertouch, xcontrollervalue [, ilow] [, ihigh] |
コントロールチェンジ | chanctl | midicontrolchange xcontroller, xcontrollervalue [, ilow] [, ihigh] |
ピッチベンド | i/kbend pchbend [imin] [, imax] | midipitchbend xpitchbend [, ilow] [, ihigh] |
プログラムチェンジ | pgmassign ipgm, inst[, ichn] | midiprogramchange xprogram |
特定のコントローラ値 | ival midictrl inum [, imin] [, imaxもしかしてこれってどちらでも使える?] | |
ノートオフ | midinoteoff xkey, xvelocity |
pitchbendの影響は互換バージョンではどうなのだろうか??
そのほかのmidi用instrだけで使えるmidic7/14/21, massign
massignはMIDIチャネルと、csoundのinstrを結びつけるコマンドである(もしくは、2重に発音させないために「対応させない」ということを書く)。これらのコマンドはMIDI用instr(MIDIからのみ叩かれる楽器)のみ利用できるらしい。
midic7/14/21でMIDI入力された情報を取得する。midicを使う楽器をスコアから動作させると動作不定/クラッシュだそうです。
MIDI用、スコア用どちらの楽器でも使える初期化
initc7/14/21 ichan, ictlno, ivalueで各コントロールの値を初期化に利用する。通常instr 0に保存されていてcsoundが初期化されたときに自動設定されるらしい。また、他にinstr定義の外に書いてある例もあった。
どちらからも呼び出せるopcodes ctrl7/14/21
ctrl7/14/21はスコアから呼び出される楽器(score-oriented, score-activated)内部にあっても共存できる
どちらからも呼び出せるopcodes slider(8||16|32|64)
(8|16|32|64)つのMIDIコントロール用のバンクを作成する。
Creates a bank of 8 different MIDI control message numbers.
末尾にfが付くとfilterの意味
どちらからも呼び出せるopcodes slider(8|16|32|64)table
Stores a bank of 8 different MIDI control messages to a table.
(8|16|32|64)つのMIDIコントロール用のバンクを作成しテーブルに保存する。
多分どちらからも呼べる midiin
kstatus, kchan, kdata1, kdata2 midiinの形で、イベントを取得できる。小さい数字の楽器名を用いると、近いタイミングでMIDIイベントがきたときに複数の楽器が生成されてそのときにこのopcodeは動作不定になるらしい。statusは以下のものだけ取得できる。