Pyo server.boot() 在 Ubuntu 14.04 上失败并显示 pyolib._core.PyoServerStateException [英] Pyo server.boot() fails with pyolib._core.PyoServerStateException on Ubuntu 14.04

查看:92
本文介绍了Pyo server.boot() 在 Ubuntu 14.04 上失败并显示 pyolib._core.PyoServerStateException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在没有插孔的情况下在 Ubuntu 14.04 上安装了 pyo 并运行 Python 2.7.我遵循了 基于 Debian 的安装说明 写在 pyo wiki 中.这是我使用的代码(位于 pyo 介绍页面):>

I installed pyo on Ubuntu 14.04 without jack and running Python 2.7.I followed the Debian-based installing instructions written in pyo wiki. This was the code i used (it's in the pyo introduction page):

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:对使用 jack 不感兴趣,已经有问题了.

PS: Not interested to using jack, already got problems with it.

推荐答案

让它在 Ubuntu 20.04 上运行

在尝试了几件事并经历了很多挫折之后……以下有效:

After trying several things and a lot of frustration... the following worked:

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 秒 440Hz 正弦声音.也许需要重新启动.

produces a 2 second 440Hz sine sound as desired. Maybe a reboot was needed.

如果程序在您启动测试时正在使用音频,例如Chromium 播放 YouTube 视频或 VLC 播放音乐,然后它会因该异常而失败,因此请确保暂停/关闭所有此类应用程序.

If program is using the audio when you launch the test, e.g. Chromium playing an YouTube video or VLC playing music, then it fails with that exception, so make sure to pausing/close all such applications.

另一件值得做的事情是:

Another thing worth doing is:

sudo apt install python3-wxgtk4.0

否则pyo每次都会警告丢失的wxWidgets.但是,我认为这不会导致运行失败.

otherwise pyo keeps warning about the missing wxWidgets every single time. I don't think it makes the run fail however.

以上sudo apt install python3-pyo 安装pyo 1.0.0,以及它工作所需的所有二进制依赖,依赖给出:

The above sudo apt install python3-pyo install pyo 1.0.0, and all the binary dependencies it needs to work, the dependency given by:

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:

Now, I if I try to upgrade pyo with:

python -m pip instal --user pyo==1.0.X

优先于发行版提供的 1.0.0,我得到以下结果:

which takes precedence over the distro provided 1.0.0, I get the following results:

  • 1.0.0:有效

  • 1.0.0: works

1.0.1:有效

1.0.2:因错误而爆炸:

1.0.2: blows up with an error:

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)

但后来我在我的系统上找到 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 中播放声音:

Another thing worth trying is from Playing sound in pyo and 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()

然后尝试选择特定设备:

and then try to select a specific device with:

s = Server()
s.setOutputDevice(0)
s.boot()

但是在安装 python3-pyo 后,我不需要这样做来让它工作.

But I didn't need to do that to get it working after installing python3-pyo.

https://github.com/belangeo/pyo/issues/200#issuecomment-734958205 解释了如何与 Jack 合作.

https://github.com/belangeo/pyo/issues/200#issuecomment-734958205 explains how to get it all working with Jack.

这篇关于Pyo server.boot() 在 Ubuntu 14.04 上失败并显示 pyolib._core.PyoServerStateException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