ソースファイルの書き方
ソースファイルは大まかに、音色やエンベロープ等の定義部分と各チャンネル別に演奏させるためのシーケンスデータ部に分かれます。
定義とシーケンスデータは互い違いに記述してもOKですが、シーケンスデータで使用する前に該当する定義を済ませておく必要があります。
定義はxx=[…]もしくは@xx=[…]と言う形になっていて、シーケンスデータはチャンネル名=と言う書き出しから始まります。
一部の定義をのぞき、複数行に渡って記述できます。定義の=[までとシーケンスデータのチャンネル名=はセットなので行を跨ぐことはできません。またチャンネル名は行頭に書く必要があります。
記述例:(定義)
@v101=[
1,1
2,1
]
記述例:(シーケンス)
p2=cdefg
abcde
p1=abcde
p3=cdefgabcde
※p1,p2,p3とも同時にcdefgabcdeと演奏されます
チャンネル名
- p1-p3 …… PSGのチャンネル1から3
- s1-s5 …… SCC(マスター)のチャンネル1から5
- s6-s10 …… SCC(スレーブ)のチャンネル1から5相当
- f1-f9 …… OPLLのチャンネル1から9
- fr …… OPLLのリズムチャンネル
- y1-y9 …… Y8950のチャンネル1から9
- ad …… ADPCMチャンネル
frを記述するとリズムモードとなり、f7-f9は無効になります。
Y8950のリズムモードは対応していません。(レジスタアクセスでリズムモードを使用することは可能です)
SCCカートリッジを1本挿した時は、それが必ずマスターとなります。なのでSCCチャンネルを5チャンネル以下しか使わない曲に、むやみにs6-s10を使用すると無意味にSCCカートリッジ2本必要となり、実機で再生時のハードルが上がってしまいます。
文字コード
ソースファイルの文字コードはshift-JISかUTF-8が使えます。コンパイラの設定でソースファイルの文字コードに合わせて下さい。
基本的に大文字、小文字は区別されず、コンパイラ内部で全て小文字に変換され処理されます。ただしダブルクォーテーションで囲まれた文字列は大文字小文字を区別し、そのまま扱われます。
定義名
定義名は数字かダブルクォーテーションで囲んだ文字列が使えます。
数字はコンパイラ内部で文字列に変更されますので、@v100と@v"100"は同じ定義を指すことになります。
定義の使用
定義はシーケンスデータで使用することができ、使用する定義によっては q1、q2時間を指定できます。詳しくは発音時間についての項を参照して下さい。