如何在 Ubuntu 18.04 上使用 Timidity?
Timidity 在默认存储库中可用sudo apt install timidity
,其中包含一个服务守护进程。但是,这个守护进程似乎有问题,因为 Timidity 不会发出声音,并且service timidity status
在与 pulseaudio 交互时会出现几个错误:
● timidity.service - LSB: start and stop timidity
Loaded: loaded (/etc/init.d/timidity; generated)
Active: active (exited) since Sun 2020-05-10 14:27:02 EDT; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 2407 ExecStop=/etc/init.d/timidity stop (code=exited, status=0/SUCCESS)
Process: 2416 ExecStart=/etc/init.d/timidity start (code=exited, status=0/SUCCESS)
May 10 14:27:02 caius systemd[1]: Starting LSB: start and stop timidity...
May 10 14:27:02 caius timidity[2416]: * Starting TiMidity++ ALSA midi emulation...
May 10 14:27:02 caius timidity[2416]: ...done.
May 10 14:27:02 caius systemd[1]: Started LSB: start and stop timidity.
May 10 14:27:02 caius pulseaudio[2448]: [autospawn] core-util.c: Home directory not accessible: Permission denied
May 10 14:27:02 caius pulseaudio[2448]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 10 14:27:02 caius pulseaudio[2448]: [pulseaudio] main.c: Failed to acquire autospawn lock
如何修复此问题?
答案1
刚刚在 20.04 中尝试了此操作,似乎软件包timidity
不再包含服务文件。我尝试了 kyodake 的一些答案,效果很好,但您不需要任何 sudo!
这也许能解决原始发帖人的问题,因为似乎任何试图运行 timidity 的用户都无法访问 timidity 想要将文件放入的任何主目录(也许该包设置了一个没有主目录的服务用户)。此方法使当前用户成为启动服务的用户,并使用其主目录。
首先,添加一个新文件~/.config/systemd/user/timidity.service
并编辑它以包含 kyodake 的内容:
[Unit]
Description=TiMidity++ Daemon
After=sound.target
[Service]
ExecStart=/usr/bin/timidity -iA -Os
[Install]
WantedBy=default.target
现在您可以像这样简单地启动服务器:
systemctl --user start timidity
并确保它在用户登录时启动,如下所示:
systemctl --user enable timidity
不需要 sudo。
为了最低限度地修复您的实际问题(如果您希望 timidity 在启动时启动并出现在所有用户中);请检查您是否有文件/etc/systemd/system/timidity.service
。如果有,请检查以 开头的行User=
;这将告诉您哪个用户正在尝试启动该服务。假设它说的是User=timidityuser
。
现在您想确定是否timidityuser
有主目录,因此:
grep ^timidityuser: /etc/passwd
返回的最后一个字段是主目录。您可以检查此目录是否存在并具有正确的所有者和权限,也可以像这样创建一个新目录:
sudo usermod -md /home/timidityuser timidityuser
希望有帮助!
答案2
尝试这个:
首先您应该将自己添加到音频组。
sudo gpasswd -a <user> audio
其次安装Freepats,Freepats项目提供了一套仪器样本。
sudo apt update
sudo apt install freepats
第三个使用 Freepats 与 TiMidity 的人:
sudo nano /etc/timidity++/timidity.cfg
在 timidity.cfg 中添加以下行:
soundfont /usr/share/soundfonts/freepats-general-midi.sf2
如果您正在使用 PulseAudio,那么它可能不起作用。
要以守护进程模式启动 TiMidity,可以使用以下命令:
timidity -iA
为此,请在 ~/.config/systemd/user/ 中编写一个 timidity.service 文件,如下所示:
sudo nano /etc/systemd/user/timidity.service
将以下行添加到 timidity.service
[Unit]
Description=TiMidity++ Daemon
After=sound.target
[Service]
ExecStart=/usr/bin/timidity -iA -Os
[Install]
WantedBy=default.target
然后使用以下命令启用该服务:
sudo systemctl --user enable timidity.service
来源:1