試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

RPGツクールXP/VX作品をWine上で動かす際のMIDIデータ(BGMとME)の再生に関する強引な対処

(2010/4/13)MIDIオーディオをそのまま鳴らすための方法が判明したため、この記事の方法は非推奨とする。詳しくは「Wine上のRPGツクールXP/VX作品の動作に関する追加メモ(2010/4/13現在)」を参照。
以下、以前の内容となる。

WineでRPGツクールXP製の作品を動かすのは厳しい?」や「Wine上のRPGツクールVX作品の動作について」で試したように、(バージョン1.1.23の時点では)WineではDirectMusic対応プレーヤでMicrosoft Synthesizerを通してgm.dls(MSGS)の音が鳴るところまで設定した環境でもRPGツクールXP/VXのMIDI形式のBGM/MEは無音になって正常に再生されない。
Wineのバージョン1.2.23の時点ではこの問題は解決されていないが、強引な方法によりこのMIDI形式のBGM/MEを再生させることに成功したので、その手順についてを扱う。

  1. 要領
  2. MIDIデータからOgg Vorbisのオーディオデータを得る
    1. Windows上と同じ音源で鳴らせたい場合
    2. 音がWindows上と異なる鳴り方をしてもよい場合
  3. ファイルを置き換える
  4. MEについて
  5. スクリーンキャスト

要領

blog.goo.ne.jp/sanktakato/e/eb3fb859853e416e89b6f62d487ec0b8
のmiki氏のコメントで「MIDIファイルをWAVEオーディオにしたものを拡張子.midの元のファイルに置き換える」という方法が載っていたのを見て、試してみることにした。ただ、WAVE形式のままというのはファイルサイズやディスクアクセスの面で問題があると感じたので、別の形式にできないかと考えたところ、「Wine上のRPGツクールVX作品の動作について」でOgg Vorbis形式のオーディオデータが完璧に再生されていたのを思い出したので、「MIDIデータをオーディオ化したものをOgg Vorbisエンコードしたものを元のファイル名で置き換える」という方法をとることにした。

MIDIデータからOgg Vorbisのオーディオデータを得る

Windows上と同じ音源で鳴らせたい場合
(RPGツクールXP/VXのMIDI音源について)Windows上では「Microsoft Synthesizerからgm.dlsの音が鳴っている」ということが知られているため、Windows上と同じように鳴ってほしい場合はMSGSの音が鳴るように準備を行った後でDirectMusic対応MIDIプレーヤからの再生を録音することになる。
Windows上で鳴っているのと近い音で鳴らせたいのであれば44100Hzで録音をする必要があるが、こだわらなければ22050Hzでもよい。詳しくは「Wine上でgm.dls(MSGS)の音でMIDIデータを演奏したものを録音してオーディオデータとして保存する」を参照。
MIDIデータの演奏ではループ用のコントロール*1により指定位置にきちんと戻るのに対し、オーディオデータ化するとつなぎの部分が多少不自然になってしまうのだけは仕方がないのだが

  • 最初の無音部分は可能な限り短めに切る
  • 最後の部分は次のループに綺麗に入るように少しだけ切り取る
  • 曲によっては先頭のループ開始点の手前(イントロ部分)を削ってしまう
  • Audacityの再生ボタンをShiftキーを押しながら押してループ再生を行ってつながりを確認する

などの工夫はできる。
WAVE形式のオーディオを得た後は手動でoggenc(「vorbis-tools」パッケージ*2内)によりエンコードを行う。このときもファイルサイズとのバランスを考えて、こだわらなければ品質は既定値(オプション未指定時)の「3」でよい。

$ oggenc [ファイル名].wav

音がWindows上と異なる鳴り方をしてもよい場合
Windows上と同じ音色で鳴らなくても良いのであればTiMidity++を使用するのが楽。直接Ogg Vorbisのデータが(.midファイルと同じディレクトリに)得られる。

$ timidity -Ov [ファイル名].mid

もちろん、外部MIDI音源などを使用して録音するなど、別の方法もある。

ファイルを置き換える

生成したOgg Vorbisファイルを元のMIDIファイルのファイル名で上書きしていく。
作品のディレクトリにMIDIデータが含まれている場合はそのディレクトリのファイルを置き換えればよいが、もし作品のディレクトリ以下にそれらしい曲データがないのであれば、ランタイムパッケージ(RTP)に含まれるファイルが使用されているため

ディレクトリ内の.midファイルに対して置き換えの処理を行うことになる。数が結構あるので全てを置き換えるのは大変。

MEについて

MEと呼ばれる短い曲*3も、MIDI形式であればBGMと同じようにWineでは鳴っていないが、これもBGMと同様にMIDIファイルをOgg Vorbisオーディオで置き換えることで鳴るようにすることができる。

スクリーンキャスト

Wine上のRPGツクールVX作品の動作について」で扱った『アルガスの剣』という作品で、戦闘中の曲と戦闘終了後のファンファーレが鳴っているのが確認できるスクリーンキャストを
zoome.jp/kakurasan/diary/18/
に作成した。
zoomeは閉鎖されているため、動画は参照できない。

使用したバージョン:

  • Wine 1.1.23

*1:MIDIコントロールチェンジ111番をループ開始位置に入れる形

*2:Mandriva/Debian/Ubuntu/Gentooでこのパッケージ名であることを確認

*3:戦闘終了後のファンファーレなど