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

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

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で定義をしておくと良いかも。