#29 Article 69 Posted at 1992/02/02 19:05:22 by 32技研 (MAP1154) [MDT]

Subject: 「MDT」データフォーマットについて

「MDT」というキーワードにつられて出てきました<^_^;> このボードでこの
手の話が出てから実に半年以上も経っていますが、よくのぞいているわけでもない
のでお許しを。

 それにしても、BEEP演奏のフォーマットである「MDT」フォーマットで書
かれたデータのボードがあるというのは確かにすごいですね。今となってはこの手
のデータは「BPLAY」発祥の地、PC-VANの「98クラブ」くらいにしか
ないでしょう。少し前まではTeleStarの「SunRise PCクラブ」
でも見かけましたが、今はまったく見かけません。

 ではここで、「MDT」フォーマットがここに登場したいきさつなどを...

 このフォーマットがここに登場したころ、ここでは音楽データの「共通フォーマ
ット」を制定しようという動きがあり、高度な機能を持たせたフォーマットを提唱
する音楽屋陣営と、FM音源すらも満足に調達できない(大げさか??)機種があ
るからダメだ! とそれに反対するマイナーマシン派陣営の間でもめにもめたこと
はご存じの方も多いと思います。確か旧システムでまだコンピュータミュージック
ボードのなかったころだと思いましたが、わたしはその頃FM音源ボードすらなく、
日立B16とその互換機に肩入れしていた(わたしは一応アンチ98派です)関係
上マイナーマシン派陣営の仲間入りをし、高機能ミュージックデータフォーマット
の立案に反対してきました。その背景には、当時わたしがB16用BEEP演奏プ
ログラム“MDT.COM”のクローン作成を計画していたこともあって、

「高機能なデータフォーマットができてしまってからでは日の目を見なくなる!」

 というわけで持ってきたのが本家“MDT.COM”とそれに使用するフォーマ
ットでした。結局「共通フォーマット論争」はその後お流れとなり、「MDT」フ
ォーマットだけがここへ根づいた、というわけです。

 当初、ここでこのフォーマットのデータを演奏できる機種は日立のB16系だけ
でしたので、演奏を楽しめたのはわたしと、プロの音楽屋で、当時珍しくB16の
ユーザであった、現在は某音楽専門ネットのシスオペであるレッドバロン師匠だけ
でした。(ですから、当時このフォーマットをB16ユーザ専用のものにしようと
いう話が出たほどです)しかしその後、出来損ないながらPC98/286用とJ
-3100用の演奏ソフトをリリースすることができたことと、本家“MDT.C
OM”がPanacom Mシリーズ・FM Rシリーズをサポートしていたこと
により、16ビット機ではかなりの機種で演奏できるようになりました。データに
よってはBASICのPLAY命令を使って演奏できたものもあったようですので、
それを合わせるとかなりの機種で演奏ができることになるのではないbニ思います。
ちなみに、本家でもPC-9801用はリリースされていましたが、わたし自身お
目にかかったことはありませんでした。そうそう、最近ではX68Kにも対応した
ようで...

 このフォーマットが機能の割に今まで生き長らえてきたのも、このように多数の
機種へ対応できたからではないかと思います。

 ところで、ここで「Mbs」といわれているデータフォーマットですが、実は演
奏プログラムによって若干の違いがあります。

 1. BPLAY

    これは98用常駐型演奏プログラムですが、もともと98における拡張子
   “.MDT”のデータファイルは、これで演奏するためのデータです。使用
   できるコマンドは、音階を示すA~G・R(休符)・#・+(シャープ)・
   -(フラット)コマンド、音の高さを示すO・<・>コマンド、テンポを示
   すTコマンド、音の長さを示すL・“.”コマンドなど、BASICにおけ
   るPLAY文とほぼ同等のものです。

    ちなみに、BPLAYが登場する以前、“PLAY.EXEhというもの
   があったと聞いていますが、わたし自身完全なものにお目にかかったことは
   ありません。なお、コマンドとしてこの他にも注釈を示す;コマンドがあり、
   最近のバージョンでは、この直後にコマンドを追加することによって独自の
   処理をさせることができるようです。

 2. MDT

    これが現在におけるスタンダードのようです。これでは、BPLAYのコ
   マンドに1音符の中で音を出さない時間の割合を示すIコマンド、文字列を
   画面に出力する””コマンドを追加したものとなっています。ちなみに、文
   字列出力の””コマンドは、前述のPLAY.EXEから継承したもののよ
   うです。

    MDTでは、テンポ指定の方法がBPLAYのものと若干異なります。B
   PLAYの旧バージョンではテンポ指定が独自のものであったため、新バー
   ジョンではそれを区別するため、Tコマンドの後に“*”を追加し、

    T120*L4

    のように指定しますが、MDTの最新バージョンではこの“*”を無視し
   ます。(通常このような指定はしない)しかしながら“*”付のテンポが本
   来の楽譜のものと同じとなっているため、このタイプのデータはMDTで問
   題なく演奏できます。逆に、“*”を指定していないデータをBPLAYに
   持って行くと問題が生じます。

 3. MPxxx/EPxxx

    これらは、前述のMDTに、FPLAYを意識した連符を示す{}コマン
   ド、休符と同等の役割を示すPコマンドを追加したものです。

 このように、大筋は同じでも細かい点が異なるというのは時として大きな障壁と
なることがあります。現実に、これまでにもフォーマットの細かい違いから、また、
各コマンドの限界値の違いによってある特定のプログラムで演奏ができないという
ことがたびたび発生しています。その原因の1つに、MPxxx/EPxxxの拡
張コマンドがあったことに関しては作者として申し訳なく思っています。そういう
意味ではまずMDT互換の形とするべきでした。なお、IコマンドについてはBP
LAYとの互換性がないわけですが、こちらについてはBASICのPLAY文で
演奏するのでないかぎりあまり問題にはならないようです。

 次に、「MDT」データ作成時に留意すべき点などを...

 1. BEEP音源の性質をよく知ること

    BEEPは、他のどの音源と比べてもかなり違った性質を持っています。
   変えられるのは周波数だけ、音量調整もできません。(B16シリーズでは
   音量小と音量大、FM Rシリーズではもっと細かい制御がソフト的に可能
   ですが、いずれも機種特有のものです)ですから、他の音源と同じような考
   え方でデータを作るとまず100%確実に失敗します。具体的には、ただ単
   に各パートを時分割処理みたく鳴らしてみてもダメだ、ということです。わ
   たしがかつてデータ作成支援ツールとしてリリースしたMDTCを今もお使
   いの方がいらっしゃるようですが、これが一般的に不人気であることからも
   このことがうかがえます。

 2. 音を「混ぜる」のではなく「埋め込む」

    ではどうするか? ここで一般的に行われている手法は音の「埋め込み」
   のようです。そういう意味では単に「各パートを合成するコンバータ」では
   なく、時間軸の中に「どのような形で音が埋め込まれているかをビジュアル
   に表現できるエディタ」が必要なのかも知れません。実はこのようなエディ
   タはすでに存在しているのですが、これがBASICをコンパイルしたもの
   でサイズが非常に大きく、また転載許可等の問題もあり、こちらへは紹介し
   ませんでした。今はかなり機能アップされたものもあるようですので、必要
   な方はPC-VANの「98クラブ」で探してみてください。
w
    ところで、一口に音の「埋め込み」といっても実際にはこれが非常に大変
   な作業で、聞いた時に違和感のない状態に仕上げるためにはかなり神経を使
   います。さらに、これに加えて音の強弱を表現しようと思うともうパニック
   になります。常連さんたちが「年に2本」というのも納得できるでしょう。
   そういう意味では他の音源に対応した音楽データ作成の方がよほど簡単だと
   思います。ただ混ぜればすむ話ですから...

    ですから、一度MIDI等をやってしまうと、苦労の割に成果の上がらな
   いBEEP音楽を捨てたくなるのも人情というものでしょう<^_^;>

 3. 一番安直な手段は2パートのごちゃ混ぜ

    しかし貧乏人やマイナーマシンのユーザには他の選択はできませんから、
   このどうしようもない音源を使いこなす必要があります。

    「2パートのごちゃ混ぜ」はわたしがよく使う手です。わたしが演奏プロ
   グラムをリリースしたころ、データとしてピアノソロの楽譜を高・低の順に
   時分割入力したものをよく発表しました。このときの苦労というのは並大抵
   のものではなく、ただコピーするだけでも余暇を利用するとはいえ1コーラ
   ス分でも軽く1週間はかかりました。この経験からMDTCを開発しようと
   考えたわけですが、(うちにはPLAY.EXE用の“HARMO.COM”
   というものがあったのですが、機能に不満がありました)MDTCをリリー
   スしてからはずっと楽になりました。

    ただ、この方法では確かにそこそこ聴けるものはでき上がるのですが、デ
   ータサイズの割にはいまひとつパッとしません。その辺が「埋め込み」に軍
   配の上がる理由でもあるのでしょう。ちなみに、BPLAY用のデータには
   この「2パートのごちゃ混ぜ」手法を使ったものが多いようです。

 4. パート数を欲張らないこと

    「ごちゃ混ぜ」をやるにはこの「2パート」というのがネックのようで、
   それ以上ではかえってマイナスとなるようです。(演奏ソフトがついて行か
   なくなる)ですから、特に強調したい点に限り3パート分を混ぜ、通常は2
   パートに押さえるのがうまいようです。

    ちなみにわたしが「ごちゃ混ぜ」をやる際、音符の基本単位は32*パー
   ト数とするのが一般的なのですが、(MDTCのアルゴリズムもそうなって
   いる)ここで64分音符を基本にしたまま高・中・低の順で順番に並べて見
   かけ上3パート分を混ぜても結構楽しめます。現実にBPLAY用のデータ
   でこのようなものを見かけますが、おそらくBPLAY用エディタの制約と
   いうのもあるのでしょう。(今はどうかわかりませんが)

    これと「埋め込み」手法を併用すればもう言うことはないですね。

 ご存じの方も多いかと思いますが、ここ数年の間にコンピュータも進歩して、A
V(オーディオ・ビジュアル)機器とのインタフェースを標準化しようとする動き
が見られます。(PC-98GSのようなもの)これが実現すればこのように原始
的な音楽演奏の手法は自然淘汰されるでしょうが、少なくともMS-DOSが主流
であるうちは音楽演奏の手法として君臨し続けることでしょう。

 ところで、BEEPによる音楽演奏の将来性はないわけではありません。PWM
方式(Pulse Width Modulation パルス幅変調。今主流に
なりつつある1bit DAコンバータと同じような方式と考えてください)でス
ピーカをドライブすることで、人間の音声のような複雑な信号をも再現できること
がすでにわかっていますから、(どこかのソフトハウスがすでに製品化している)
これを利用すればかなり高度な演奏も可能でしょう。ただし、この実用化には処理
能力の高いコンピュータが必要であり、(複雑な波形を処理するため)ソフト面で
もかなり高度な技法が要求されます。(演奏の中断、パラメー^の変更等)この辺
が今後の課題というところでしょうか?? もっとも、ここまでやることを考えれ
ば、専用ボード(音源)に任せてしまった方が楽、という話になってしまうかも知
れませんね...<^_^;>

                            Written by Thirty-Two Technical Laboratory.

 数箇所化けていますが、そのままにしておきます