Fedora 43でSteam+Protonを使用し、Windowsアプリ上でMIDIを再生するメモ

作成: 
更新: 
🧅Tor 利用可能

Fedora 43でSteam+Protonを使用し、Windowsアプリ上でMIDIを再生するメモ

環境

  • Fedora KDE Plasma Desktop 43
    • カーネル: 6.19.11-200.fc43.x86_64
    • サウンドサブシステム: ALSA
  • Steamバージョン: 1773426488(安定版)
    • Windows互換環境: Proton Hotfix
  • サウンドデバイス: FX-AUDIO- FX-04J+

Steamをインストールする

以下のWebサイトの手順に従って、Steamをインストールします:
Steam Installation :: Fedora Docs § Using the terminal

非Steamゲームを追加する方法

Steamクライアントを起動し、左上の「ゲーム」→「非Steamゲームをマイライブラリに追加…」を選択します。

非Steamゲームを追加する方法

Windows用アプリケーションをProtonで実行する

  1. Steamクライアントのライブラリ画面で、追加した非Steamゲームを右クリックし、「プロパティ」を選択
  2. 「互換性」タブで、「特定のSteam Play互換ツールの使用を強制する」をチェックし、使用するProtonバージョンを選択
    • Proton Hotfixがおすすめ。動作に問題がある場合は他のバージョンを試してみてください。

日本語の文字化けを修正する

一部のアプリケーションでは、日本語のフォントが「?」になってしまい、正しく表示されないことがあります。これを修正するには、起動時のオプションを指定する必要があります。

ウィンドウ内に表示された文字が「?????……」になってしまい、正しく表示されていない
  1. Steamクライアントのライブラリ画面で、非Steamゲームを右クリックし、「プロパティ」を選択
  2. 「ショートカット」タブで、「起動オプション」に以下の内容を入力:
    HOST_LC_ALL=ja_JP.UTF-8 %command%
    起動オプションの設定画面

MIDIを再生する

デフォルト設定ではMIDIが再生されません。これを修正するために、FluidSynthを設定します。

  1. FluidSynthをインストール:
    sudo dnf update
    sudo dnf install fluidsynth soundfont-fluid
  2. FluidSynthを起動し、自動で起動するようにする:
    systemctl --user start fluidsynth
    systemctl --user enable fluidsynth
    systemctl --user status fluidsynth
  3. MIDI出力ポートが追加されていることを確認:
    aconnect -o
    正しく設定されていれば128番のポートが表示されます:
    (省略)
    client 128: 'FLUID Synth (72482)' [type=ユーザ,pid=72482]
        0 'Synth input port (72482:0)'
  4. 適当なMIDIファイルを再生して、正しく音が出ることを確認:
    aplaymidi --port 128:0 ./filename.midi
  5. SteamでMIDIを再生するアプリケーションを起動します。私の環境では、以下のアプリケーションで正しく再生されました:

音色(サウンドフォント)を変更する

  1. インターネットから好みのサウンドフォントをダウンロードします。
    例えば、Windows標準の「Microsoft GS Wavetable SW Synth」(いわゆるゲイツシンセ)に近づけたい場合は、以下のサウンドフォントをダウンロードします:
  2. 以下のコマンドを入力して設定ファイルを作成:
    mkdir -p ~/.config
    vim ~/.config/fluidsynth
  3. 以下の内容を入力して保存:
    # 絶対パスで指定(例)
    SOUND_FONT="/home/user/midi_sound_fonts/filename.sf2"
    
    # リバーブを無効にしてWindows標準に近づけたい場合は以下も指定する(オプション)
    OTHER_OPTS="-o synth.reverb.active=0 -o synth.reverb.level=0.0"
  4. FluidSynthを再起動して設定を反映:
    systemctl --user daemon-reload
    systemctl --user restart fluidsynth
    systemctl --user status fluidsynth