SWHear: input_device_index not used in stream_start
In SWHear.py, there is possibility to set the device by id in constructor/init. This id is verified (valid_input_devices function). Actually half of this class deals with selecting the right audio source. Finally, in stream_start, the following parameter to self.p.open() is missing:
input_device_index=self.device
...leading to opening the default (?) audio device, not the one specified.
So I suggest the following change in swhear.py:
replace self.stream=self.p.open(format=pyaudio.paInt16,channels=1, rate=self.rate,input=True,frames_per_buffer=self.chunk)
with self.stream=self.p.open(format=pyaudio.paInt16,channels=1, rate=self.rate,input=True,frames_per_buffer=self.chunk, input_device_index=self.device)
in line 146ff.
Btw. thanks for providing the audio/fft/graph sample. It is a nice starting point for visualizing the data captured by my "analog accelerometer connected to usb sound card" setup
@TimeTravel-0 Thanks for bringing this to my attention! (albeit delayed attention)
To restate the problem, the sound card test function opens the stream using input_device_index:
https://github.com/swharden/Python-GUI-examples/blob/c8dd0348d757eb47055488f65757676374cbd52d/2016-07-37_qt_audio_monitor/SWHear.py#L63-L65
... but when the card is actually opened for the main program, input_device_index is not defined:
https://github.com/swharden/Python-GUI-examples/blob/c8dd0348d757eb47055488f65757676374cbd52d/2016-07-37_qt_audio_monitor/SWHear.py#L146-L147
I'm about to rewrite this file, so when I do I will fix this issue by using a method to open the stream which returns the stream itself. This way there will only be one open() line in the program. I'll close this ticket when it's resolved.