Tips・その他 


YellowMusicPlayerの設定を変える

filesフォルダに、「YMPConfig.txt」というファイルを作ると
YellowMusicPlayerの設定を変更できます。

下記の設定ができます。
※ Tonyu開発環境版に導入したYellowMusicPlayerの設定を変える場合は、
  Tonyu.exeが入っているフォルダのUsrフォルダに、filesフォルダを作り
  その中に、YMPConfig.txtを作成してください

MusicPlayer起動時にこの設定が適応されます。(起動中に設定を変更できない)


1行目(省略可能)
実行ファイル(Player.exe または Tonyu.exe)の名前を変えた時は、そのファイル名を記述してください(例:「自作ゲーム.exe」)
実行ファイルの名前を変えていない場合は、何も記述しなくていいです。

※ ver 2.10から、実行ファイル名の名前を変えた時、設定しなくても自動的に終了できるようになりました。
  ここで指定した実行ファイルを優先して監視する仕様になりました。
  実行ファイルの名前を変えた場合、かつ、exeファイルがTonyu実行ファイルの場所に複数ある場合に、有用な機能です。


2行目(省略可能)
Midiの演奏にDirectMusicを使うか使わないかを制御します。
DirectMusicがOFFの場合は、Windowsで設定されているMidiデバイスを使用します。

0(デフォルトの設定):
Windows 98、Me、Windows 2000、XPではDirectMusicを使いません
Windows Vista、7、8ではDirectMusicを使います
1:
全てのOSでDirectMusicを使います
2:
全てのOSでDirectMusicを使いません

※ Windows 98SE で動作確認したところ、DirectMusicを使った場合、
  YellowMusicPlayerがフリーズしたり、システムがフリーズすることがありました。
  安定性を考慮して、デフォルトの設定では9x系のOSではDirectMusicをOFFにするようにしています。

※ ver2.34から、Windows XP以前では、デフォルトの設定ではDirectMusicをOFFにするようにしました。
  XP以前では、DirectMusicをONするとOFFにしている時よりも、Midiの音量が小さく聞こえるため
  効果音とのバランスが悪くなると思い、仕様を変更しました。

※ DirectMusicがOFFで、Midiデバイスに「TiMidity++」を設定している場合、
  Midiの音色が全てピアノになることがあります。

Windows Vista, 7 では、PCによってDirectMusicの準備に時間がかかることがあります。(時間がかからないwin7PCもある)
DirectMusicをOFFにすることで、YellowMusicPlayerの起動が早くなります。
しかし、DirectMusicを使った時のメリットも失うことになるので、そこも考慮したほうがいいです。

ゲームでMidiを使わない(Oggのみ再生する)場合はDirectMusicは使わないので、OFFにすると起動が速くなります。
DirectMusicを使うことによるメリット
・標準Midiデバイスの音源より音がきれい
・Vista, 7 では標準Midiデバイスの音源より音がしっかり鳴る(とくにリズムパート(ドラム音など)がちゃんと鳴るようになる)
・反応が速い
・Midi演奏中に、他のMidiに切り換えるときの、切り替えが速い
・どのPCでも音源が変わらないので、同じ音で鳴らせる
(標準Midiデバイスの場合は、PCによってデバイスが違う可能性があるので音が変わることがあります)
3行目(省略可能)
YellowMusicPlayerのモードを変えることができます
他のMidiPlayer,OggPlayerの動作・仕様を再現します

以下のプレイヤーに対応しています。
「Tonyu Midi Litest」(ver 3.01) (by LefTonboさん)
「MidiOggPlayer」(ver 0.01) (by ぐりーんげーむ。さん)
「TonyuでOgg Vorbisを鳴らすサンプル」(ver 0.031) (by soyさん)

作者がYellowMusicPlayerを、他のPlayerが使われているゲームに導入してみたかったので、勝手ながら入れた機能です
結構こだわった部分なので再現度はかなり高いと思います。
※ DirectMusicのON/OFFまでは再現されません
  1行目で設定してください
0(デフォルトの設定):
YellowMusicPlayerモードになります。つまり、通常のモードです
この状態でも、ある程度は「TonyuMidiLitest」と互換性があります(完全互換するにはTonyuMidiLitestモードにしてください)
Tonyu標準の「MidiPlayer2」とは完全互換です
このモードでは、MidiとOggを同時に鳴らすことができます
1:
TonyuMidiLitestモードになります(ver 3.01 を再現しています)
TonyuMidiLitestでは、ループなし再生にうまく対応していないため、
1度ループあり再生をしてしまうと、全てのMidiがループ再生されます

TonyuMidiLitestを使ったゲームに、YellowMusicPlayerを導入すると
曲がループせずに止まってしまうゲームがありました
このようなゲームでは、このモードにするといいでしょう
このようなゲーム以外は、YellowMusicPlayerモードでも正しく動作します
あと、TonyuMidiLitestではMidiの末尾がスキップされるので、そこも再現しています

このモードでは、音量調節・テンポ変更・フェードアウト停止・一時停止・一時停止からの再開
これらの機能が使えます
このモードではOggを鳴らすことはできません

2:
MidiOggPlayerモードになります(ver 0.01 を再現しています)
MidiOggPlayerでは、Midiの再生に「midi_sig.dat」と「(Kernelフォルダの)sig」を、
Oggの再生には「ogg_sig.dat」、再生情報には「bgm_config.dat」を監視するので、
その動作を再現しました

