Home Forums Sparkfun MP3 Shield Library Support Forum Introduce sounds or alter the sounds of bank GM1,GM2 in vs1053 MP3 Player Shield Reply To: Introduce sounds or alter the sounds of bank GM1,GM2 in vs1053 MP3 Player Shield


I refer to the Vdsp as the VLSI processor inside the VS1053. There are actually many different flavors of chips with the same DSP core. Which all use the same code base but just different pins and resources.

Yes, the ADA fruit Wave card is not polyphonic as it does not have the DSP power to mix different streams together, it is just the simple ATmega of the Arduino. Where the VS1053 is a coprocessor, with its own DSP just for audio processing, giving it much more abilities. I read in the VS1053’s data sheet section 8.2.9 that

The maximum polyphony is 64, the maximum sustained polyphony is 40.
Actual polyphony depends on the internal clock rate

That said polyphony is about the simultaneous playing of different notes. Where the VS1053 interfaces to the Vdsp is the single SPI interface. This limits it ability to single stream of data. Which this stream typically comes from, but not limited to, the SdCard. Or in other words it can only support one stream at a time.


But the VS1053 also has a Command path to the VDSP outside of the Data Stream path. There are two chip selects. XCS (command) and XDCS (data) for the single SPI. As a result there is a way to play PCM (and only PCM) encoded data through the command channel while playing another format through the data channel. Whereas this is not playing two simultaneous MIDI files at the same time. Rather it is possible to play a MID(or MP3, etc…) and PCM at the same time, where the Vdsp will mix these together before the analog output.

And we have not supported this feature in this library. That would require a significant redesign.

Since the VS1053 does not support two simultaneous streams of MIDI encoded files, but the Vdsp will support up to 64 simultaneous notes, it should be possible to read both MID files and send their notes mixed into the single RealTime Midi commands, at their appropriate times. This would require the Arduino to understand the MID file and send the corresponding MIDI command at the corresponding time as noted in the file and move on to the next MIDI command in both files. A lot of work. But I suspect possible.


That all said looking at the WaveHC, I see that it only supports WAV and not MIDI…