Building a custom firmware


I’m really interested in developing a custom firmware for the Ambika. I have some feature ideas that I would love to integrate. Unfortunately I never developed for a microprocessor, so I have a few questions:

  1. I often read in Shruthi threads, that there isn’t much space left for adding new software features. Is this also the case for ambika? When I add new features/experiment with the firmware, how can I find out, how much space I have left?
  2. Also how much processor performance is left? Is the ambika already using the full processor?
  3. I’m not the biggest fan of text displays. Would it be possible to add a graphical, monochrome display? Or would it need a lot of hardware modifications? I’m aware that it would need a lot of rewrite of the code, but I would love to add a graphical representation of the adsr envelopes (and some other things).
  4. Do you have any tips, how to start? :slight_smile:

Things I would like to change:

  1. Removing the performance page (i never use that) and instead adding a sequencer that works like the midialf (but with less features)
  2. Adding a Chord memory
  3. Poly glide/portamento
  4. Routing of incoming notes between parts. - Take a look at the Vermona Perfourmer: You have 4 synths (ambika=parts) and you can either play them unisono, alternating, poly, etc.)
  5. Improving/changing & simplifying some pages

All of you questions can be answered by a look in the Sourcode itself. If this code doesnt make sense to you and you get your questions answered yourselves… well, without any offense … how will you manage to rewrite it ? Making a Synth out of a ATmega isnt an easy task, so you will need intimate knowledge of the microprocessor, and rewriting a Firmware that stretches the Platform to the max isnt quite a beginners project u guess. For your Poly Glide you will need to alter the firmware of the Voicecards as well (as far as i understand the Ambika), which are even more tricky…

I can read the code and it makes sense (most of the parts) :wink: I forgot to mention that I’m a objective-c developer.

But the source code isn’t really answering my questions… :smiley:

1. There’s 3k on the voicecard ; and 4k on the main firmware. “make size” gives you the size of the firmware. Limit is 60k for the controller (motherboard) and 31k for the voicecard.

2. The voicecards use 80 to 99% of the CPU depending on the oscillator algorithm used. The main processor uses 80% of its CPU.

3. Maybe through the SPI port (“port 7”) but don’t expect a super fancy FPS :slight_smile:

4. Learn how to flash prebuilt .hex files. Install the toolchain and get the code to build. Start by simple changes - like adding a menu, a page, or rewriting an oscillator algorithm…