MuSICA 講座


『MSXマガジン永久保存版』(2002年12月発売)に MuSICA が収録されたことを 記念して、かつて別のページで掲載していた「MuSICA 講座」をここに復活させました。 再掲にあたって、一部修正したり増補したりしています。

ここで想定している MuSICA は、『MSXディスク通信・創刊号』(1990年10月)に収録され ていたもの(たぶん ver1.0)です。『MSXマガジン永久保存版』に収録されている のは ver1.02 ですが、ここに書いてあることはほぼ適用できます。


目次

  1. 横80文字モード
  2. MuSICA の起動を早くする
  3. PSG ドラムに凝ってみる (別ファイルです)
  4. ファイル間のカット&ペースト
  5. テンポずれ対策
  6. TIPS

MSXのページに戻る
ホームページに戻る

指摘・要望などがありましたら、

ahiroe@wa2.so-net.ne.jp
までメールを下さい。

横80文字モード

これは一応隠し機能らしいので、ここに載せておきます。

エディットモード(起動したときのモード)のときに ESC キーを押すと、コ マンドモードになります。ここで“_”(アンダーバー)を入力すると横 80 文字モードになりま す。


目次に戻る


MuSICA の起動を少し早くする

以下のような改造をすることで、MuSICA の起動が少しだけ早くなります。

(注)変更する前にバックアップを必ず取っておいて下さい。

  1. “MUSICED.BIN”を、4000H〜694FH と CE00H〜DB3FH とに分割する。
     具体的には、
	screen7:bload"MUSICED.BIN",s:bsave"ED1.BIN",&h4000,&h694f,s:
	bsave"ED2.BIN",&hce00,&hdb3f,s
    のようにする。

  2. “MUSICA.BAS”を、以下のように変更。

	10行目の BLOAD"MUSICED.BIN",s を、
	BLOAD"ED1.BIN",S:BLOAD"ED2.BIN",S に変更。

	20行目にある“FOR I=0 TO &h32”の &h32 を &h26 に変更。

	110行目の“,21,00,90,11,00,90,01,B8”(後ろの8個分)を削除。

	同様に、120行目の“10,CD,59,00,”(始めの4個分)を削除。
私のMSX(サンヨーの WAVY70FD)で、run"MUSICA.BAS" から MuSICA のエディット画面 がでてくるまでの時間(リターンキーを押してから“FM1 = …”が出てくる まで)をストップウオッチで計ってみたところ、
変更前約7.5秒
変更後約5.5秒
と、約2秒短縮できました。

(解説)この改造が何をやっているかというと、起動時に音色データを読み込まない ようにしているのです。 だから、起動直後は音色データがグチャグチャですが、音色データ(例え ば“VOICE.VCD”)をロードすれば直ります。

(2003/1/1 再掲にあたっての補足)
『MSXマガジン永久保存版』の ver1.02 でも、上記の改造が有効であることを 確認しました。実機なら、上記のように起動が早くなります。

一方、エミュレーターである MSXPLAYer では、本物のフロッピーディスクを使用するか 仮想ディスクを使用するかで、効果が異なります。 以下は、VAIO-C1R(MMX 266MHz)で計測した結果です。

[本物のフロッピーディスクを使用]
変更前約12.6秒
変更後約11.5秒

[仮想ディスクを使用]
変更前約11.5秒
変更後約11.0秒

つまり、MuSICA をフロッピーディスクから起動する場合は上記の改造の 効果は一応ありますが、仮想ディスクから起動する場合は効果があまりあ りません。

目次に戻る


ファイル間のカット&ペースト

MuSICA では、コピーやカットなどをするとその部分がバッファーに残りま す。そして、CTRL+P でそれをペーストすることができます。

このバッファーの内容は、別のファイルをロードしても残っています。だから 以下のようにすることで、2つのファイルの間でカット&ペーストをすること ができます。

  1. コピーやカットなどをする。(バッファーに入る。)
  2. 別のファイルをロードする。
  3. CTRL+P を押すと、バッファーの内容がペーストされる。
私は、ドラム用のMMLをこの方法でコピーしています。

目次に戻る


テンポずれ対策

MuSICA では、1/60 秒の整数倍にならない長さの音を出そうとすると、ずれが 生じる可能性があります。

例として、t180 のときを考えてみます。このときの 4分音符の実際の長さは (1/60 秒を 1 とすると)20 になります(*)。 8分音符は 10、16分音符は 5 です。

(*) あるテンポのときの 4分音符の長さは、(3600/テンポ)で計算します。 ここでの「長さ」は、1/60 秒を 1 としたときにそれの何倍 になっているかを表したものです。なお、主なテンポと 4分音符の長さとの関 係を表にすると、以下のようになります。

テンポ90120128138144150163180200225240
長さ 40 30 28 26 25 24 22 20 18 16 15
(1/60秒を長さ 1 とする)

t180 の場合、16分音符までは長さが整数で表わせるので、ずれは生じません。 では、これ以外の音符である 32分音符や 3連符はどうでしょうか? 単純に計算すると、長さは整数にはなりませんが……。

ここで、以下のような MML を書き、長さを調べてみました (“l12”は 4分音符の 1/3、“l24”は 8分音符の 1/3 の長さを表わしています)。

t180 l32 cccc l64 cccccccc l12 ccc l24 cccccc
この MML から .BGM ファイルを生成し、各音符の長さを調べてみると、以下の通りになりました。
MML l32c cccl64c cccccccl12c ccl24c ccccc
計算上の長さ 5/2--- 5/4------- 20/3-- 10/3-----
実際の長さ 2 323 1 1121112 6 76 4 33433
(“-”は「同左」を表わす。)

「実際の長さ」を見ると、長さの切り上げや切り捨てを適宜行なうことで、「計算上の長さ」とのずれを少なくする ようにしていることが分かります。しかしそれでも、“l12 ccc”の部分は計算上の長さとの ずれが生じています。計算上は 20/3*3=20 ですが、実際の長さは 6+7+6=19 しかありません。 つまり、“c4”と“c12c12c12”とを比較すると、後者の方が 1/60 秒だけ短く演奏されます。 ということは、3連符の多いパートと少ないパートとを同時に演奏させると、だんだんずれてくる 可能性があるということです。

ずれを解消する方法として、次の2通りがあります。

最短音符合わせ
長い音符を短い音符の連続で表す方法。たとえば最短の音符が16分音 符のとき、c1 と書く代わりに (c16c16c16)c16 と書きます。

t225
テンポを t225(t255ではない)に固定してしまう方法。こうすると 64分音符の長さがちょうど 1/60 秒になるので、64分音符の数を調節することでい ろんなテンポの曲を表現できます。

例として、t180 の曲を t225 で表す方法を説明します。まず t180 のときの各音符 の実際の長さを (*) の式で計算します。あとはその数だけ 64分音符を並べれば いいわけです。3連符などは、最も近い整数に分割します。たとえば 4分音符 (長さ20)を 3分割するときは、7+7+6 のようにします。同様に、16分音符 (長さ5)の 2分割(つまり 32分音符)なら、3+2 のようにします。以上のこと を MML で書くと次のようになります。

	 4分音符 = t225 (c4)c16
	 8分音符 = t225 (c8)c32
	12分音符 = t225 (c16.)c64 (c16.)c64 c16. (3個分)
	16分音符 = t225 (c16)c64
	32分音符 = t225 c32. c32  (2個分)
 
この方法の欠点は、一度このように MML を書いてしまうとテンポを変えるのが 非常に困難に(面倒に)なってしまうということです。

(補足) かつて別の URL でこの「MuSICA 講座」を掲載したときは、 「32 分音符は2.5のはずですが、切り捨てられて実際には2になります」 と書きましたが、それは間違いです。正しくは上記のように、2.5 が 2 に切り捨てらたり 3 に切り上げられたりします。


TIPS

MuSICA で MSD ファイルをロードした場合、ファイルの末尾に End-of-file (エディタによっては“^Z”や反転の“Z”で表示される)が入っていないと、 F5 で演奏を開始しようとしたときに“Too many labels”というエラーが出ます。

そのような場合、エディタでファイル末尾に End-of-file を付加してやれば 大丈夫です。手っ取り早い方法としては、他の正常な MSD ファイルもエディタ (End-of-file をきちんと表示してくれるもの。Mule は OK。メモ帳は駄目) で開き、最後の一行(“^Z”や反転の“Z”が表示されているはず)をコピー& ペーストすれば OK です。

MuSICA 付属のエディタを使用している限りはこの問題は発生しませんが、 一度他のエディタで MSD ファイルを書き換えてしまう(例えば Windows 上で MSD ファイルを書き換えてしまうなど)と、この問題に悩まされることがあります。 要注意です。

なお、そのような End-of-file なしの MSD ファイルを MuSICA 付属のエディタで 編集しようとすると、カーソルがファイルの末尾以降に移動できてしまったり、 MSX が暴走してしまったり、リセットがかかってしまったりします。 つまり、“Too many labels”が出たファイルを MuSICA 付属のエディタで修正しよ うとすると、泥沼に陥る可能性があります。

似た現象として、MSD ファイルを LHA で圧縮した後、pmext.com で復元した場合も、 その MSD ファイルを MuSICA で読み込ませたとき(正しくは F5 を押したとき)に “Too many labels”というエラーが出ます。こちらの原因は、pmext.com で復元さ れた MSD ファイルには末尾に余計なコントロールコードが付加されているからのよ うです。これは pmext.com 特有の現象であり、他の解凍ツールを使用した場合には 発生しません。端的に言えば、LHA 圧縮された MSD ファイルを復元するのは、MSX 上ではなくて他の環境(Windows など)で行なった方が無難ということです。

なお、そのような余計なコントロールコードが付加されてしまったファイルに対し てそれを除去するプログラム(MSX用)を作りました。 こちらにあります。


目次に戻る
MSX のページに戻る
ホームページに戻る