【问题标题】:Playing sound in pyo and python在pyo和python中播放声音
【发布时间】:2016-03-06 12:50:01
【问题描述】:

我正在尝试使用 python 的pyo。我使用主页上的这些命令为 ubuntu 安装了 pyo:

sudo apt-get install libjack-jackd2-dev libportmidi-dev portaudio19-dev liblo-dev
sudo apt-get install libsndfile-dev python-dev python-tk
sudo apt-get install python-imaging-tk python-wxgtk3.0
git clone https://github.com/belangeo/pyo.git
cd pyo
sudo python setup.py install --install-layout=deb --use-jack --use-double

但是,当我尝试播放声音的第一个示例时:

>>> from pyo import *
>>> s = Server().boot()
>>> s.start()
>>> sf = SfPlayer("path/to/your/sound.aif", speed=1, loop=True).out()

我收到以下错误:

>>> from pyo import *
pyo version 0.7.9 (uses single precision)

>>> s = Server().boot()
ALSA lib pcm_dsnoop.c:614:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1024:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1024:(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.

有人可以帮忙吗? PS:我正在运行 ubuntu 15.10

【问题讨论】:

    标签: python-2.7 ubuntu pyo


    【解决方案1】:

    第 1 步。您应该列出您的音频硬件:

    from pyo import *
    
    print("Audio host APIS:")
    pa_list_host_apis()
    pa_list_devices()
    print("Default input device: %i" % pa_get_default_input())
    print("Default output device: %i" % pa_get_default_output())
    

    在我的系统上结果是:

    Audio host APIS:
    index: 0, id: 8, name: ALSA, num devices: 10, default in: 9, default out: 9
    index: 1, id: 7, name: OSS, num devices: 0, default in: -1, default out: -1
    AUDIO devices:
    0: OUT, name: HDA Intel HDMI: 0 (hw:0,3), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    1: OUT, name: HDA Intel HDMI: 1 (hw:0,7), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    2: OUT, name: HDA Intel HDMI: 2 (hw:0,8), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    3: OUT, name: HDA Intel HDMI: 3 (hw:0,9), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    4: OUT, name: HDA Intel HDMI: 4 (hw:0,10), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    5: IN, name: HDA Intel PCH: CS4208 Analog (hw:1,0), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    6: OUT, name: HDA Intel PCH: CS4208 Digital (hw:1,1), host api index: 0, default sr: 44100 Hz, latency: 0.005805 s
    7: OUT, name: hdmi, host api index: , default sr: 44100 Hz, latency: 0.005805 s
    8: IN, name: pulse, host api index: 0, default sr: 44100 Hz, latency: 0.008707 s
    8: OUT, name: pulse, host api index: 0, default sr: 44100 Hz, latency: 0.008707 s
    9: IN, name: default, host api index: 0, default sr: 44100 Hz, latency: 0.008707 s
    9: OUT, name: default, host api index: 0, default sr: 44100 Hz, latency: 0.008707 s
    Default input device: 9
    Default output device: 9
    

    第 2 步。选择首选设备。在我的情况下,设备 9 没问题。

    from pyo import *
    
    s = Server(duplex=0)
    s.setOutputDevice(9) # Use device from the previous step
    s.boot()
    s.start()
    # Try to play sound
    a = Sine(mul=0.01).out()
    

    【讨论】:

      【解决方案2】:

      可以在 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 秒 440Hz 的正弦波。可能需要重新启动。

      Ubuntu 软件包必须安装一些缺少的二进制依赖项,否则 pyo 会抛出 PyoServerStateException

      更多详情请访问:Pyo server.boot() fails with pyolib._core.PyoServerStateException on Ubuntu 14.04

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多