ゲームラボ’99/12月号

補足説明

参考資料

開発環境

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を使って、その場ですぐに演奏してくれる、というページです。そこそこ面白いと思います。将来は機種ごとのデータの自動変換を可能にして、データも登録制にし、着メロをデータベース化できると面白いかもしれませんね。

それでは、このへんで。何か質問等があったら、掲示板かメールでお願いします。

戻る