はじめに
他の目的の作業をしているときの副産物なので正しく無いかもしれません。
実際に音が出ないを再現して直したわけじゃないです。
ノウハウを捨ててしまうのがもったいないので一応記事に残しておこう程度。
環境
OS : Ubuntu 20.10
Kernel : 5.8.0-49-generic
Wine : wine-6.5 (Staging)
最近のwineでは標準で入っているWine midi mapperがいい仕事してくれるらしいので
そもそもMIDI音が出ない事象自体が発生しないかもしれないです。
作業
winetricks dxdiag
wineに標準で入っているDirectX診断ツールは動かなかったのでwinetricksからネイティブ版を入れます。
wine6.5だと罠があってハマりますのでこちらをを先にやってください。
wine dxdiag
0024:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound output probably won't work.
midi周りがだめだとこうやって落ちかもしれないです。
(何をしていた時にこのエラーが出ていたのか・・さっぱり覚えてないです。すみません。
多分wine6.0でなんかのゲームを起動しようとしていた時だったような・・)
wineHQのwikiに解決法が載ってます。
自分でもよくわかってないですが、
めっちゃ簡単に理解しようとするならば、
MIDIの出力をパススルーしてあげる。
そのためにいろいろ小細工が必要。ということかな?
$ aconnect -o
client 14: 'Midi Through' [type=カーネル]
0 'Midi Through Port-0'
Wikiに表示してあるほど無い。
sudo apt install timidity timidity-daemon alsa-utils
echo "timidity -iAD -B2,8 -Os1l -s 44100 -x'soundfont /usr/share/midi/sf2/mypatches.sf2 order=1'" >> ~/.profile
source ~/.profile
永続化するために.profideに書いて読んでます。
一応、rebootをかけて、MIDIのポートをもう一度見てみます。
$ aconnect -o
client 14: 'Midi Through' [type=カーネル]
0 'Midi Through Port-0'
client 128: 'TiMidity' [type=ユーザ,pid=1528]
0 'TiMidity port 0 '
1 'TiMidity port 1 '
2 'TiMidity port 2 '
3 'TiMidity port 3 '
増えてる
aplaymidi -l
でも同様の結果が得られます。
適当なファイルをとってきて再生確認。
aplaymidi --port 128:0 Downloads/AIR001.MID
流れました。
次にwindowsのレジストリを触るようです。
wine reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap" /v "CurrentInstrument" /t REG_SZ /d "#1"
診断ツール起動してみる
wine dxdiag
こんな感じでtimidityのポートが表示されていたらOK(多分)
参考