利用システム
mylib.ini
Lly_File = textfile! ("c:\dtl\temp.ly") 作る.
version = ["2.12.3"].
composer = ["A.Yamazawa"].
copyright = [""].
tagline = [""].
// LilyPondの音名からMIDIノート番号を作る
NoteNumber=[|chr|
mns=0. pls=0. onk=0.
scl="c,d,e,f,g,a,b,is,es" ! "," 分割.
bis="+0,+2,+4,+5,+7,+9,+11,+1,-1" ! "," 分割.
k=1.[
[chr! (scl!(k)読む)含む?]! なら [onk=onk+(bis!(k)読む)]実行. k=k+1.
] ! (scl! 要素数?) 繰り返す.
k=1.[
[(chr! (k)(1) 部分)! "," 含む?]! なら [mns=mns+1]実行.
[(chr! (k)(1) 部分)! "'" 含む?]! なら [pls=pls+1]実行.
k=k+1.
] !(chr! 長さ?)繰り返す.
48 + onk + (pls*12) - (mns*12)
].
// MIDIノート番号からLilyPondの音名を作る
NoteName=[|nn|
scale="c:cis:d:dis:e:f:fis:g:gis:a:ais:b" ! ":" 分割.
octave=",,,,:,,,:,,:,::':'':''':'''':''''':'''''':''''''']"! ":" 分割.
(scale ! (nn%12+1) 読む) + (octave ! (floor(nn/12)+1) 読む).
].
// 指定範囲の乱数を作る
RandomNumber=[|r_min r_max|
random(r_max - r_min) + r_min.
].
// カンマ区切りのデータからランダムに選ぶ
RandomSelect=[|slc|
ary=slc ! "," 分割. ary! (random(ary! 要素数?)) 読む.
].
// 曲生成 Method 1
compose1=[|n_bar t_base n_low n_high n_length n_ary1 n_ary2|
w_base=t_base! "/" 分割.
m=n_bar * (w_base! (1) 読む) * (4/(w_base! (2) 読む)).
i=1.tt=0.tmt=0.
[tt < m]!の間 [
note_n=(!(!(!(n_low)NoteNumber)(!(n_high)NoteNumber)RandomNumber) NoteName).
tm= (!(n_length) RandomSelect).
to=tt. tt=tt+(1/tm)*4.
[tt > m]! なら [tm=1/(m-to)] 実行.
note_l=tm. tmt=tmt+(1/tm)*4.
// note=note_n + note_l.
n_ary1! (i)(note_n) 挿入. n_ary2! (i)(note_l) 挿入. i=i+1.
] 実行.
].