5

ジャックなしでUbuntu 14.04にpyoをインストールし、Python 2.7を実行しました。pyo wikiに書かれているDebianベースのインストール手順に従いました。これは私が使用したコードです(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: ジャックの使用には興味がなく、すでに問題が発生しています。

4

1 に答える 1

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 秒間の 440Hz サイン サウンドを生成します。再起動が必要だったのかもしれません。

テストの起動時にプログラムがオーディオを使用している場合 (例: Chromium が YouTube ビデオを再生している、または VLC が音楽を再生している)、その例外で失敗するため、そのようなアプリケーションをすべて一時停止/終了してください。

もう 1 つの価値のあることは次のとおりです。

sudo apt install python3-wxgtk4.0

そうしないと、pyo は毎回欠落している wxWidgets について警告し続けます。ただし、実行が失敗するとは思いません。

上記はsudo apt install python3-pyopyo 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: 同じ

試してみる価値のあるもう 1 つのことは、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()

次に、次の方法で特定のデバイスを選択してみてください。

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

しかし、インストール後に機能させるためにそれを行う必要はありませんでしたpython3-pyo

https://github.com/belangeo/pyo/issues/200#issuecomment-734958205では、Jack ですべてを機能させる方法について説明しています。

于 2020-11-22T23:08:07.843 に答える