You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SoundCard has been extremely helpful in running hearing experiments in our lab. MacOS (since BigSur) and some Linux variants are unhappy with the implementation of the cffi callbacks, in that memory protection disallows these callbacks. Any call to soundcard.default_speaker().play results in the following error:
File ~/miniconda3/lib/python3.10/site-packages/soundcard/coreaudio.py:322, in _Player.__enter__(self)
318 def __enter__(self):
319 self._queue = collections.deque()
321 @_ffi.callback("AURenderCallback")
--> 322 def render_callback(userdata, actionflags, timestamp,
323 busnumber, numframes, bufferlist):
324 for bufferidx in range(bufferlist.mNumberBuffers):
325 dest = bufferlist.mBuffers[bufferidx]
MemoryError: Cannot allocate write+execute memory for ffi.callback(). You might be running on a system that prevents this. For more information, see https://cffi.readthedocs.io/en/latest/using.html#callbacks
The suggested solution is to refactor the code so that it does not use ffi.callback(). The new callback style seems easy enough (using another decorator @ffi.def_extern()), but a change to the builder script is required, and I don't know what that is...
Would you be able to have a look at that? I'm happy to help in any way I can if you point me in the right direction.
Thanks for your work on this module and on SoundFile! Both have been super helpful.
The text was updated successfully, but these errors were encountered:
Interesting! I was not aware of that. Thank you for your analysis!
To tell you the truth, I don't have much time to invest into Open Source these days. So I'd be super grateful if you could take a stab at implementing the fix yourself. I'll help you as much as I can, but I only have a scant few hours a week available for things like this.
Hi Bastian,
SoundCard has been extremely helpful in running hearing experiments in our lab. MacOS (since BigSur) and some Linux variants are unhappy with the implementation of the cffi callbacks, in that memory protection disallows these callbacks. Any call to
soundcard.default_speaker().play
results in the following error:The suggested solution is to refactor the code so that it does not use ffi.callback(). The new callback style seems easy enough (using another decorator
@ffi.def_extern()
), but a change to the builder script is required, and I don't know what that is...Would you be able to have a look at that? I'm happy to help in any way I can if you point me in the right direction.
Thanks for your work on this module and on SoundFile! Both have been super helpful.
The text was updated successfully, but these errors were encountered: