TIPS-スコアマクロ(スコアテスターを作る)
スコア中身だけを入れ替えて使いたい場合がある。例えば、スコアを変更させて色々試してみる場合もあるし、Rosegardenからスコアをたくさん落とすとそれが後でどんなフレーズか忘れてしまって確認したり。そのような場合はCSDファイルの中身をマクロ化してそのマクロを実行時に指定できるようになるとうれしい。
例えば以下のようなもの
; ;call this file with --smacro:SFILE="file name of score to test" ; ex. ; csound --smacro:SFILE=rosegarden.sco ; <CsoundSynthesizer> <CsOptions> -d -m0 -odac:hw:1 -+rtaudio=alsa -+msg_color=no </CsOptions> <CsInstruments> sr = 44100 kr = 4410 ksmps = 10 nchnls = 2 gitab ftgen 1,0,16384,10,1 instr 1,2,3,4,5,6,7,8,9,10,200,350,500,650,700 kamp=p5/127*9000 kfrq=cpspch(p4) prints "i%d %2.2f %2.2f %2.2f(amp=%5.1f frq=%4.1f)\n", p1,p2,p3,p4,kamp,kfrq a1 oscil kamp,kfrq,1 out a1, a1 endin </CsInstruments> <CsScore> #include "$SFILE" </CsScore> </CsoundSynthesizer>
$SFILEが置き換わってcsoundが動く。さらにシェルスクリプトやalias、functionで定義をしておくと良いかも。