超ミニBASIC for SH7046オルゴール

戻る



 ここではオルゴール関連の文について説明します。オルゴールと関係ない文・関数については標準版と全く同じですので、標準版をダウンロードして同梱されているテキストを参照してください。

標準版より拡張された文・関数

《 MUSINIT文 》

書式:

 音楽関連をすべて初期化します。

《 TEMPO文 》

書式:

 テンポを設定します。テンポの値は1〜300です。

《 TONE文 》

書式:

 音色を設定します。<音色番号>で指定された音色の波形とエンベロープパラメータを設定します。

 <波形>に指定できる値は0〜15です。0〜7はROM波形で変更できません。8〜15はRAM波形で、初期化時にはROM波形がコピーされていますが、内容を変更することは可能です。
 <アタックレート>、<ディケイレート>、<リリースレート>の値の範囲は1〜255で、大きいほど早く変化します。
 <サスティンレート>の値の範囲は0〜255です。大きいほど早く変化します。0だとまったく減衰せず、いわゆる持続音になります。
 <サスティンレベル>の値の範囲は0〜255です。

波形について

 ROM波形の0〜7番には、以下のような波形が割り当てられています。

波形番号

波形

0

正弦波

1

三角波

2

方形波

3

ノコギリ波

4

放物線波

5

ノコギリ波に近づいた三角波

6

デューティ比66%の方形波

7

双曲線波



 波形データは1波形128バイトからなり、波形の瞬時値は−127〜127の1バイトの符号つき数値で表します(−128は使用禁止です)。たとえば方形波なら、前半64バイトを127(16進で7F)、後半64バイトを−127(16進で81)で埋めればよいことになります。
 波形データの書き換えはWAVADR関数でデータの番地を取得し、POKE文で書き換えてください。



《 PLAY文 》

書式:
PLAY <"パート1のMML">[,<"パート2のMML">[,<"パート3のMML"> ・・・

 音楽を演奏します。MMLは8パートまで書くことができます。MMLの詳細についてはこちらのページを参照してください。
 実際にPLAY文がやっていることは、各パートのMMLの開始ポインタを演奏ポインタキューに置いているだけで、実際に演奏するのは割り込み処理です。演奏ポインタキューにはPLAY文4個ぶんまでデータを置くことができます。すでに演奏ポインタキューがいっぱいの場合は空きができるまで待ちます。

《 PLAY関数 》

書式:

 演奏ポインタキューに入っている、処理中のPLAY文の個数を返します。全く音楽を演奏していないとき0が返り、演奏ポインタキューがいっぱいのとき4が返ります。
 <値>は現在のバージョンでは無意味ですが、将来の互換性のために0を指定してください。

《 WAVADR関数 》

書式:

 <波形番号>に対応する波形データが格納されている番地を返します。<波形番号>の範囲は0〜15です。波形番号0〜7は、ROM波形なので書き換えできません。8〜15はRAM波形なので、POKE文で波形を書き換えることができます。

エラーメッセージ

 音楽シーケンサ割り込み処理がPLAY文中のMMLでエラーを検出すると、音楽演奏を停止して

ERROR DETECTED BY MUSIC SEQENSOR :

と表示したあと、さらに以下のようなメッセージを表示します。

SYNTAX ERROR

MMLの文法間違いです。未定義のコマンドを使用しようとした、コマンドの後にあるべきパラメータがない、などです。

ILLEGAL FUNCTION CALL

MML中の、パラメータの値が不適切です。

BAD NOTE LENGTH

音長指定が不適切です。符点を付けた結果の音長が整数でない、直接音長指定で0を指定した、などです。

OCTAVE OUT

オクターブが範囲外です。Oコマンドのパラメータがおかしい場合か、<、>コマンドによってオクターブが0〜9の範囲を出てしまう場合にこのエラーになります。