Linux Mint 20.3 / Ubuntu Studio 20.04 でMIDIを鳴らすことができたのでSynthesiaで遊びます。ついでに、Synthesiaを簡単に起動できるようシェルスクリプトを作成し、シンボリックリンク(ショートカット)をデスクトップにおいてみました。
短く言うと
「WineHQ(Synthesia)」→「TiMidity++」→「PulseAudio」→「ALSA」→発音
となるように設定します。
「Download Synthesia」からzip版のSynthesiaをダウンロードして/opt ディレクトリに展開します。
次にTiMidity++がWineHQ(Synthesia)からのMIDIデータを受け取れるように起動/設定します。
timidity -iAD -B2,8 -Os1l -A100 -s 44100 -x'soundfont /usr/share/sounds/sf2/default-GM.sf2 order=1'
WineHQでSynthesiaを起動します。
wine /opt/Synthesia-10.8/Synthesia.exe
※ちなみに、SynthesiaをWineHQから削除するには
wine uninstaller
はじめに
※省略
今回の環境
- NEC LaVie LS350/A
- Linux Mint 20.3 Cinnamon または Ubuntu Studio 20.04.4
- WineHQ 7.0
「【WineHQ】Linux Mint 20.3とUbuntu Studio 20.04にターミナルでWineHQをインストール/日本語表示」に従ってインストール済
- TiMidity++
「【Linuxで音ゲーを実行#5】WineHQでMIDI出力アプリがフリーズ/音が出なかった」に従ってインストール済
Synthesiaをダウンロード
zip版「Synthesia 10.8 for Windows(zip package)」をダウンロードします。
今回はinstaller版を使用しません。
※installer版で自動生成される「Synthesia.desktop1」のExecが複雑すぎるため。
「Download Synthesia」からzip版のSynthesia(Synthesia-10.8.zip)をダウンロードして/opt ディレクトリに展開します。
sudo unzip ~/Downloads/Synthesia-10.8.zip -d /opt/
lsコマンドを使うと以下のように表示されます。
ls /opt/Synthesia-10.8/
Synthesia.exe bassmidi.dll readme.html vcruntime140.dll
bass.dll msvcp140.dll vccorlib140.dll win10-midi.dll
TiMidity++を起動
コマンドを用い、TiMidity++をデーモンモードで起動/設定します。
以下のコマンドでTiMidity++を起動/設定し、WineHQ(Synthesia)からのMIDIデータを受け取れるようにします。
timidity -iAD -B2,8 -Os1l -A100 -s 44100 -x'soundfont /usr/share/sounds/sf2/default-GM.sf2 order=1'
WineHQでSynthesiaを起動
コマンドを用い、WineHQでSynthesiaを起動します。
wine /opt/Synthesia-10.8/Synthesia.exe
シェルスクリプトを作成
「TiMidity++起動」→「Synthesia起動」をシェルスクリプトにします。
完成したシェルスクリプトを自動開始させれば、ログイン直後にSynthesiaが立ち上がります。
「サービス・プロセスの起動確認するシェルスクリプト」を参考にして作ったシェルスクリプト2を修正して「play_synthesia.sh」を作成します。
sudo vi /opt/Synthesia-10.8/play_synthesia.sh
#!/bin/bash
ProcessName=timidity
SynthVersion=10.8
MIDIVolume=100
# MIDIVolume=800,100a
# timidity++が起動していない→起動 / 起動している→そのまま次に進む
count=`ps -ef | grep $ProcessName | grep -v grep | wc -l`
if [ $count = 0 ]; then
echo "!!!!!!!!!!!!!!!!!"
echo "$ProcessName is dead."
echo "!!!!!!!!!!!!!!!!!"
timidity -iAD -B2,8 -Os1l -A$MIDIVolume -s 44100 -x'soundfont /usr/share/sounds/sf2/default-GM.sf2 order=1'
else
echo "$ProcessName is alive."
fi
# Synthesiaを起動する
wine /opt/Synthesia-$SynthVersion/Synthesia.exe
作成したファイルを実行可能にします。
sudo chmod 755 /opt/Synthesia-10.8/play_synthesia.sh
完成したシェルスクリプトを実行します。
sh /opt/Synthesia-10.8/play_synthesia.sh
ログイン時に自動開始させるには、
- Linux Mint の場合:「設定」→「自動開始させるアプリ」→「+」→「カスタムコマンド」→
- Ubuntu Studio の場合:「設定」→「セッションと起動」→「自動開始アプリケーション」→「+追加」→「アプリケーションの追加」→「コマンド」→
/opt/Synthesia-10.8/play_synthesia.sh
デスクトップエントリを作成
デスクトップにデスクトップエントリ(シンボリックリンク / ショートカット)を作ります。
あらかじめ「Synthesia.png」を/opt/Synthesia-10.8 に置いてください。
~/Download/ディレクトリにSynthesia.pngがあったとして、
sudo cp ~/Downloads/Synthesia.png /opt/Synthesia-10.8/
vi ~/play_synthesia_sh.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Exec=/opt/Synthesia-10.8/play_synthesia.sh
Name=Synthesia
Comment=start Timidity++ daemon and Synthesia10.8
Icon=/opt/Synthesia-10.8/Synthesia.png
Terminal=true
Categories=Audio;AudioVideo;Midi;
Keywords=Audio;MIDI;ALSA;timidity;Synthesia;
chmod 755 ~/play_synthesia_sh.desktop
mv ~/play_synthesia_sh.desktop ~/Desktop/
さらに、デスクトップのアイコンをランチャーに移動するには
mv ~/Desktop/play_synthesia_sh.desktop ~/.local/share/applications/
おわりに
※省略
-
[Desktop Entry]
Name=Synthesia
Exec=env WINEPREFIX="/home/piano/.wine" wine C:\\users\\Public\\Desktop\\Synthesia.lnk
Type=Application
StartupNotify=true
Path=/home/piano/.wine/dosdevices/c:/Program Files (x86)/Synthesia
Icon=84DD_Synthesia.0
StartupWMClass=synthesia.exe ↩ -
https://qiita.com/johnnystg/items/891ad5e9d85627b37a8e#%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B ↩