GBDK GBDKがダウンロードできます。必須ですね。
GBDK for X68k 需要は少ないとは思いますが、以前私が移植したものです。ちょっと古め。
Cygwin あると便利。フリーにて最強のWindows開発環境群。
header.inc ROMのヘッダ情報等が記述されたヘッダファイル
sample.s サンプル・メイン。
header.inc 上のサンプルと同じものです。
pardio.s メイン部分。
音の出し方がわかったところで、次は曲の演奏に必要な手順を考えて見ます。が、基本的には「音を出す」「一定時間待つ」の繰り返しだけです。これを複数チャンネル同時に行うわけです。具体的には、サウンドのルーチンを、タイマーなどを使い一定時間ごとに呼び出し、「カウンターを減らす」「カウンターが正なら戻る」「カウンターが0なら次に出す音を設定し、カウンターに新たな待ち時間をセットする」といったことをチャンネルの数だけ繰り返します。ここではサンプルとして私の使用しているPHS、パルディオ331S-IIで使用できる着メロデータを演奏してみることにします。この機種で使用する着メロのフォーマットをまとめてみました。ソースと合わせてみて下さい。ここで注意しなくてはならないのは分解能です。表を見ればわかるように、16分、12分が表現できればすべての音調が表現できます。よって、カウンターは全音符を48カウントに設定することで、すべての音調を整数で表現できることに注意してください。ソースpardio.sではsample.s同様にheader.incを読み込んでいます。手抜きで共用していますので気になる人は"sample"となっている箇所を"pardio"とでも書き換えてください。
文字の羅列で表現します。最初の1文字がテンポを表し、残りは1文字ごとに音程、長さが交互に続きます。
文字 |
テンポ |
音程 |
音長(カウント) |
0 |
60 |
休符 |
全(48) |
1 |
72 |
ド |
16分(3) |
2 |
84 |
レ |
8分(6) |
3 |
96 |
ミ |
付点8分(9) |
4 |
108 |
ファ |
4分(12) |
5 |
114 |
ソ |
付点4分(18) |
6 |
126 |
ラ |
2分(24) |
7 |
138 |
シ |
付点2分(36) |
8 |
150 |
継続(タイ) |
8分3連(12分)(4) |
9 |
168 |
- |
4分3連(6分)(8) |
# |
- |
(*1) |
-(-) |
* |
- |
(*2) |
-(-) |
(*1) : 音程のあとに「#」を付けることで半音あげる事ができます。
(*2) : 音程(あるいは「#」)のあとに「*」をつけることでオクターブが指定できます。「*」1つで1オクターブ高い、「*」2つで1オクターブ低い音で演奏されます(ただし「*」が2つ付けられるのは「ソ」〜「シ」の音だけです)。
着メロでGo!!というページを作りました。着メロデータを入力すると、JavaScriptを使って、その場ですぐに演奏してくれる、というページです。そこそこ面白いと思います。将来は機種ごとのデータの自動変換を可能にして、データも登録制にし、着メロをデータベース化できると面白いかもしれませんね。
それでは、このへんで。何か質問等があったら、掲示板かメールでお願いします。