いらないモノ、ひつようなモノ

書籍、音楽、そして若干のテクノロジー

MIDI用の楽器とスコア用の楽器

←csoundメモ 目次に戻る

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は以下のものだけ取得できる。

  • 128 (note off)
  • 144 (note on)
  • 160 (polyphonic aftertouch)
  • 176 (control change)
  • 192 (program change)
  • 208 (channel aftertouch)
  • 224 (pitch bend
  • 0 if no MIDI message are pending in the MIDI IN buffer