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

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

MIDIファイルでスコアを読み込む

  1. -Fコマンドラインオプションでファイルを指定
  2. ファイルはtype0に変換不要
  3. プログラムチェンジがファイルに含まれることがあるので注意。chを変えてしまう。
  4. pgmassign 0,0でプログラムチェンジを無効にすることができる(pgmassign 4,5はプログラム2をinstr5に割り当てることを意味する)
  5. 全部無視するには pgmassign 0, -1でもOK
  6. pgmassign pgmNO, instNOで、pgmNOはMIDIの世界と同じ1-128、0だと全てを意味する。instNOは0か負の数を指定するとpgnNOの指定が全て無効になる。なので、pgmassign 0,0 やpgmassign 0,-1が全てのMIDIファイル中のプログラムチェンジを無効にするhttp://kevindumpscore.com/docs/csound-manual/pgmassign.html
  7. スコアはリアルタイムで入力するので当然不要だが、、ダミーを入れないとcsoundのプログラムが終わってしまう。
オーケストラ例:MIDIを使用する楽器の例(あとで修正するかも)

massign  1,1            ;これでMIDI-ch1の信号をinstr 1へルーティング
instr 1
 icps cpsmidi          ;cpsmidiのopcodeはMIDI入力noteを周波数(音の高さ)に変換
 ichn midichn          ;MIDI-chの番号を変数midichnに代入
 ivel veloc            ;ノートのベロシティーを変数ivelに代入
 print icps, ichn, ivel
 aout oscil 1, icps, 1
 outs (aout*10000) , (aout*10000)
endin
スコアファイル例

f 0 120                  ;これがダミー
f 1 0 4096 10 1          ;これはocsilから参照されている

エンベロップをつける場合、outsの行を以下のように置き換える

  kenv linsegr 0,0.5,10000* (ivel/128), 3, 0
 outs aout*kenv , aout*kenv

これは、opcode linsegr(LINe SEGment including Release)を使って0から(ivel/128)まで大きくなって、3秒のリリースタイムで0の大きさになるようにAmplitudeを変化させているという意味。


元ねたはcsoundMLとhttp://www.geocities.com/mantaraya36/indexmidi.html

csound5 8/27リリースでは

以下のOPCODEが追加、


ftfree ifno, iwhen
ftgentmp ifno, ip2dummy, ilength, igen, iarg1, ...
loop_g indx, idecr, imin, label
loop_g kndx, kdecr, kmin, label
loop_ge indx, idecr, imin, label
loop_ge kndx, kdecr, kmin, label
loop_l indx, iincr, imax, label
loop_l kndx, kincr, kmax, label
loop_le indx, iincr, imax, label
loop_le kndx, kincr, kmax, label
printf Sformat, ktrig, ...
printf_i Sformat, itrig, ...

環境変数の設定は、インストール先をC:\csound5にすれば、

PATH=%PATH%;C:\csound5\bin
OPCODEDIR=C:\csound5\lib
OPCODEDIR64=C:\csound5\lib64
CSOUNDRC=C:\csound5\.csoundrc

MMEを使ったリアルタイムオーディオは-+rtaudio=mmeで指定可能。
csound5\bin\portaudio.dll.0.0.19 をcsound5\pa_asioで置き換えるとPortAudioを利用可能PortAudioはMME,DirectSound,ASIOの順で表示。
デバイスは-i adcN and -o dacNで表示するが、間違った値を設定すると、
指定可能なものをリストする。バッファに関しては、b

csoundの型

T-rate、S-rate、U-rate、i-rate, k-rateとわ、、

S-rateは「文字列」のみ
T-rateは「文字列」かi-rate
U-rateは「文字列」かi-rateかk-rate

  1. i-rateをS-rateに変えるならsprintf()を使う
All the following uses of invalue are equivalent:

Sfoo = "1"
ichn = 1

k1 invalue "1"
k2 invalue {{1}}
k3 invalue Sfoo
k4 invalue 1
k5 invalue ichn

score generating tool

  1. pmask (http://web.tiscali.it/mupuxeddu/csound/) メンテされてなさそう
  2. omde/pmask (http://pythonsound.sourceforge.net)http://pythonsound.sourceforge.net まだベータ
  3. Silence. http://www.csounds.com/gogins/silence/. NOTFOUND
  4. makescore - http://www.xornot.com/