-------------------------------------------------------------------------------
【  名  称  】 GXSCC MIDI Decoder
【ファイル名】 kbgxscc.kpi
【バージョン】 0.13alpha
【対応拡張子】 mid
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2019/04/07
-------------------------------------------------------------------------------

【概要】

GASHISOFTさん制作の GXSCC β236/β773 を使用して MIDI を再生するためのデコーダ
プラグイン再生プラグインです。対応拡張子は .mid です。

【導入方法】

このプラグインを使用するには、GXSCC β236 または GXSCC β773 が必要です。
GXSCC β773 は 2019年3月現在、公式サイトでは配布されていないようです。
持っていない方は残念ですが諦めて下さい。
GXSCC の公式サイトは以下となります。

https://gashisoft.web.fc2.com/

2019年3月現在、公式サイトがリニューアルされたばかりで、GXSCC β236 は英語版しか
入手できないようです。英語版は

https://gashisoft.web.fc2.com/E/

こちらで入手出来ます。英語が苦手な方でも、kbgxscc.kpi から使用する分には何の支
障もない筈です。

GXSCC β236 は、以前は β223 に差分パッチを当てる形で配布されていました。

kbgxscc.kpi では、英語版のβ236 と、β223 に差分パッチを当てた日本語版のどちら
でも動作することを確認しています。β773 はタイムスタンプが 2007/02/14 23:21 の
もので動作確認しています。

β236 とβ773 以外のバージョンでは動作しません。

kbgxscc.kpi では動作確認済みの実行ファイルのハッシュ値と一致しない場合には警告
ダイアログを出します。確認済みでない GXSCC を使用した場合の結果は自己責任でお
願いします。

ダウンロードしたら、「ツール」->「プラグイン設定」で kbgxscc.kpi を選択し、
「General」セクションの「GXSCC のパス」で GXSCC.exe のパスを設定して下さい。

【使用上の注意】

このプラグインは極めて特殊です。GXSCC は必ず動作確認に用いたのと「全く同じ」バ
ージョンをお使い下さい。動作確認した GXSCC のバージョンは β236 と β773 です。
β236 と β773 以外のバージョンでは動作しないと思って下さい。

【設定】

GXSCC をインストールしたら、プラグイン設定で GXSCC.exe のパスを設定して下さい。
各種設定については設定画面がヘルプを兼ねてますので参照して下さい。

GXSCC の設定は GXSCCPreferences.bin というファイルに保存されますが、kbgxscc.kpi
ではこのファイルの内容は無視されます。

【その他】

このプラグインは動作原理上、永久にα版です。自己責任で使用して下さい。


/*---------------------------------------------------------------------------*/

更新履歴

Version 0.13α(2019/04/07)

・マスターボリュームに関する以下の修正
　・SCC モードで XG のマスターボリュームに対応(SCC モードでは GS と GM は受信
　　するが XG は受信しない)
　・OPLL モードで GM/GS/XG のマスターボリュームに対応(OPLL モードでは GS/GM/XG
　　のマスターボリュームを受信しない)
　・どちらも GXSCC から取得した PCM を加工する方式で対応
　　(SCC モードの GM/GS のマスターボリュームは除く)
・マルチポートMIDIを分割再生時、リセット系とマスターボリューム系の SysEx は全
　ポートに送信するようにした
・リセットを含まない場合の処理を以下のようにした
　・GS 系 SysEx を使う場合は冒頭で SYSTEM MODE SET を送信
　　(GXSCC は SYSTEM MODE SET を受信する)
　・XG 系 SysEx を使う場合は冒頭で GM SYSTEM ON を送信
　　(GXSCC は XG SYSTEM ON を受信しない)
　・それ以外の場合は冒頭で GM SYSTEM ON を送信
　・必要ないかもしれないが念の為

/*---------------------------------------------------------------------------*/

Version 0.12α(2019/03/25)

・選択可能な周波数に誤りがあったのを修正(176000Hz->176400Hz)
・設定項目の順番を修正(SCC/OPLL モードを音色セットの手前に移動)

/*---------------------------------------------------------------------------*/

Version 0.11α(2019/03/23)

・β236とβ773のパスを別々に設定し、どちらを使用するかを選択する方式に変更
　・パスを設定し直す手間が省けて切り替えが容易になった
　・v0.10αのパスに関する設定は無視されるので設定し直す必要がある
・ファイルオープン時のシステムの負荷のかかり具合等、タイミングにより正常に再生
　出来ないことがあるのを修正
・β773 の DirectSound 処理をフックするようにした
　・一瞬でも DirectSound デバイスを開いて再生してしまうのを回避
・β236 の waveOut 処理のフックの仕方を修正
・GXSCC の終了のさせ方が乱暴だったのを修正
　・なるべくメインウィンドウを「閉じる」ことで終了させるようにした
　・終了時に GXSCC 内部のクリーンアップ処理が呼ばれるようになった

/*---------------------------------------------------------------------------*/

Version 0.10α(2019/03/22)

・新kpi仕様に対応
・GXSCC β773 に対応
・OPLL モード(GXSCC の左上ロゴダブルクリックで発動する隠しモード)に対応
・オーディオデバイス出力(waveOut)ではなくオーサリング時の WAV 出力(mmio)の乗っ
　取り方式に変更
　・バッファアンダーランを完全回避
　・シーク速度が大幅に高速化
　・kbwavefile.kpi による WAV ファイルデコードでも確実に正しいデータを出力出来
　　るようになった
　・Debug モードの「Decode Speed」を廃止(必要がなくなった)
・下記設定項目を追加
　・GXSCC のパス
　　・ハッシュ値(MD5)が確認済の値と一致しない場合は警告ダイアログを出す
　　・確認済みバイナリはβ223->β236への差分パッチを当てた日本語版とβ236英語
　　　版及びβ773
　・GXSCC のバージョン
　　・「GXSCC のパス」で設定した GXSCC.exe のハッシュ値が kbgxscc.kpi で確認済
　　　みの値と異なる場合でも使用したい場合に設定する
　・再生周波数
　・音色セット(SCC like Full-Set, Famicom like Set etc...)
　・AutoDetune
　・ローパスフィルタ
　・カットオフ周波数
　・SCC/OPLL モード(OPLL モード時は音色セットは無視される)
　・複数ポート使用MIDIの処理方法
　　・複数のMIDIファイルに分割して複数の GXSCC を起動
　　・分割しないで GXSCC を単独起動(従来の処理)
　　・自動判別(SCC モードのときは3ポート以上のときだけ分割、OPLLモードのとき
　　　はポート数によらず分割)
　・GXSCC を表示
　　・v0.09α以前の Debug Mode に相当
　　・表示されるウィンドウをマウスで動かせるようになった
　　・「オーサリング中」と表示されるが WAV ファイルが生成されることはない
　　・うまく動作しないときの確認用。通常はオフにする
　・GXSCC のフォルダを開く
　　・添付ドキュメントの参照用
・GXSCC から応答がない場合はダイアログを表示して強制終了させるか確認するように
　した
・64bit版を作成

/*---------------------------------------------------------------------------*/

Version 0.09α(2012/10/18)

・本体からの再生周波数要求を無視していたのを修正

/*---------------------------------------------------------------------------*/

Version 0.08α(2012/10/06)

・バッファアンダーラン対策を修正(冒頭で発生する確率が減少？)

/*---------------------------------------------------------------------------*/

Version 0.07α(2012/09/30)

・SMF Format 0 以外で曲長計算が正しく機能しなくなっていたのを修正(変なところで
  演奏終了してしまう)
  ・KbMedia Player 本体から呼ばれる分には問題なし(常に Format 0 が渡されるので)
・設定項目「Debug Mode」を追加
  ・GXSCC のウィンドウ表示・非表示切替
  ・バッファアンダーランの発生確認用
  ・DecodeSpeed の調整用
・設定項目「Decode Speed」を追加
  ・バッファアンダーラン対策
  ・値が大きい程シークが高速になるが、バッファアンダーランが起こりやすくなる
  ・値が小さい程バッファアンダーランが起こりにくくなるが、シークが低速になる
  ・十分に高速な PC なら 10 倍速までは問題ないはず

/*---------------------------------------------------------------------------*/

Version 0.06α(2012/09/29)

・「Instrument Set」「Auto Detune」「Use Low-pass Filter」「Cut-off Frequency」
  を GXSCC 本体とは独立して設定出来るようにした
  ・設定の保存場所は kbgxscc.ini の[プラグインファイル名] セクション
    (kbgxscc_famicom.kpi なら [kbgxscc_famicom.kpi] セクション)
  ・kbgxscc.kpi のコピー・リネームによって、設定ごとに異なる MIDI デバイスとし
    て扱えるようになる
・シーク時にバッファアンダーランが発生して音が途切れる現象が改善(完璧ではない)
・曲長計算を簡易的な処理にして高速化
・Windows9x で動作していたかもしれないのを、絶対に動作しないように修正

/*---------------------------------------------------------------------------*/

Version 0.05α(2012/09/23)

・Windows7 で動作しなかったのを修正
・Windows9x での動作を打ち切った(動作確認出来る環境を構築出来れば検討)
・シークが高速化(PC の処理速度とは無関係な時間を要するので多分これが限界)

Version 0.04α(2005/03/05)

・演奏する度にアクティブなウィンドウのフォーカスが失われるのを修正
・GXSCC.EXE の終了のさせ方が少し強引だったのを修正

/*---------------------------------------------------------------------------*/

Version 0.03α(2005/03/02)

・演奏終了直前に Render が不正な値を返すのを修正

/*---------------------------------------------------------------------------*/

Version 0.02α(2005/03/01)

・GXSCC.EXE がバッファアンダーランを起こして音が途切れやすかったのを修正
・曲の最後の部分がきちんと再生されないことがあるのを修正

/*---------------------------------------------------------------------------*/

Version 0.01α(2005/02/28)

・初版

-------------------------------------------------------------------------------
Kobarin(hidkob@pb.highway.ne.jp)
http://hwm5.gyao.ne.jp/kobarin/
