Kobarinさん
KbMedia PlayerのUNICODE対応、ご苦労様でした。
> そこでお願いなのですが、文字列を BOM 付 UNICODE で出力することが > 出来るようにして頂けませんでしょうか。 MuseをUNICODE対応し、それに応えて皆さんがデータを作ってきてくれても、 MIDIファイルへのエクスポート段階で、その苦労が失われてしまうことに、 私も悩んでおりました。
ただ、 > 本来の SMF の仕様(文字列に UNICODE 使えませんよね?)とは異なります という理由から、それ以上の検討はしていませんでした。 SMFはもう時代遅れで、わずかに音源へのインターフェース仕様として生き延びているに留まり、 多分RolandもYamahaも、UNICODEに準拠したフォーマットなんて今更作らないだろうなぁ〜。 とうつむいておりました。
しかし、 > せっかくなので UNICODE 文字列を使用した MUSE データも > 出来るだけ制作者の意図した通りに表示したいと思っています。 のお言葉を拝聴し、ここに同志を得た気分です。
で、ご提案の仕様なのですが、 > BOM がついていれば UTF-16(BE/LE), UTF-8 のどれでも構いません。 > WAVE のファイル名も BOM 付 UNICODE で出力して頂ければ、ファイル名の > 制約もなくなります。 所詮、標準仕様のSMFから逸脱してしまうわけですから、 いちいち全てのメタイベントにBOMを付ける必要もないと考えました。 以下の様な仕様ではいかがでしょうか?
(1)Museの起動オプションに *u を新設。 (2)このオプションを伴ってMIDIエクスポートをすると、 メタイベントの文字列は、すべてUTF-16LEで出力される。 (3)これら文字列自体には、BOMは付いていない。 (4)その代わり、MIDIエクスポートの何らかのメタイベントを使って *u によって出力されたSMFであることが識別できるようにしておく。
いわば、(4)のメタイベントが一般に言われるBOMの代わりを成す、という発想です。 KbMedia Playerが、Museを介して演奏する場合は、自ら*u指定をするはずですから、 このメタイベントを識別する必要はなく、必要になるのはむしろ、 MIDIファイルを演奏する場合であろうと考えています。
対象のMIDIファイルが、Muse由来のものであるか否か、 そして、Muse由来であった場合、*u 指定でエクスポートされたものであるか否か を判断するためです。
いかがでしょうか?
|