WeibelLab / ChronoSense

ChronoSense: a multimodal data capture software for all. OS agnostic, time aware, extensible. Powered by Node.js and Electron.
http://chronosense.ucsd.edu/
GNU General Public License v3.0
3 stars 0 forks source link

Updating stream object to support multichannel audio #52

Open stevenrick opened 2 years ago

stevenrick commented 2 years ago

Currently the application only records a single channel of audio per stream (whether or not video is present and whether or not the device supports more than one channel)

In order to produce more lossless data we should update the way we handle audio constraints to record all available channels (or give the user the ability to record all available channels?)

To verify this can hardcode channelCount: 2, into constraints and will update recording to stereo if supported

Our solution should be device capability aware - so can use something like var microphone = this.#audioContext.createMediaStreamSource(stream); and then microphone.channelCount); in monitorAudio() to get the reported number of channels available.

More information on web audio api documentation available at MDN

stevenrick commented 2 years ago

Adding more details here after exploring with a multichannel (more than 2) audio input device. It seems the basic mediaDevice objects supported by Chrome / Node.js only supports exposing 2-channels. It seems the best route forward would be using something like naudiodon which is a cross-platform library for accessing PortAudio

stevenrick commented 2 years ago

closing #51 because this can address it in parallel link to old code using naudiodon