Shruthi-1 firmware hacks
Warning: messing with the firmware and trying to upload your own .syx files to the unit can potentially 'brick' it. Make sure you know how to revert back to the original firmware!
Enabling alternative features through pre-processor defines
A few undocumented features are available by compiling the firmware with some specific flags.
By default, the EXTRA_DEFINES definition in the makefile (shruthi/makefile) should be:
EXTRA_DEFINES = -DDISABLE_DEFAULT_UART_RX_ISR
You can add other preprocessor defines on this line, prepended by -D. Make sure that DISABLE_DEFAULT_UART_RX_ISR is always there - the Shruthi-1 does not use interrupts for UART reception (the UART is polled from a 5kHz timer), so this removes the boilerplate ISR handler for UART reception.
This truncates the patch name length to 7 characters instead of 8; and use the reclaimed byte to save the portamento rate and legato on/off settings in the patch.
Every time a patch is loaded, the whole patch datastructure is dumped on the TX pin, at 4800 bauds. Used at some point for debugging, and might have been used in an unreleased Frank Daniels' gadget.
Changing boot settings
The settings which are loaded when the synth boots (or when the "reset to init" command is used) are contained in constants named init_patch, init_sequence and init_system_settings. For example, the second byte of init_sequence is the default tempo. Use 35 instead to use the external MIDI clock as a default tempo.