読者です 読者をやめる 読者になる 読者になる

Windows Server 2008 R2 StandardでGame MakerやRPGツクールVX Ace製ゲームのMIDI音楽が再生されるようにする

ゲームコンストラクションツールのGame MakerやRPGツクールVX Aceで制作されたゲームではMIDI音楽をDirectXに含まれるMicrosoft Synthesizerという音源で再生するのですが*1、Windows Server 2008 R2 StandardのDirectXにはこれが付属していません。ですのでなんとかしてこれを入れてやる必要があります。
自分が調べた限りではWeb上にその方法はどこにも載っていなかったので試行錯誤をしていたところ、下記の方法で可能なことがわかりましたのでご紹介します。なお、システムの設定を変更することになるので実行する際は自己責任でお願いします。
事前に「Windows Server バックアップ」で「システム状態」をバックアップしておけば万が一の時にも元に戻すことができます。「Windows Server バックアップ」導入の方法は記事の趣旨から外れるので割愛しますが、各自で実行されておくことを強くおすすめします。*2 *3

手順

※あらかじめ「サーバー マネージャー」の「機能の追加」で「デスクトップ エクスペリエンス」はインストールしておいてください。
※Windowsのインストール先はC:\Windowsと仮定しています。他の場所にしている方は適宜読み替えてください。


  1. DirectX End-User Runtimes (February 2010)をダウンロードする

    (2013-02-03現在のURLはこちらhttp://www.microsoft.com/en-us/download/details.aspx?id=9033

    現在ダウンロードできる最新版はJune 2010ですが、こちらには必要なファイルが含まれていませんでした。下記にあるファイルが含まれていればもっと前のバージョンのものでも問題ないはずです。
  2. ダウンロードしたDirectX End-User Runtimes (February 2010)のexeファイル(directx_feb2010_redist.exe)を実行すると、ファイルの展開先を聞かれるので適当な場所を指定してファイルを展開します。
  3. 前の手順で展開されたファイルの中にあるdxnt.cabをLhazなどのアーカイバで更に展開し、中に含まれる下記のファイルをC:\Windows\SysWOW64フォルダにコピーします。

    dmusic.dll
    dmband.dll
    dmcompos.dll
    dmime.dll
    dmloader.dll
    dmscript.dll
    dmstyle.dll
    dmsynth.dll
    dswave.dll
    


  4. 管理者権限で以下のコマンドを実行します。バッチファイルにしておくとよいのではないかと思います。*4

    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmusic.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmband.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmcompos.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmime.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmloader.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmscript.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmstyle.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dmsynth.dll"
    "%SystemRoot%\SysWOW64\regsvr32" /s "%SystemRoot%\SysWOW64\dswave.dll"
    


  5. 囲みの中身を拡張子regのテキストファイルとして保存し*5、ダブルクリック(または右クリックして「結合」を選択)します。するとUACの権限昇格ダイアログとその後に確認ダイアログが出るはずですので、両方とも「はい」を選択してください。

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectMusic]
    "GMFilePath"="C:\\Windows\\System32\\drivers\\gm.dls"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectMusic\Defaults]
    "DefaultOutputPort"="{58C2B4D0-46E7-11D1-89AC-00A0C9054129}"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectMusic\SoftwareSynths]
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectMusic\SoftwareSynths\{58C2B4D0-46E7-11D1-89AC-00A0C9054129}]
    "Description"="Microsoft Software Synthesizer"
    


*1:RPGツクールXP,VXも同様ですが、動作確認をしたのがVX Ace製のゲームだけですのでここには含めていません。ここで紹介する手順でXP,VXのゲームでもMIDI音楽が再生されるようになるはずです

*2:ちなみに、このバックアップからシステム状態を復元した場合、system32以下のファイルは追加したファイルは削除されて元に戻るようですが、SysWOW64以下に追加したファイルは削除されないようです

*3:私は「ディスクの管理」でVHDを作成してマウントし、そこにバックアップするようにしているのですが、物理ドライブをバックアップ専用にする方法のほうがWindowsが起動しなくなったような場合には復旧させやすいと思います

*4:最初ほかのサイトに載っている情報のように同じくdxnt.cab内に入っているdmusic.infを右クリックしてインストールすることも必須かと思っていたのですが、やらなくても大丈夫なようです。何か問題が起きた時には試してみるとよいかもしれません

*5:GMFilePathというキーの値は手元のWindows XPではREG_EXPAND_SZという形式で環境変数を埋め込むことでどこにWindowsがインストールされていても同じ値が使えるようになっていたのですが、regファイルでの記述が煩雑になるのでここではREG_SZ形式にしています。Windowsのインストール先が違う方はこれを各自の環境に合わせてください