I am trying to interact with the PreSonus AudioBox 1818VSL with PyAudio on Win7, but I have problems recording more than two channels (stereo) at a time. The PreSonus driver creates many stereo audio devices (e.g. stereo channels 1 and 2, 3 and 4, etc.) and an 18-channel ASIO device. I can record from any of the stereo devices without any problems. To minimize delay and recording from> 2 channels, I am trying to use an ASIO device.
I use the PyAudio assembly from http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio , which compiled support for ASIO, DS, WMME, WASAPI, WDMKS,
The call pyaudio_handle.is_format_supported()shows that the ASIO device supports 8 to 32-bit data at 44.1, 48 and 96 kHz.
Below is the dictionary returned pa.get_device_info_by_index(32)
{'defaultHighInputLatency': 0.046439909297052155,
'defaultHighOutputLatency': 0.046439909297052155,
'defaultLowInputLatency': 0.046439909297052155,
'defaultLowOutputLatency': 0.046439909297052155,
'defaultSampleRate': 44100.0,
'hostApi': 2L,
'index': 32,
'maxInputChannels': 18L,
'maxOutputChannels': 18L,
'name': u'AudioBox ASIO Driver',
'structVersion': 2L}
Below is the code I used to create the PyAudio input stream. The callback function simply pushes the data into the list and returns pyaudio.paContinueuntil I get the number of samples I want, then it returns pyaudio.paComplete.
pyaudio_handle = pyaudio.PyAudio()
stream = pyaudio_handle.open(
format=pyaudio.get_format_from_width(2,unsigned=False),
channels=4,
rate=48000,
input=True,
frames_per_buffer=256,
input_device_index=32,
stream_callback=pyaudio_stream_callback,
)
Attempting to initialize the ASIO driver with a speed of more than 44.1 kHz causes PyAudio to hang and not return. When initializing 44.1 kHz the following error: IOError: [Errno Unanticipated host error] -9999.
Any help you can allow to resolve this error will be helpful. I would even agree to the proof that ASIO works s> 2 channels in PyAudio when running on Win7. Thank you