There’s this genius, ultra simple 16 voice, fully multitimbral, LPC1343 based synth called Goom concieved by Mark Owen:
It is written in assembler…so are there any assembler mad men out there that could port it to the MB core? It is open source / Mark has granted permission for it to be ported.
Making it work on the MB core would be much easier for idiots like me to assemble (no SMD) and leave some nice processor headroom for things like LFOs / noise / filtermodes to be added.
If this seems like an outrageous / idiotic question please forgive me as I’m a microcontroller know-nothing…
If you do get a chance to look at it, may I send you the version Mark sent me, that makes goom fully controllable via MIDI? i.e. in the goom software downloadable from his website, MIDI channel 1 is reserved for the analog / panel controls. Gruss aus Berlin, Justin
I expect that somebody else takes over the maintenance of this code, especially whenever Marks is doing updates.
The code is taken from his website, it seems that sound parameters can be updated via Chn1 - at least I get some sounds when setting some CCs and playing notes.
I tried this out yesterday with success. You could run this on a STM32F4 discovery board without the Core board and control it via USB MIDI to test it out.
OK. Got a st32f4 discovery board, installed the bootloader and I can see it in MIOS studio…
is there a step by step for dummies on what to do next?
(i.e. how to download the code Thorsten posted and put it on the board so I can send it some MIDI notes/CC messages and hear something from the output)
I think so! I am a no-good programmer, so I unfortunately I can’t do anything like that. I’d be interested in adding a small mod matrix/ LFO / filter modes with all that overhead. The F4 also opens up the possibility for floating point calculations, but I think that would involve a major rewrite.
If possible could someone with write access change the following in the code Thorsten posted?
Mark metioned that since Thorsten brought the sampling rate up to 48kHz, for the tuning to be correct (A=440hz), the line in setfreqvol() and two other places:
u-=287; // constant to give correct tuning for sample rate: log((72e6/2048)/(440*2^-0.75)/128)/log(2)*4096 for A=440Hz
should be:
u-=2127; // constant to give correct tuning for sample rate: log((48000)/(440*2^-0.75)/128)/log(2)*4096 for A=440Hz
He also mentioned for Goom to be reliable with 32 voices it would probably have to be brought back down to the original (LPC 72Mhz/2048 =) ~35.1kHz range and recommended simply building a second Goom if 16 additional voices are required.
I adapted the sample rate so that it matches with the original project.
This is probably the better way anyhow, e.g. to get equal envelope slope times.
Currently the waveform calculation takes 35 uS on a STM32F4, it’s triggered each 113 uS, which means that the CPU is only loaded by ca. 30%
However, I’m not planning to extend the synth from my side, I only did the adaption in order to allow somebody else to take this as a basis for further developments.
A prebuild binary is now on the server as well (-> release/STM32F407VG/project.hex)
You can download the files with a subversion client (google for good clients which are provided for your preferred OS)
Once you installed the client, take following URL: svn://svnmios.midibox.org/mios32
Alternatively check this page how to install the toolchain, so that you are able to build the firmware by yourself: http://www.ucapps.de/mios32_c.html
So do I understand correctly that you changed the sampling rate to ~35.1kHz? (EDIT: oops just saw in the comments that this *is* the case)
If that’s the case I might put the newer build on the second discovery board I bought and do a sound comparison…
30% CPU load is a nice low number…
I understand about someone else extending the code… maybe that could be me (that damn medieninformatik degree should be good for something, right?) but I’m not very confident in my programming /trouble shooting skills. This is going to sound super nerdy but this is all an over obsessed fantasy come true for me. Size, sound, cost and ease of programming (both ‘good’ and ‘bad’ sounds) are all excellent.
Next tests will be through a stereo analog filter to see if I can chop an expensive analog down to size with the goom.