Ambika Firmware Mods (Ambika Live!)

Hey guys,

After finally getting this compiling business sorted, I’ve added my first round of mods so thought I’d share.I haven’t got my head around Github properly yet, but I’ll move this there eventually (someone want to help me?).

Github Repo has arrived.

It’s just a few tweaks on top of the awesome YAM firmware (thanks Bjarne!)

Changes:

Repeatedly pressing buttons for ENV/LFO and MOD pages now cycles through slots.

  • Makes for muscle memory access to what you’re after quickly. e.g (double click for LFO2)

Turbo patch name editing!

  • Can now press A,a or 1 to jump to those characters, insert space, or move cursor with buttons.
  • Super quick 2 handed name editing!
  • ( A | a | 1 | _ | <- | -> save | exit)

Solo polyphony mode:

  • Same as mono but only uses a single voice. Great if you designed a patch for a single voice (legato/glide) but want to load it onto a part that has multiple voices assigned and don’t want the unison/stacked sound.

Arp Latch Mode:

  • Acts like the arp latch on Microkorg. Pressing a key once triggers note on, a second time for note off.

Optional CC Maps (pref page 2)

  • Can choose between Ambika standard, Shruthi XT, and Novation Launchkey CC assignments (more to come)
  • Ideally these would be loadable from SDcard, but the only way I can think to fit them would be to use the boot loader to overwrite CC maps in progmem which is beyond my skills :frowning:

Work in progress…

Launchkey integration!

  • USB host for Launchkey via Arduino micro+micro USB Host via port 7 for connecting Launchkey directly to the Ambika.
  • Buss power the Arduino micro+Launchkey (might need regulator upgrade on ambika???)
  • Launchkey Sequencer mode: RGB pads will show sequence ‘playhead’ with one color, and knobs will edit either note, seq1 or seq2 depending on mode. Idle pads will show other colors whose intensity will represent the current sequencer values.
  • (‘Launchkey Seq’ mode is already in prefs page 2, but only shows the playhead now)

Source Code: Macros for enabling/disabling various functions to free up space temporarily to mess around.

It seems stable to me, but as I have no idea how to monitor SRAM, I don’t know for sure.

@pichenettes did you hide any functions for determining free RAM in there???

3 Likes

no github?

First paragraph.

I like the solo idea a lot, and I will probably want to port it to YAM if you get the GitHub repository up.

Cheers

make -f controller/makefile ramsize

Must be under 4096 - 128 [some arbitrary margin for the stack]

1 Like

Those sound like awesome mods. Can’t wait to try them out. Especially the turbo patch naming.

I can help you set up the repository

Thanks, that is extremely helpful!

Ok guys GitHub is up here https://github.com/TijuanaKez/ambika (thanks @eutopiatetheory for the help forking a fork!)

Added features:

‘Drum’ modulation destinations.

  • Same as Osc1 and Osc2 destinations, but with +/-32 semitones range for wider pitch envelopes.
  • The standard coarse pitch mod destinations don’t have enough range for good drum sounds, ad the envelopes curves arent steep enough.
  • But, the standard envelopes can be ‘squared’ by using the modifiers for a steeper curve. Routing one of these ‘squared’ envelopes to ‘drum’ destination with an amount of 32, Ambika can achieve much better drum sounds or 808 like sounds.
    • e.g Modul.  1|srce mod1|dest drm1|amnt   32
      
    •     Modif.  1|in1  env1|in2  env1|oper prod  (squaring the Env1 envelope)
      

Chord Sequencer mode:

  • In Chord Seq mode, the sequencer will pass each block of 4 consecutive notes on to the arp as a chord.
  • The ‘lenp’ paramenter defines how many steps between chord changes.
  • The note sequence length is locked to 16 steps (4 chords) for now.
  • Use rests to reduce the number of notes in each chord

Sequencer Tweaks:

  • Rests are now displayed similar to a tracker where ‘—’ is displayed when there is no note assigned.
  • Makes for more visual drum sequences.

Performance Page Tweaks

  • When in the main performance page, the first 4 buttons now act as part mutes. Cool for jamming with the chord sequencer!
  • Button 5 resyncs the clocks. This is a bit of a workaround for the moment until I can get them to stay locked without having to resync (any ideas?)

Here’s a little demo of what can be done with the Chord Sequencer.

3 Likes

Nice work!

You have added some excellent additional features :slight_smile:

One quick question, can the chord sequencer and/or arp latch mode be clocked from an external sequencer? I know the original; sequencer is stand alone and does not accept midi clock (just thought I’d check) :slight_smile:

Going to install to test soon. Checking out the video now. Thank you!

Great to see that the community it’s still running. Thanks to all you guy for the improvements

I’ve installed the new firmware and love the drum matrix assign. N only for drums. For all types of weird sound effects.

I’ve been testing it for last 4 days and I have some questions, request and small bug that I’ll leave it here if it is of interest.

BUG:

I noticed that the general settings are not being saved to the eeprom. I usually have non inverted LEDs and the lock function on the knobs and when I reboot they are back to default.

QUESTION:

I’m a little bit confused with the chords sequencer mode. I can only achieve the desired effect by changing to Chord Seq and the direction to chord. Not sure if its the expected behavior.

Wouldn’t it be great if the Chord Seq could be transposed? Not sure if it’s a big deal to implement.

REQUEST:

Love the Turbo editing improvement.

Another thing that I find hard with the current workflow is the assigning program/seq/patch for the different voice parts. Is it possible to had the change part in the program/seq/patch/multi section by using the first knob?

Assigning 2 parts from patch/prgm/seq/multi screen with current workflow:

S7 -> K1 -> S8 -> Rotaty encoder -> S8 -> k1 -> S8 -> Rotaty encoder

Same assigning with K1 changing parts in patch/prgm/seq/multi screen:

K1 -> Rotaty encoder -> K1 -> Rotary Encoder

Cheers!

@joaoverissimo

I noticed that the general settings are not being saved to the eeprom. I usually have non inverted LEDs and the lock function on the knobs and when I reboot they are back to default.

I’m unable to reproduce this. Try resaving your default Multi and see if that helps.

I’m a little bit confused with the chords sequencer mode. I can only achieve the desired effect by changing to Chord Seq and the direction to chord. Not sure if its the expected behavior.

The Chord sequencer just sends blocks of 4 notes from the step sequencer into the Arp as if you were holding those notes on a keyboard. The Arp direction will either play monophonic arpeggios or polyphonic chords if it’s set to ‘chord’ just the same as the standard Arp. The only difference is you need to trigger the Seq to start like in ‘pattern’ mode by pressing a key on keyboard or clicking the encoder button in the perf page.

I’m afraid I don’t quite follow with the assigning parts bit. S7 is performance page yeah? Or if you’re in the Library already it’s ‘more’

feature request: MPE support.

http://www.rogerlinndesign.com/implementing-mpe.html

Going to try this tomorrow. Especially the turbo name editing sounds good.

@TijuanaKez

Anyway you can explain how to actually install this firmware? I just purchased an Ambika from someone (it has v0.1 on it). I’m having trouble understanding what to do with the information from GitHub (maybe this is all WAYYYYY over my head). On the page for YAM, Bjarne states

"Be careful when renaming the firmware files and putting them on the SD card for firmware upgrade.

The controller file should be named AMBIKA.BIN, and you need to put six copies of the voice card file named VOICE1.BIN, VOICE2.BIN,…, VOICE6.BIN. It’s all in the manual ."

However, none of the files in the GitHub repository resemble these. Further, the ‘It’s all in the manual’ section didn’t really tell me much - I have read the user manual for Ambika and all I see is a section on firmware updating that says:

The first half of the screen displays the version of the OS running on the motherboard. If a firmware update file named AMBIKA.BIN is present on the memory-card, pressing S1 ( upgrade command) will load it to upgrade the main processor.

Ambika contains seven ports to which devices are attached. The first 6 ports (port 1 to port 6) are used for connecting the voicecards ; the last port (port 7) is used for connecting additional controllers or I/O connectors. The second half of the screen on the about page shows the device type and OS version number for a selected port. Use the encoder to scroll through the ports. When no device is attached to a port (or when the device firmware has been corrupted), a ‘?’ is shown in place of the device type. If a firmware update file named VOICE$.BIN (where $ is the port number) is present on the memory card, pressing S4 (upgrade command) will load it to upgrade the voicecard processor.

Which doesn’t really tell me much in regards to how to update (since it doesn’t include any of the information that is shown in the GitHub repository.

What I have found is that the code here: http://www.phase57.com/build/ambika/code/ allows you to download a RAR file that has what I would expect, AMBIKA.BIN and Voice1.BIN files.

Perhaps there already is a thread someone could direct me to that would explain how I can make your firmware mod (or Bjarne’s YAM) a reality on my Ambika?

Thank you!

Hi,

The pre built binary firmware files are in the github repository: https://github.com/TijuanaKez/ambika/tree/master/KZ_firmware_builds

As described, the controller file should be copied and renamed to AMBIKA.BIN, and the voicecard files should be copied and renamed to VOICE1.BIN, …, VOICE6.BIN onto an SD card.

Cheers

Thanks @Bjarne! I think with all the files that were everywhere, I was overwhelmed :expressionless:

Just curious - is there a reason that these files aren’t just already placed in there as AMBIKA.BIN, etc?

And thank you for all of your hard work. It’s crazy what you (and others) can do!

No worries,

I don’t think there’s any (good) reason why the built binaries are not named as they’re needed to be on the SD card (but then again there needs to be six identical voice card files with different names so it would be a kind of ugly hack anyway).

Cheers

So is this built over the last version of YAM firmware (with vowel2 oscillator etc.)?

EDIT: Looks like it’s not :frowning: