質問:音楽の再生エンジンについて

Issue #1096 open
Leon created an issue

midファイルをWindows Media Player等で再生した場合とCardWirthPy上で再生した場合とで音色が変わってしまいます。
再生エンジンの詳細やカスタマイズの可否などについて教えていただけないでしょうか。

Comments (3)

  1. k4nagatsuki repo owner

    Windows Media Playerはかつてと仕様が変わっていなければWinMMというWindows付属の仕組みで音声を再生していると思うのですが、これは移植性が悪く細かな操作ができない、多くの環境で再生開始時に秒単位のラグが発声といった問題があり、CardWirthのバージョンアップに伴って別の再生方式に差し替えられました。CardWirthPyもそれに合わせています。

    現状使用されているのはBASS Audioという仕組みで、これはサウンドフォントという音色のセットを使用してMIDI音声を再生しており、裏を返せばWindows内蔵と同じような音のサウンドフォントを使用すれば近い再生結果を得る事ができます(`msgs.sf2`というサウンドフォントがそうだったはずです)。

    どのサウンドフォントを使用するかの設定は、設定ダイアログ左下の`詳細設定…`→`音声`にあります。

  2. 暗黒 騎士

    現在Pyが使っている再生ライブラリの実体はCardWirth1.50(orNEXT)が採用したものと同じBass.dllです。ただし他のエンジンは付属しているBass.dllのVerが古いのと32bitオプションを有効化していないので再生環境的にはPyの方が高品質です(ノイズが発生しにくい)。

    Windows Media Playerはそのままだとサウンドフォントを使えません。また、サウンドフォントがWinMM(MSGSシンセ)やソフトウェア音源を完全に再現するのも構造上難しいようです(ドラムセットなども含めて再現できているものを見たことがない)。

    Pyのサウンドフォント設定については以下を参照して下さい。

    https://w.atwiki.jp/cwpy/pages/34.html#id_a8269e67

    WMP等で出力されるMIDIをサウンドフォントを使って再生したい場合「VirtualMIDISynth」というソフトを常駐させる必要があります。

    https://www.gigafree.net/media/midi/VirtualMIDISynth.html

    WMPにこだわりがなく、サウンドフォントでMIDIを再生したいだけの場合は「Soundfont Midi Player」を使うのが楽かも知れません。

    https://soundfont-midi-player.softonic.jp/

  3. Log in to comment