belangeo / pyo

Python DSP module
GNU Lesser General Public License v3.0
1.28k stars 130 forks source link

Does not work on mac #229

Open Fraer opened 2 years ago

Fraer commented 2 years ago

On mac with python 3.9.9:

Pyo warning: Portaudio input device `MacBook Pro Microphone` has fewer channels (1) than requested (2).
||PaMacCore (AUHAL)|| Error on line 1301: err='-66748', msg=Unknown Error
Portaudio error in Pa_OpenStream: Internal PortAudio error
Pyo error: From portaudio, Internal PortAudio error
Portaudio error in Pa_CloseStream (pa_deinit): PortAudio not initialized
Portaudio error in Pa_Terminate (pa_deinit): PortAudio not initialized
Pyo error: 
Server not booted.
belangeo commented 2 years ago

Hi,

Try with:

Server(ichnls=1)

Fraer commented 2 years ago

thank you! looks like portaudio was also missing, so i've installed it:

brew install portaudio --HEAD

I'm running the following code:

from pyo import *
pyoServer = Server(ichnls=1).boot()
pyoServer.start()
sf = SfPlayer("/Users/toto/Downloads/sound.wav", speed=2, loop=False).out()
print("ok")

i hear the sound, it's fine but the print("ok") statement is not executed and the following log appears:

||PaMacCore (AUHAL)|| Error on line 2500: err='-50', msg=Unknown Error
||PaMacCore (AUHAL)|| Error on line 2500: err='-50', msg=Unknown Error
antiero commented 2 years ago

I'm getting similar errors. Intel Mac, macOS Monterey, Python 3.8.9.

||PaMacCore (AUHAL)|| Error on line 1316: err='-66748', msg=Unknown Error Portaudio error in Pa_OpenStream: Internal PortAudio error Pyo error: From portaudio, Internal PortAudio error Portaudio error in Pa_CloseStream (pa_deinit): PortAudio not initialized Portaudio error in Pa_Terminate (pa_deinit): PortAudio not initialized Pyo error: Server not booted. Traceback (most recent call last): File "mgen.py", line 220, in <module> main() File "/Users/ant/Library/Python/3.8/lib/python/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/Users/ant/Library/Python/3.8/lib/python/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/Users/ant/Library/Python/3.8/lib/python/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/ant/Library/Python/3.8/lib/python/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "mgen.py", line 163, in main population_fitness = [(genome, fitness(genome, s, num_bars, num_notes, num_steps, pauses, key, scale, root, bpm)) for genome in population] File "mgen.py", line 163, in <listcomp> population_fitness = [(genome, fitness(genome, s, num_bars, num_notes, num_steps, pauses, key, scale, root, bpm)) for genome in population] File "mgen.py", line 78, in fitness m = metronome(bpm) File "mgen.py", line 101, in metronome met = Metro(time=1 / (bpm / 60.0)).play() File "/Users/ant/Library/Python/3.8/lib/python/site-packages/pyo/lib/triggers.py", line 120, in __init__ PyoObject.__init__(self) File "/Users/ant/Library/Python/3.8/lib/python/site-packages/pyo/lib/_core.py", line 1201, in __init__ PyoObjectBase.__init__(self) File "/Users/ant/Library/Python/3.8/lib/python/site-packages/pyo/lib/_core.py", line 889, in __init__ raise PyoServerStateException("The Server must be booted before " pyo.lib._core.PyoServerStateException: The Server must be booted before creating any audio object.

zevaverbach commented 2 years ago

Using Python 3.9, here's a similar error:

In [3]: s = pyo.Server(ichnls=1).boot()
||PaMacCore (AUHAL)|| Error on line 1301: err='-66748', msg=Unknown Error
Portaudio error in Pa_OpenStream: Internal PortAudio error
Pyo error: From portaudio, Internal PortAudio error
Portaudio error in Pa_CloseStream (pa_deinit): PortAudio not initialized
Portaudio error in Pa_Terminate (pa_deinit): PortAudio not initialized
Pyo error: 
Server not booted.
Pyo warning: Portmidi warning: no midi device found!
Portmidi closed.
zevaverbach commented 2 years ago

It looks like there's a related discussion here, unresolved as of today.

I was able to move forward with the most recent posts there, by doing this:

>>> import pyo as p
>>> s = p.Server(audio="coreaudio")
>>> s.boot()
>>> s.start()
>>> sf = p.SfPlayer("sound.aif").out()
eirannejad commented 1 year ago

Same problem here macOS 12.6 (21G115)

This does not run and corrupts CoreAudio. I can't play any song after running this script and must reset sudo killall coreaudiod to get it to go back to normal

s = pyo.Server(audio="coreaudio").boot()
s.start()
a = pyo.Sine(mul=0.01).out()