また、MidiOggPlayerは一度BGMを鳴らすと、同じBGMを再生しようとしてもBGMが最初から再生し直さない仕様があり
そこも再現しています
あと、ver 0.01ではOggのフェードアウト停止にうまく対応していないのですが、
このモードでは対応させています
MusicPlayerが起動した時間を記録する、「realtime.dat」の作成も再現しています

動作を上手く再現できていない部分もあります
MidiOggPlayerは、Oggのループ後に戻る位置が再生中に変更できて即座に反映します
しかし、YellowMusicPlayerは仕様上の関係で、再生中に変更した場合8秒遅れて反映されてしまいます
(再生前に設定した場合は即座に反映されます)(再生中に変更できるのはこのモード限定です)

このモードでは、音量調節・フェードアウト停止・一時停止・一時停止からの再開・Oggのループ後に戻る位置の指定
これらの機能が使えます
MidiとOggは同時に鳴らすことができます

Tonyu開発環境版では「midi_sig.dat」「ogg_sig.dat」に書き込みをしてもBGMを鳴らせません
(Tonyu.exeのある場所から相対パスで求めているため)
$mplayer.play() からMidiを鳴らすことのみ可能です
3:
TonyuでOgg Vorbisを鳴らすサンプルモードになります(ver 0.031 を再現しています)
Oggの部分は、TonyuでOgg Vorbisを鳴らすサンプルの動作を再現し、
Midiの部分は、YellowMusicPlayerとして動作します

Oggを鳴らすサンプルを使っているゲームは、「test_ogg.exe」があり、同じ場所に「Program」フォルダがあり、
「Program」フォルダの中に「Kernel」「Usr」「Player.exe」などがある状態で動作します
YellowMusicPlayerをこのモードで動作させるには、
YellowMusicPlayerをKernelフォルダに置き、「Player.exe」を起動すると動作します
「Player.exe」などのフォルダ・ファイルを上の階層に移動して、「Program」フォルダを消しても動作します

Oggを鳴らすサンプルでは、音量に対数処理をしていないので、
ボリューム値と感覚的に聞こえる音量とではバランスが合わなく感じますが、あえてそこも再現しています

再生中の音量調節・フェードアウト停止も再現しています
ただし、Oggを鳴らすサンプルでは250ミリ秒刻みで音量が変化しますが、そこは再現せずに滑らかな音量変化にしました
YellowMusicPlayerでは15ミリ刻みで音量が変化します

Oggを鳴らすサンプルはWavも鳴らせますが、YellowMusicPlayerでは鳴らせません

このモードでは、Oggは音量調節・フェードアウト停止・一時停止・一時停止からの再開、
MidiはYellowMusicPlayerの機能が使えます
Oggの再生時間や情報などを取得することもできます
MidiとOggは同時に鳴らすことができます

Tonyu開発環境版ではOggを鳴らせません(Tonyu.exeのある場所から相対パスで求めているため)
Midiは鳴らすことができます
4行目(省略可能)
YellowMusicPlayerがファイルを読み込む頻度を調節できます。
ここでいうファイルとは、どのMidi, Oggを鳴らすのかをMusicPlayerに知らせるために、
Tonyuから書き込まれるファイルのことです。(「sig」「ogg_sig.dat」「eff_midi.txt」などのファイル)
それらのファイルの内容が変わったのかをチェックする頻度を調節できるということです。

デフォルトでは読み込む頻度が、15ミリ秒毎と高めに設定されているので、頻度を低くしたい時は値を大きくしてください
頻度を低くすると、CPU使用率を減らすことができます。
Tonyuとのファイルの読み書きの衝突も少なくなり、Midi,Oggが再生されないバグも少なくなるかもしれません。
しかし、値を大きくするとその分反応が遅くなります。

タイミングをシビアに求めるゲーム以外は、この値を3とか5とかにしても遅れを感じないと思います。
0(デフォルトの設定):
15ミリ秒ごとにファイルを読み込みます。
1〜100:
(15 * (4行目の値 + 1))ミリ秒ごとにファイルを読み込みます。

例1

[YMPConfig.txt]

2
1
2
DirectMusicをOFFにして、TonyuMidiLitestモードで動作します。
ファイルの読み込み頻度は、(15 * (2 + 1)) = 45ミリ秒ごとになります。

例2

[YMPConfig.txt]

0
2
DirectMusicのON/OFFはデフォルト設定で、MidiOggPlayerモードで動作します。
ファイルの読み込み頻度は、(省略したので)15ミリ秒ごとになります。

例3

[YMPConfig.txt]

0
0
9
DirectMusicのON/OFFはデフォルト設定で、YellowMusicPlayerモード(通常のモード)で動作します。
ファイルの読み込み頻度は、(15 * (9 + 1)) = 150ミリ秒ごとになります。

例4

[YMPConfig.txt]



1
空の行はデフォルト設定として認識されます。(「1」と書いているのは4行目です)
DirectMusicのON/OFFはデフォルト設定で、YellowMusicPlayerモード(通常のモード)で動作します。
ファイルの読み込み頻度は、(15 * (1 + 1)) = 30ミリ秒ごとになります。

例5

[YMPConfig.txt]
シューティングゲーム.exe
0
3
16
実行ファイル名が「シューティング.exe」であることを認識し、Tonyuが強制終了してもYellowMusicPlayerは自動終了できます。
DirectMusicのON/OFFはデフォルト設定で、TonyuでOgg Vorbisを鳴らすサンプルモードで動作します。
ファイルの読み込み頻度は、(15 * (16 + 1)) = 255ミリ秒ごとになります。

戻る