Hello Propeller musicians
I have worked on a Propeller music synthesizer, and will present here my result.
The goal was to have a synthesizer object which is good enough to play
MIDI files. For that you need a synth with min. 24 voices and a GM1 soundset
(General-MIDI soundset) with 128 different instrumental sounds and a drum
sound set (another 46 sounds).
Normally such a synthesizer works with Sound samples, but this is not possible
with the 32k RAM of the Propeller. So I designed a voice architecture, with
2 oscillators and PhaseModulation synthesis (FM like). See attachement 1. I was
surprised, how many different sounds this relatively simple arrangement, can produce.
Only 10 parameter bytes to define a sound are necessary. You get also a lot of
noise sounds, thanks to the Feedback parameter (good for drums).
Because the Propeller has no hardware multiplier, I use only 1 multiplication with
7*32 bit for the DCA, and all other attenuators are done with single right shifts.
At the end I got a Spin object, which can produce 10 voices in 1 cog, or 20 voices in
2 cogs. This is quite a bit under 24 voices, but the lack of voices is mostly not
noticeable. More noticeable is the missing pitch bender support, so some MIDI files
can produce odd notes from time to time.
Supported are the volume and panorama controller, thats why I recommend a stereo output.
It was a hard work to find the parameters for all this sounds, and many are still not
The Interface methodes of the Synthesizer object are easy to use and takes direct the
MIDI values for Note, Dynamic, Volume and so on. It should not be hard to make a
MIDI synthesizer expander, with a Propeller and a MIDI input.
Included in the ZIP is a MIDI player demo, which plays a list of '*.mid' files (5 are
included). For that you need an SD card. The MIDI player reads the MIDI data direct
from SD card, without buffering in RAM, therefore the MIDI files must be in Format 0
(all tracks mixed down to one). Copy the midi files first to the SD card, and set the
SD card basepin and your Audio output pins in the CON section of the demo, before you
start the demo.
Most MIDI files, you find on the NET are in Format 1, so I have used the software
WaveMaker III to convert the files (the Edit function lets you save a file in Format 0).
If somebody knows a better (free) Tool for that, I like to here it, because I have some
files which are to big for WaveMaker.
Listen to the music, and enjoy