On 12/07/2020 07:00, Ram Rachum wrote: > The reason I want the second version is that I can then have sounddevice > start playing `output_array` in a separate thread, while it's being > calculated. (Yes, I know about the GIL, I believe that sounddevice > releases it.)
I don't think this is a sound design. I don't know sounddevice, but in similar situations the standard pattern is to allocate a buffer (in this case it can be a numpy array) and pass that to the consumer (soundevice in your case). The consumer then tells the producer (your music synth) when it has to produce more data. At a quick read, it seems that the sounddevice.Stream class allows to apply this pattern https://python-sounddevice.readthedocs.io/en/0.3.15/usage.html#callback-streams This also easily allows your produces function to operate on arrays and not on single elements. Using numpy functions to operate on arrays is going to be more efficient than iterating on the elements in Python. Cheers, Dan _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion