Next: Look at your network, Previous: Read in and write out a soundfile, Up: Top
You want to output multiple sound files to the audio device on your system all at the same time.
Make a network with SoundFileSources and put all these SoundFileSources inside a Fanout.
To do this, you need a network with SoundFileSources for each of the input sources. You then put all these SoundFileSources inside a Fanout, this will play all the sound files simultaneously.
The output of the Fanout is a stacked array of all the data from the audio files, you need to combine these together using a Sum object.
Finally, you output all of them to an AudioSink
The network will look like:
- Series - Fanout - SoundFileSource - SoundFileSource - SoundFileSource - Sum - AudioSink
The code will look like:
MarSystemManager mng; MarSystem* playbacknet = mng.create("Series", "playbacknet"); MarSystem* fanout = mng.create("Fanout", "fanout"); // Create the SoundFileSources fanout->addMarSystem(mng.create("SoundFileSource", "src1")); fanout->addMarSystem(mng.create("SoundFileSource", "src2")); fanout->addMarSystem(mng.create("SoundFileSource", "src3")); // Assign filenames to the SoundFileSources fanout->updctrl("SoundFileSource/src1/mrs_string/filename",file1); fanout->updctrl("SoundFileSource/src2/mrs_string/filename",file2); fanout->updctrl("SoundFileSource/src3/mrs_string/filename",file3); // Add the fanout to the main network playbacknet->addMarSystem(fanout); // Sum up all of the fanouts playbacknet->addMarSystem(mng.create("Sum", "sum")); // Create the output file which is a SoundFileSink playbacknet->addMarSystem(mng.create("AudioSink", "dest")); playbacknet->updctrl("AudioSink/dest/mrs_bool/initAudio", true); while (!done) { playbacknet->tick(); }