MIDI OUTにNSX-39を選択すると再生開始直後にエラー発生
設定ファイルクラス(YNConfFile)の不具合。
NSX-39ののデバイス情報をmidiOutGetDevCapsで取得するとき、 プロダクト名称(MIDIOUTCAPS.szPname)には"NSX-39 "が返される。 このプロダクト名称には、末尾に空白文字が含まれている。 MIDI OUT選択デバイスのプロダクト名称を、末尾に空白文字が含まれている状態でINIファイルに登録する。 しかしINIファイルから値を取得するときは、末尾の空白文字が削られて"NSX-39"が返される。 値末尾の空白文字が削られるのは、INIファイルの仕様である。
再生開始時の処理でエラーが発生する理由を以下に示す。
1. INIファイルから選択されているMIDI OUTデバイスのプロダクト名称を取得すると"NSX-39"だった。 この時点で末尾の空白文字が削られている。 2. MIDI OUTデバイス一覧から、同じプロダクト名称を持つデバイスを検索したが見つからないため、エラーが発生した。 デバイス一覧に登録されているプロダクト名称は、midiOutGetDevCapsで取得した"NSX-39 "であり、 末尾に空白文字を含むものである。このため検索時にマッチしなかった。YNConfFile::SetStrでは、指定された文字列をそのままINIファイルに登録していた。 このためYNConfFile::GetStrで、登録した値を取得するとき、末尾の空白文字が削られる場合がある。
midiOutGetDevCapsでNSX-39のデバイス情報を取得するとき、 デバイス情報に含まれるプロダクト名称は、OSによって値が異なる。
Windows XPでは、末尾に空白文字を含まないプロダクト名称を返すため、 本チケットの現象は発生しない。
YNConfFile::SetStrにて、文字列をINIファイルに登録するとき、値をシングルクォートで囲む。 YNConfFile::GetStrで値を取得するときは、シングルクォートを含まない状態で値を取得できる。
MIDI OUTにポケット・ミク(NSX-39)を選択しているとき、 MIDIデータの再生開始直後に次のエラーが発生する。 このためMIDIデータを再生することができない。