Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

バンクセレクト、一部SysEx命令に対応 #2

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

logue added 5 commits October 16, 2013 17:58
XGリセットに対応
バンクセレクトMSBに対応
サウンドフォント読み込み中に進捗状況を出力
GM,GS,XGリセットに対応。(GMの場合バンクセレクトとドラムのプログラムチェンジが無効化されます)
GM規格のMIDIでドラムパートが直前に再生されたMIDIファイルのままになってしまうバグを修正。
エフェクトを途中まで実装。
バンクセレクトの処理を変更。(ベースとなっていたサウンドフォントのバグでした)
@imaya
Copy link

imaya commented Oct 25, 2013

すいません、一部こちらの修正とかぶっているため適宜マージしたいと思います。

@imaya
Copy link

imaya commented Oct 30, 2013

返信ありがとうございます。

たびたびの質問で恐縮なんですが、
自分の理解では XG の時は bank select で 127 が指定されたら、そのチャンネルがドラムとなるだけで、実際に SoundFont 内の Bank 127 が呼ばれるという訳ではないと思っています。
Timidity++ の設定方法をみていると、どうも 実際の MIDI の bank select と SoundFont の bank の対応は設定ファイルで手動で行っているように見えます。(もちろん、そのまま指定できるように MIDI と SoundFont の bank を対応させて作っているデータもあるとおもいます)
この点、自分が見落としている可能性もあるため仕様かなにかご存知でしたら指摘お願いします。

@logue
Copy link
Author

logue commented Oct 30, 2013

SoundFontの仕様に詳しくないのですが、もしかすると現在こちらで使用しているSoundFont固有の定義かもしれません。
このサウンドフォントの定義では、以下のようになっています。
http://logue.github.io/smfplayer.js/debug/
この定義が偶然XG規格のMIDIファイルと一致していたのかもしれませんね。

注目して欲しいのは、バンク127と128で、128の方はGSというサフィックスが付いていると思います。
この2つはそれぞれGM規格の範囲外のドラムの設定が異なっています。
今のところXG規格のMIDIファイルを鳴らすときはバンク127、それ以外のMIDIファイルを鳴らすときは128というようにしています。

@imaya
Copy link

imaya commented Oct 30, 2013

なるほど、了解です。
ほかのsf2ファイルについてもいくつかこちらで調べてから変更を適用させていただこうとおもいますので、よろしくおねがいします。

@imaya
Copy link

imaya commented Nov 7, 2013

こちらでほかのXG対応のSoundFontを調べた結果、サンプルが少なくて恐縮ですが以下のような結果になりました
https://gist.github.com/imaya/7350326
これをみたかんじ、どうやら SoundFont の bank と XG/GS の bank には取り決めがないようなので、今回は GS リセットと XG システムオンの対応だけして bank のマッピングは一時保留にしたいと思います。

@imaya
Copy link

imaya commented Nov 8, 2013

上記のコメントの通り内部で XG, GS の状態を持つことにしましたが、
bank select については bank のマッピングを行わないと意図しない音で鳴るため、
今回はすべて無視するようにしました。

@logue
Copy link
Author

logue commented Nov 8, 2013

お疲れ様です。
どうも、SoundFontの作者によって配列が一定していないみたいですね。

この様子だと、SoundFontのバンクのマッピング処理を別のファイルで行うようにするか、SoundFont毎に派生版作ったほうがよさそうですね。

@imaya
Copy link

imaya commented Nov 11, 2013

バンクのマッピング処理についてはマッピングするAPIだけこちらのライブラリで用意して、
例えば timidity++ の cfg ファイルを読み込んでマッピングするなどは他のライブラリに任せられるようにするといいかなと考えています。

logue referenced this pull request in logue/sf2synth.js Jan 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants