鼻歌

Home PC-6001mkII Program etc

動作モード MODE:5(N60m-BASIC) PAGES:1〜4
関連リンク Making「鼻歌」 ドラスピ - 鼻歌

画像 更新日:2016/06/26
作成日:2016/06/26

 4/1にエイプリルフールで出したネタを具現化しました。

 MMLもどきの構文を解釈し、リアルタイムで音声データを生成しつつ鼻歌を発声します。

操作方法
 ディスクイメージをセットし、「run "main"」を実行して下さい。

 ディスクからマシン語部分を読み込んだ後、実機かエミュレータのどちらで実行するかの選択肢があるので、1または2を選択して下さい。

 「TALK@ふ゛ん か゛しようかのうになりました。」と表示された時点で、TALK@命令およびUSR()による鼻歌音声の音階発声ができるようになります。
  1. USR(x)
     USR(x)のx部分によって、役割が変わります。
    USR(x)のx値説明
    0TALK@準備+パラメタ初期化(mkII実機用)
    1TALK@準備+パラメタ初期化(エミュ用)
    256〜指定値のアドレス以降に書かれているHML(後述)
    を解釈して発声

  2.  TALK@"〜"
     TALK@"〜"を実行すると、「〜」部分のHML(後述)を解釈して発声します。

HML構文
 TALK@文やUSR()で使用する文字列は、PLAY文であるMMLの構文を模したHML (Hanauta Macro Language)を使用します。

 HMLでは、以下をサポートしています。構文の「x」部分には、数値を設定します(省略可能)。アルファベットは大小文字どちらでも可能です。
パラメタ説明数値範囲省略値初期値
Txテンポ(BPM)を指定32〜255120120
Vx音量を指定0〜1588
Lx音の長さを指定音符と対応1,2,3,4,6,8,12,
16,24,32,48,96
44
Ax〜Gx
A+x〜G+x
A-x〜G-x
指定した音符長で音階を発声
+で半音上げ、-で半音下げ
1,2,3,4,6,8,12,
16,24,32,48,96
Lの値Lの値
Oxオクターブを指定2〜644
Rx指定した音符長で休符を発声1,2,3,4,6,8,12,
16,24,32,48,96
Lの値Lの値
Nx指定した音の高さ(音声合成ROMに
出力するPitch値に対応)で発声
0〜127直前の
Pitch値
37
(O4C相当)
&
&x
次の発声音と音をつなげる
数字が続く場合は指定した音符長で
同音を続ける
1,2,3,4,6,8,12,
16,24,32,48,96
Lの値Lの値

 なお、これ以外の文字(エラー文字)を使用した場合は、エラー文字の直前まで発声して終了します。

 範囲外の数字を指定した場合はエラーとはなりません。ただし、範囲内の数値のいずれかに置き換えて実行するため、思った通りの発声とならなくなります。範囲内の数値のみ指定するようにして下さい。

 各パラメタの指定値は、A=USR(0)またはA=USR(1)で初期化するまで、最後に設定した値を引き継ぎます。

動画

PC-6001mkIIが鼻歌った


ダウンロード

以下、余談
  • 4/1にエイプリルフールの動画を出しましたが、この時はHML構文のベース部分のみできている状態でした。なので、あの動画もTALK@部分以外は嘘はついていません。

  • 仕組み上、音声の基礎データを差し替える事で、ハミングや楽器風の使い方ができるようになるはずです。その基礎データを作るのがなかなか難しいですが...。


PC-6001mkII