Как использовать Timidity в Ubuntu 18.04?

Вопрос или проблема

Как использовать Timidity на Ubuntu 18.04?

Timidity доступен в стандартном репозитории через sudo apt install timidity, который включает в себя демон-сервис. Тем не менее, этот демон, похоже, не работает из коробки, так как Timidity не производит звук, а service timidity status показывает несколько ошибок при взаимодействии с pulseaudio:

● timidity.service - LSB: запуск и остановка timidity
   Загружен: загружен (/etc/init.d/timidity; сгенерирован)
   Активен: активен (вышел) с Вс 2020-05-10 14:27:02 EDT; 1с назад
     Документы: man:systemd-sysv-generator(8)
  Процесс: 2407 ExecStop=/etc/init.d/timidity stop (код=вышел, статус=0/УСПЕХ)
  Процесс: 2416 ExecStart=/etc/init.d/timidity start (код=вышел, статус=0/УСПЕХ)

10 мая 14:27:02 caius systemd[1]: Запуск LSB: запуск и остановка timidity...
10 мая 14:27:02 caius timidity[2416]:  * Запуск эмуляции midi TiMidity++ ALSA...
10 мая 14:27:02 caius timidity[2416]:    ...готово.
10 мая 14:27:02 caius systemd[1]: Запущен LSB: запуск и остановка timidity.
10 мая 14:27:02 caius pulseaudio[2448]: [autospawn] core-util.c: Домашний каталог недоступен: Отказано в разрешении
10 мая 14:27:02 caius pulseaudio[2448]: [autospawn] lock-autospawn.c: Не удалось получить доступ к блокировке автоспауна.
10 мая 14:27:02 caius pulseaudio[2448]: [pulseaudio] main.c: Не удалось получить блокировку автоспауна

Как это исправить?

Просто попробовал это на 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

Надеюсь, это поможет!

Попробуйте это:

Сначала вы должны добавить себя в группу аудио.

sudo gpasswd -a  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

Для этого создайте файл timidity.service в ~/.config/systemd/user/ вот так:

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

Ответ или решение

Чтобы использовать TiMidity на Ubuntu 18.04, выполните следующие шаги:

Установка TiMidity

  1. Откройте терминал и выполните команду для установки TiMidity из репозитория:

    sudo apt update
    sudo apt install timidity
  2. Убедитесь, что вы добавлены в аудиогруппу, чтобы избежать проблем с правами доступа:

    sudo gpasswd -a <ваше_имя_пользователя> audio

Установка Freepats

Для воспроизведения MIDI файлов с помощью TiMidity, рекомендуется установить Freepats, который предоставляет набор звуковых инструментов:

sudo apt install freepats

Настройка конфигурации TiMidity

  1. Откройте конфигурационный файл TiMidity для редактирования:

    sudo nano /etc/timidity/timidity.cfg
  2. Добавьте следующую строку в файл конфигурации, указывающую на использование звукового шрифта Freepats:

    soundfont /usr/share/soundfonts/freepats-general-midi.sf2

Запуск TiMidity

Временный запуск в режиме демона

Для однократного запуска TiMidity используйте команду:

timidity -iA

Настройка systemd для автоматического запуска

Чтобы TiMidity автоматически запускался при входе в систему, создайте файл службы systemd для вашего пользователя.

  1. Создайте и отредактируйте файл ~/.config/systemd/user/timidity.service:

    nano ~/.config/systemd/user/timidity.service
  2. Добавьте в файл следующий контент:

    [Unit]
    Description=TiMidity++ Daemon
    After=sound.target
    
    [Service]
    ExecStart=/usr/bin/timidity -iA -Os
    
    [Install]
    WantedBy=default.target
  3. Активируйте службу так, чтобы она запускалась при входе в систему:

    systemctl --user enable timidity
  4. Запустите службу:

    systemctl --user start timidity

Устранение проблем с правами доступа

Если у вас возникают ошибки, связанные с Pulseaudio и правами доступа, такие как "Home directory not accessible: Permission denied", возможно, проблема заключается в том, что служба попыталась запуститься от имени пользователя, не имеющего прав доступа к своему домашнему каталогу.

  1. Проверьте, какое имя пользователя используется для запуска службы:

    cat /etc/systemd/system/timidity.service | grep User=
  2. Убедитесь, что у этого пользователя есть домашний каталог. Если его нет, создайте его, используя команду (замените <имя_пользователя> на соответствующее имя):

    sudo usermod -md /home/<имя_пользователя> <имя_пользователя>

Теперь TiMidity должно корректно работать на Ubuntu 18.04, и вы сможете воспроизводить MIDI-файлы с использованием SoundFont от Freepats. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...