こんにちは。強です。
メイン環境を Linux(xubuntu)に移行している最中です。
普段の音楽活動(趣味)では Windows で Wavetone というソフトウェアを使っていました。
Wavetone(Ackie Sound)
Linux へ移行するにあたり、
「Wavetone の代わりになるものはないか?」と探していたところ、
Sonic Visualiser という解析ソフトを見つけました。
AppImage 版・deb 版ともに試してみたのですが、
Wavetone のように “ピアノロール風のスペクトラム解析” を初期設定でサッと出すには
レイヤー構造が複雑すぎて、私の用途にはオーバースペックでした。
機能は豊富なのですが、目的の作業に対してストレスが溜まっていきました。
そこで方針変更。
もう Wine で Wavetone を起動すればよくない?
ということで、Wine 上で Wavetone を動かす方向へ切り替えwineインストールからwavetoneインストール。
起動まではすんなり行きました。
音声ファイルも読み込み音声再生も問題なし。
ここで一つ問題がおきました。
ピアノロール押下での音がならない。
sin wave のみは鳴りましたが、ピアノ音とかにしたいわけです。でも鳴りません。
色々調べて、wine側のmidiを有効化すれば良いらしい。
↓timidity をインストール(ソフトウェアMIDI音源)
sudo apt install timidity
Xubuntu(Ubuntu系)では timidity.service が存在しないらしいのでとりあえず手動起動してみる。↓
timidity -iA
↓ログ
~$ aplaymidi -l
Port Client name Port name
14:0 Midi Through Midi Through Port-0
20:0 microKEY2-25 Air microKEY2-25 Air _ CTRL
128:0 TiMidity TiMidity port 0
128:1 TiMidity TiMidity port 1
128:2 TiMidity TiMidity port 2
128:3 TiMidity TiMidity port 3
ここまでで一応ピアノロール押下でMIDI音源が鳴りました。
ただ、、、毎回timidityを手動起動⇢wine⇢wavetoneはストレス。
autostartから自動で起動させる。
毎回勝手に起動してよね。ということで
↓ timidity の自動起動ファイルを作成
nano ~/.config/autostart/timidity.desktop
↓中身
[Desktop Entry]
Type=Application
Exec=timidity -iA
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=TiMidity MIDI Server
Comment=Start TiMidity ALSA MIDI server
↓再起動後のログ
~$ aplaymidi -l
Port Client name Port name
14:0 Midi Through Midi Through Port-0
20:0 microKEY2-25 Air microKEY2-25 Air _ CTRL
128:0 TiMidity TiMidity port 0
128:1 TiMidity TiMidity port 1
128:2 TiMidity TiMidity port 2
128:3 TiMidity TiMidity port 3
うん。起動してるね。
wavetone起動から動作確認。 ・・・ピアノロールから音出ない。
いや、起動してるんですけど?
結構悩みましたね。
↓試したこと
winetricks sound=alsa
winetricks midimap
winetricks dmsynth
sudo sed -i 's/^#\?source.*/source=128:0/' /etc/timidity/timidity.cfg
だめでした。鳴りません。
煮詰まってきて。手動では音鳴るんだよね?ってことで
timidity -iA
うんうん。音鳴るね。
↓ログ
~$ aplaymidi -l
Port Client name Port name
14:0 Midi Through Midi Through Port-0
20:0 microKEY2-25 Air microKEY2-25 Air _ CTRL
128:0 TiMidity TiMidity port 0
128:1 TiMidity TiMidity port 1
128:2 TiMidity TiMidity port 2
128:3 TiMidity TiMidity port 3
129:0 TiMidity TiMidity port 0
129:1 TiMidity TiMidity port 1
129:2 TiMidity TiMidity port 2
129:3 TiMidity TiMidity port 3
????どゆこと????
結論から行きますが、以下LLMの解説
🎯 今回の問題の“本当の正体”
強さんの観察が最後の鍵だった。
自動起動の TiMidity と手動起動の TiMidity は、
同じコマンドでも “別の環境” で起動していた。
つまり:
自動起動(autostart)
→ GUIセッションの最小環境で起動
→ ALSA sequencer の初期化が不完全
→ Wine が MIDI デバイスとして認識できない
→ 音が鳴らない
手動起動(ターミナル)
→ シェルの環境変数を全部引き継ぐ
→ ALSA sequencer が完全に初期化
→ Wine が MIDI デバイスとして認識
→ 音が鳴る
強さんが最後に言った
「wine 起動前に手動起動しても音が鳴る」
これが決定的だった。
起動順ではなく 起動環境の差 が原因だった。
なるほどわからん。
とにかくシェル経由で起動しないと色々足りないらしいです。
起動してるだけでは起動しているだけっていう問答でしょうか?
なので、 ~/.config/autostart/timidity.desktop の中身を変更
[Desktop Entry]
Type=Application
Exec=sh -c "timidity -iA"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=TiMidity MIDI Server
Comment=Start TiMidity ALSA MIDI server
再起動でピアノロールからMIDI音源で音が鳴ることを確認。
これはwineがめんどくさいのか。それともMIDI周りがめんどくさいのか。
はたまたautostartがめんどうなのか。
まとめ
・Wavetone の sin wave だけなら Wine で簡単に動く
・ピアノロールの MIDI 音を鳴らすには TiMidity が必要
・しかし autostart の TiMidity は Wine に認識されない
・原因は「起動順」ではなく「起動環境の差」
・Exec=sh -c "timidity -iA" にすることで解決
・Linux でも Wavetone のピアノロール音が鳴るようになる
以上私の環境ではこうだったというお話でした。
もっと便利でシンプル使いやすい耳コピ支援神アプリあったらぜひ教えてください。