続ギターコード関数

取りあえず、なんとか初期バージョンが完成した。
もうプログラムなんてここ1年以上もやってないので、すっかり思考能力が落ちており、うっかりミスに長時間ハマることが多かった。
で、その仕様と言うか、使い方はこんな感じ。

	#APaturn = {1356^246 r123 456^}
	#BPaturn = {orxo rxor xoor orxx  orxo rxor xoor orxr}
	v.C(!16,110,80,100,80)
	[8 GC(0) ]
	[8 GC(1) ]

#APaturnと言う文字列マクロには、アルペジオのパターンを記載する。
数字は弦番号で、低い音から順に並んでいる。
「^」記号は継続音指定で、まぁタイっぽい感じではあるが、繋げるのではなく伸ばすだけだ。「r」は休符。
#BPaturnは、バッキングパターンだ。
「o」がストローク。「x」はミュートとなり現時点ではゲートタイムが4分の1になる。
「r」が休符は同じで、例には無いが「^」記号にも対応している。
また、拍の偶数奇数に合わせて、自動的にダウンストローク、アップストロークのタイミングずらしを行う。これも現時点では固定値だ。
GC()」と言う関数は、ギターコードでCのコードと言う指定だ。
基本的に、ギターのG+コードネームと言う関数で指定する。
関数に渡す値が「0」であればバッキング、「1」であればアルペジオと言う判定になっている。
ちなみに、パターン用文字列マクロに、無意味な文字を記載しても無視する用になっている。(これが一番苦労した部分だ)

さて、ここで疑問が当然起こると思うが、実は音符の長さやベロシティ値を渡していない。
実はこれ、内部でl値を取得して、それで発音を行っている。ゲートタイム等も持続音指定の時のみ計算するようになっている。(最初はそれすら休符を置くだけだった)
良くある関数のパターンとして「関数(!1,〜)」と言うものだが、正直、おれその方式面倒と言うか嫌いだ(笑)
今回のギターコード関数も、実はRyhthmトラックみたいに、簡潔なギタートラック表記法が欲しいと思ったから作成したのだ。
とにかく自由に、よりも、簡潔に、が目的だった。(本当に簡潔な仕様かどうかはさておき)
参考にしたのはタブ譜であり、ギターを演奏する人には理解しやすいのではないか、と勝手に思っている。
今後のToDoとしては、バッキングとアルペジオの指定表記の融合(本来切り分けたくは無かったのだが)と、後はパワーコードなどの追加だろうか。
後は、これでサンプル曲を書いて、一般に公開して、フィードバックを貰うと言うのも考えておくとしよう。