• ベストアンサー

SMFのバイナリデータについて

Stabdard MIDI file をバイナリエディタで、直接いじってるんですけど、フォーマット1にして2つのトラックで音を同時に鳴らす際、トラックごとに音色を変えたいとおもったます。このときはやはり、プログラムチェンジの命令をつかうんでしょうか?いちおう、書いてはみたのですけど、上手くなりません。どなたか、実際にやってる方いらっしゃいましたら、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

回答が遅くなりましてすみません。 > GMオンというのはシステムエクスクルーシブメッセージですよね? ハイ。その通りです。 > 複数のトラックチャンクがある場合、一つ目だけにいれればいいんでしょうか? ハイ。その通りです。まぁ,どこに入れてもいいみたいですが,通例として第1トラック(トラックNo.0)に挿入するようです。中には第16トラックに入れてある例も見たことがありますが,この場合,必ず第1chへの命令でした。 また,このGMシステムオンのすぐあとにGSリセットやXGシステムオンと言うシステムエクスクルーシブメッセージが入ることもあります。 > このQuicktimeというものに対してのGMオンメッセージが見当たらないよな気がするんですが・・・。 > やはり、Quicktimeに対するなんか認識させるようなメッセージを書かないといけないんでしょうか? QuicktimeはGS互換です。ですから,GMシステムオンとGSリセットがそれにあたります。 ただし,GS互換と言うことはローランド社が提唱するGSシステムと同じではないため,無効になる命令もあります。 なお,バイナリエディタでの編集作業ですから, <GMシステムオン> F0 7E 7F 09 01 F7 <GSリセット> F0 41 10 42 12 40 00 7F 00 41 F7 を入力することになると思います。まぁ,普通はどちらかだけでいいようです。 ここで厄介になるのが,GMシステムオン命令だけなら音色を変更するのにプログラムチェンジだけでいいのですが,GSリセット命令を使った場合,バンクセレクト(MSB(0)とLSB(32):カッコ内はコントロールチェンジナンバーを表しています)と言うコントロールチェンジ命令をプログラムチェンジ命令の前に必ず挿入しなくてはいけなくなることです。これは,例えばグランドピアノ(プログラム 0)であっても何種類か存在し,それを指定するためなのです。 GSリセットの場合,この指定はMSB(0)を使用し,LSB(32)は必ず「0」を入力してください。 参考までにSC-8850で使われている音色マップをダウンロードできるページを参考URLに入れておきます。この中の「SC-55 マップ」(インストゥルメントとドラム)がQuicktimeでも使える音色だと思います。 ただし,GS互換をうたっているものの中にはただ単に「再生できる」というだけで,実際にはGM音源となんらかわりがないものもあります。

参考URL:
http://www.roland.co.jp/lib/download/Tone_list.html#SC8850
yabuchanchan
質問者

お礼

丁寧な御回答ありがとうございました。 さっそく、 GMオンをいれてみてつくってみましたら、音色のチェンジが できました!!! GSリセットはいれなくても、鳴ったみたいです。 でも、もっとそこら辺のところを追求してみたいと思います。 参考URLも非常に有用です。 ソフトを使ってるだけでは、絶対触れないようなことばかりで結構 難しいんですけど、がんばってみようと思います。 本当に、ありがとうございました。

その他の回答 (1)

回答No.1

GMオンなどの命令はちゃんと入れてありますか?これがないと上手くならないこともありますよ。 また,このGMオンなどの命令と同じタイミングではプログラムチェンジ命令などを実行させないでください。音源にもよりますがGMオンなどの命令をトラック1の第1小節第1拍目に入れ,それ以外の命令郡は第2拍目以降に入れてください。 ただし,これは4/4拍子・テンポ120の場合です。GMオンなどの命令が有効になるまでの時間は約1秒ありますのでそれを計算して他の命令を入力してください。 音色を変える命令は,プログラムチェンジでOKのはずですが・・・。MIDI音源によっては同時に処理が出来ない場合もあると思いますので,実行させるタイミングを少しずらしてあげてはいかがでしょう。

yabuchanchan
質問者

お礼

御回答ありがとうございました。GMオンというのはシステムエクスクルーシブメッセージですよね?複数のトラックチャンクがある場合、一つ目だけにいれればいいんでしょうか?また、音源としてMacでQuicktimeを使って作ったバイナリを鳴らしているんですが、このQuicktimeというものに対してのGMオンメッセージが見当たらないよな気がするんですが・・・。 やはり、Quicktimeに対するなんか認識させるようなメッセージを書かないといけないんでしょうか? いろいろ質問してすみません。もしよければお返事ください。

関連するQ&A