如何在 Ubuntu 18.04 中使用 timidity?

如何在 Ubuntu 18.04 中使用 timidity?

如何在 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

相关内容