JUNO-G の音色定義ファイルを作る

初版 2019/09/02 18:19

改訂 2019/09/03 21:35

JUNO-Gを演奏させるプログラムを作りやすくするため、音色定義ファイルを作ってみる。


完成したデータ(JUNO-G.h)がこれです。全部で768行あります。


サクラの音色指定(プログラムチェンジ)は次のように書きます。


@(PC#,MSb,LSB)


この( )の中に書いてある配列に名前を付けておけば、プログラムも書きやすくなりますし、音色のイメージもわかりやすくなります。


まずはプリセット音色の定義がか書いてあるマニュアルのページから、コピペしてグループ毎のテキストデータを作ります。グループAだと、こんな感じのデータになります。


awkで整形してCSVデータ(pr-set_1.csv)を作ります。


[pr_convert.awk]


BEGIN{

   OFS=","

}

{

   if (NF==7){ct=$(NF-1) "." $NF; nm=$2 $3 $4;}

   if (NF==6){ct=$NF; nm=$2 " " $3 " " $4;}

   if (NF==5){ct=$NF; nm=$2 " " $3;}

   if (NF==4){ct=$NF; nm=$2;}

   sn=nm

   gsub("& ","",sn)

   gsub(/['!?().\/]/,"",sn)

   gsub(/[ +&-]/,"_",sn)

   if (substr(sn,1,1)<="9"){sn="_" sn}

   print st,NR,nm,sn,ct

}


$1 グループ

$2 PC#

$3 音色名

$4 サクラ用の音色変数名

$5 カテゴリー


awk -f pr_convert.awk -v st="A" PR-A.txt > pr-set.csv

awk -f pr_convert.awk -v st="B" PR-B.txt >> pr-set.csv

awk -f pr_convert.awk -v st="C" PR-C.txt >> pr-set.csv

awk -f pr_convert.awk -v st="D" PR-D.txt >> pr-set.csv

awk -f pr_convert.awk -v st="E" PR-E.txt >> pr-set.csv

awk -f pr_convert.awk -v st="F" PR-F.txt >> pr-set.csv


連番を振っておきます。


awk '{print NR "," $0}' pr-set.csv > pr-set_1.csv



このCSVデータから音色の定義ファイルを作ります。


[JUNO-G_PR.awk]


{

   if ($2=="A"){lsb=64}

   if ($2=="B"){lsb=65}

   if ($2=="C"){lsb=66}

   if ($2=="D"){lsb=67}

   if ($2=="E"){lsb=68}

   if ($2=="F"){lsb=69}

    print "Array " $5 "=(" $3 ",87," lsb ")   // " $4

}


awk -f JUO-G_pr.awk pt-set_1.csv > JUNO-G.h



サクラで内容をチェックしてみます。


音色名の重複がかなりあるので、重複しているほうの名前の前に"_"を付けて、名前が一意になるようにします。


ということで、サクラではこんな感じのプログラムが書けるようになります。



Include(JUNO-G.h)


System.RandomSeed=0001

@(Warm_Strings)

Tempo=30

v.Random=24 t.Random=240 q(Random(90,160))

[(16*16) Time(Random(16)+1:Random(4)+1:0) n(Random(12,96))]


Int TM=Time/TimeBase*(600000/Tempo)/10000 Print("演奏は "+TM/60+" 分 "+ TM%60+" 秒)




CSVデータを表計算ソフトに読み込めば、簡易な音色データベースになります。音色を探したり、音色名をコピペしたりと、便利に使えます。


テキスト処理ならawkですよ。awkは大好きな言語です。



#プログラミング #JUNO-G #サクラ #awk

Author
File

mugen

様々なプログラミング言語を使って、音楽を自動作曲しています。

使用している言語

・awk
・COBOL
・JavaScript
・R
・サクラ
・ドリトル
・なでしこ

https://yamazawa.bandcamp.com/

Default