There is no need to modify connect() in Audiostream if you do the following:
Instantiate all possible AudioConnections needed in the project(in the global scope, as usual). Multiple sources to one destination is ok.
In Setup() disconnect all AudioConnections except the ones that will never change, before enabling the audio engine.
In loop() connect and disconnect all you want while still following the connection rules & guidelines.
example:
Code:
#include <Audio.h>
AudioSynthWaveformSine sine4;
AudioSynthWaveformSine sine1;
AudioSynthWaveformSine sine2;
AudioSynthWaveformSine sine3;
AudioMixer4 mixer1;
AudioMixer4 mixer2;
AudioOutputI2S i2s1;
// AudioOutputAnalogStereo dacs1;
AudioConnection patchCord1(sine1, 0, mixer1, 0);
AudioConnection patchCord2(sine2, 0, mixer1, 0);
AudioConnection patchCord3(sine3, 0, mixer1, 0);
AudioConnection patchCord4(sine4, 0, mixer1, 0);
AudioConnection patchCord5(sine4, 0, mixer2, 0);
AudioConnection patchCord50(mixer1, 0, i2s1, 0);
AudioConnection patchCord51(mixer2, 0, i2s1, 1);
// AudioConnection patchCord52(mixer1, 0, dacs1, 0);
// AudioConnection patchCord53(mixer2, 0, dacs1, 1);
AudioControlSGTL5000 sgtl5000_1;
void setup() {
patchCord1.disconnect();
patchCord2.disconnect();
patchCord3.disconnect();
patchCord4.disconnect();
patchCord5.disconnect();
AudioMemory(10);
sgtl5000_1.enable();
sgtl5000_1.volume(0.5);
sine1.frequency(500);
sine1.amplitude(1.0);
sine2.frequency(1000);
sine2.amplitude(1.0);
sine3.frequency(1500);
sine3.amplitude(1.0);
sine4.frequency(2000);
sine4.amplitude(1.0);
}
const uint t = 1250;
void loop() {
patchCord1.connect();
delay(t);
patchCord1.disconnect();
patchCord5.disconnect();
patchCord2.connect();
delay(t);
patchCord2.disconnect();
patchCord3.connect();
delay(t);
patchCord3.disconnect();
patchCord4.connect();
patchCord5.connect();
delay(t);
patchCord4.disconnect();
}