Imagine you are with a friend and each of you can choose to listen to any of 40 unique sounds (sources). After each of you select the sounds you want to hear, you separate and walk along a wall which has 64 equally spaced speakers. As you walk, only the speaker nearest you plays only the sounds you chose. If you and your friend pass each other, at the moment of passing, you both hear the sounds each of you chose. Essentially, you and your friend each have unique IDs which sensors (64 total: one per speaker) can detect to correlate the sounds your chose and play them where you are. A microprocessor (Arduino variant) uses the sensor input to determine which speakers should play which inputs. The microprocessor sends OSC/MIDI/MMQT messages to Usine Hollyhock to control the audio routing matrix.
Attached are images depicting the proposed setup. Note that as the sensors track specific objects (people), you (red) will only hear purple and pink sounds while your friend (blue) will only hear brown and orange sounds, unless you are in the same area - in which you both would hear each others chosen sounds. This is a simplified example as there could be up to 16 unique people and they could chose to hear from any combination of 40 sound sources. Also note that in addition to a 16x64 audio matrix, an input mixer is used to combine the selected sounds into 16 channels (matrix columns) and an output mixer is used to sum all of the sounds into each of the 64 outputs (matrix rows).
Audio path: Analog audio sources>ADC soundcard inputs>Input mixer>Routing matrix>Output mixer>DAC outputs>Amplifiers>Speakers
Sources: Duplex sound card (40 inputs)
Sensors: ID based (64 sensors)
Microprocessor: ESP32 (for sensors, algorithm, and sending OSC/MIDI/MMQT messages)
Outputs: Duplex sound card (64 channels/speakers)
VST host: Usine Hollyhock
Communication: either OSC/MIDI/MMQT
As Usine Hollyhock has mixing, matrixes with varying audio levels, and is compatible with several commication protocols, it seems to be the ideal audio software for my application. However, to be sure, I have several questions:
1. The users select the desired inputs manually, but the audio matrix routing is automated. Can the UH audio matrix be automated so the channels selected are controlled via OSC/MIDI/MMQT messages from a microcontroller?
2. As the outputs (speakers) are equally spaced in a line - the goal is for the sound to transition smoothly from one speaker to the adjacent speaker as people move. When changing channels in the audio matrix, can the transition from one speaker (attenuation) to the next (amplification) be done gradually (controllable), similar to panning laws?
3. If I added 8 subwoofers (one for every 8 speakers) using LP filter for 8 additional channels (64 fullrange = 8 subwoofer=72 channels), would this exceed UH channel capacity?
4. If additional VST plugins (2 or 3) were used on each of the 16 channels (vertical columns in audio matrix) would this be problematic for UH or is this simply dependent on host computer CPU/RAM?
5. Is anyone aware of any threads/tutorial on using OSC/MIDI/MMQT commands to control an UH audio matrix?
6. With duplex sound cards, can UH input from one sound card and output to a different one? When connecting my duplex soundcards to Plogue Bidule, I can only input and output through the same sound card. I'm not sure if this is a duplex sound card limitation or if this is a Plogue Bidule limitation.
7. Am I missing anything or is there some reason this implementation will not work with UH?
I have all of the hardware necessary to test a simplified setup with less channels first (8 inputs/8 outputs). The only anticipated challenging part is controlling the audio matrix with OSC/MIDI/MMQT commands (and learning the UH interface
Thank-you for any insight!
