早期的電腦遊戲,音樂部分通常是 CD 音軌或是 MIDI 音效檔。在我的經驗裡使用 CD 音軌或是 DOS 的遊戲在音效方面都不會有什麼問題,因為 CD 音軌相對單純,而 DOS 遊戲用 DOSBox 就可以完全模擬,無痛的玩那些 DOS Game。
不過如果 Windows 的老遊戲沒有用 CD 音軌而是用 MIDI 音效,在 Ubuntu 用 Wine 玩的時候就會沒有音樂,玩起來很沒 fu,下面就來講一下怎樣用 Ubuntu 玩老遊戲並且正常聽到音樂。
下面以我自己的使用環境 Ubuntu 18.04 為例
檢查音效的 output 狀態
aconnect -o
# 執行結果:
client 14: 'Midi Through' [type=內核]
0 'Midi Through Port-0'
aconnect -o 可以查看目前 ALSA 音訊的 output 狀態,這邊只是先看一次狀態,之後設定完再來做比較。
測試遊戲音樂
用 Wine 開啟這次要測試的遊戲「大富翁 4」
可以聽到滑鼠的音效與人物的聲音,但少了最重要的背景音樂
安裝與使用 TiMidity
安裝 TiMidity,它是一套可以將 MIDI 轉換成 WAVE 並且播放的程式
sudo apt install timidity
接著執行 timidity 進行 MIDI 轉換與音訊 output 設定
timidity -iA -Os
- -iA:以 ALSA sequencer client 的方式啟動 timidity
- -Os:將音訊輸出到 ALSA
通常 Ubuntu 裡預設是用 ALSA 處理音訊,如果改用 JACK 或 PortAudio 的話就去 timidity 的 man page 查一下相應的參數
再次檢查音效的 output 狀態
aconnect -o
# 執行結果:
client 14: 'Midi Through' [type=內核]
0 'Midi Through Port-0'
client 128: 'TiMidity' [type=用戶,pid=5449]
0 'TiMidity port 0 '
1 'TiMidity port 1 '
2 'TiMidity port 2 '
3 'TiMidity port 3 '
可以看到多了 TiMidity 的設定
再次測試遊戲音樂
重新開啟我們的大富翁 4
懷念的音樂都回來啦!
關閉 TiMidity
TiMidity 開啟後就會常駐在背景執行,不用的時候可以把它關掉。
剛才開啟 TiMidity 時有一組 pid 5449,直接把它 kill 掉就可以了,如果不確定的話,也可以先用 ps 查一下
ps aux | grep timidity
wade 5449 0.0 0.3 370400 15764 pts/2 Sl+ 17:34 0:00 timidity -iA -Os
wade 3707 0.0 0.0 17688 724 pts/1 S+ 17:40 0:00 grep --color=auto timidity
kill 5449
完整 Youtube 影片
參考資料: