Pyo server.boot() возвращает ошибку в Ubuntu 14.04
Я установил pyo на Ubuntu 14.04 без jack и запустил Python 2.7.Я следовал инструкциям по установке на основе Debian, написанным в pyo wiki. Это был код, который я использовал (он находится на вводной странице Pyo):
from pyo import *
s = Server().boot()
s.start()
a = Sine(mul=0.01).out()
И получил в результате:
pyo version 0.6.8 (uses single precision)
ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1514
Expression 'ValidateParameters( inputParameters, hostApi, StreamDirection_In )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2818
portaudio error in Pa_OpenStream: Invalid number of channels
Portaudio error: Invalid number of channels
Server not booted.
The Server must be booted!
Traceback (most recent call last):
File "/host/Python/Synth/synther.py", line 4, in <module>
a = Sine(mul=0.01).out()
File "/usr/lib/python2.7/dist-packages/pyolib/generators.py", line 58, in __init__
PyoObject.__init__(self, mul, add)
File "/usr/lib/python2.7/dist-packages/pyolib/_core.py", line 376, in __init__
PyoObjectBase.__init__(self)
File "/usr/lib/python2.7/dist-packages/pyolib/_core.py", line 262, in __init__
raise PyoServerStateException("The Server must be booted before creating any audio object.")
pyolib._core.PyoServerStateException: The Server must be booted before creating any audio object.
PS: не заинтересован в использовании гнезда, уже есть проблемы с ним.
0 ответов
Получил, что работает на Ubuntu 20.04
После нескольких попыток и большого количества разочарований... сработало следующее:
sudo apt install python3-pyo
и тест:
#/usr/bin/env python3
from pyo import *
s = Server()
s.boot()
s.start()
a = Sine(freq=440, mul=0.5)
a.out()
time.sleep(2)
a.stop()
s.stop()
при желании производит 2-секундный синусоидальный звук с частотой 440 Гц. Может понадобилась перезагрузка.
Если программа использует звук при запуске теста, например, Chromium воспроизводит видео YouTube или VLC воспроизводит музыку, тогда она не работает с этим исключением, поэтому обязательно приостановите / закройте все такие приложения.
Еще одна вещь, которую стоит сделать:
sudo apt install python3-wxgtk4.0
в противном случае pyo будет предупреждать об отсутствующих виджетах wxWidgets каждый раз. Однако я не думаю, что это приведет к провалу пробега.
Выше
sudo apt install python3-pyo
установить pyo 1.0.0 и все бинарные зависимости, необходимые для работы, зависимость определяется следующим образом:
apt-cache depends python3-pyo
является:
python3-pyo
Depends: libc6
|Depends: libjack-jackd2-0
Depends: <libjack-0.125>
libjack-jackd2-0
libjack0
Depends: liblo7
Depends: libportaudio2
Depends: libportmidi0
Depends: libsndfile1
Depends: python3
Depends: python3
Depends: <python3:any>
python3:i386
python3
Recommends: python3-tk
Recommends: jackd2
Теперь, если я попытаюсь обновить pyo с помощью:
python -m pip instal --user pyo==1.0.X
который имеет приоритет над дистрибутивом 1.0.0, я получаю следующие результаты:
1.0.0: работает
1.0.1: работает
1.0.2: взрывается с ошибкой:
ALSA lib conf.c:3558:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (/usr/lib/alsa-lib/libasound_module_conf_pulse.so: libasound_module_conf_pulse.so: cannot open shared object file: No such file or directory)
Но тогда я
locate libasound_module_conf_pulse.so
в моей системе и работайте с:sudo ln -s /usr/lib/x86_64-linux-gnu/alsa-lib /usr/lib/alsa-lib
и тогда это работает.
Я также сообщил об этом по адресу: https://github.com/belangeo/pyo/issues/200
1.0.3: то же
Еще одна вещь, которую стоит попробовать, - это воспроизведение звука в pyo и python:
from pyo import *
print("Default input device: %i" % pa_get_default_input())
print("Default output device: %i" % pa_get_default_output())
print("Audio host APIS:")
pa_list_host_apis()
pa_list_devices()
а затем попробуйте выбрать конкретное устройство с помощью:
s = Server()
s.setOutputDevice(0)
s.boot()
Но мне не нужно было этого делать, чтобы он заработал после установки
python3-pyo
.
https://github.com/belangeo/pyo/issues/200#issuecomment-734958205 объясняет, как заставить все это работать с Джеком.