Custom Shruthi firmware based on YAM, for percussion sounds

I made a quick custom Shruthi firmware, based on @Bjarne 's YAM for Shruthi, incorporating features from @TijuanaKez 's Ambika LIVE firmware. Specifically, I’ve added the DRM 1 and DRM 2 modulation destinations. You can download it here: https://github.com/AustinDodge/shruthi-1 There are compiled versions of the firmware there ready to use but I haven’t tested transferring the firmware over MIDI, let me know if there are issues.

The DRM modulation act similarly to the OSC 1 and OSC 2 destinations, except the pitch range is much greater. OSC 1 and OSC 2 only allow for a maximum change of +/- 16 semitones, which isn’t quite enough for intense percussive clicks and thumps. Sending modulation like an envelope to DRM 1 or DRM 2 can change the pitch by 32 semitones in either direction.

Because the DRM destinations allow for such intense pitch change, I’ve also modified the behavior of OSC 1 and 2 to make their pitch changes more subtle - they’ve always struck me as far too coarse, with a minimal amount of modulation producing a less-than-subtle effect. OSC 1/2 only have a maximum pitch range of +/- 2 semitones now, but this allows for much more subtle pitch variations, making them more useful for subtle fattening, bending, and “analoging” effects. Patches that have modulation routed to OSC 1/2 will need to be modified to sound identical in this firmware, either multiplying the modulation amount by 8, or changing the destination to DRM 1/2 and halving the modulation amount.

It’s a fairly minor change and there shouldn’t be any issues, but please let me know if you find any bugs!

Nice move mate !! ! I am suspecting this will help me with some patches .I will give this a shot and post my results… I am just wondering … do you know if anyone has modifed firmware to allow a mod destination for osc 1 and 2 shape( not the wavetable sweeps that can be done with the parameter)… I want to sweep the tables and the shapes on both osc simultaneously … Have been getting great results doing this manually on one osc but not enough hands (or knobs) on my 4pm shruthi to do both …:stuck_out_tongue:

Thanks mate! :slight_smile:

Hope you like it! I’m not aware of any firmwares that do that, and I’m not sure I’m enough of a C programmer to implement it - I probably couldn’t have done this without having Ambika Live to refer to. You can use CCs to control the wave shape, have you tried automating it with a sequencer?

Not I have not. I only thought of modulating through them and did not know I could use cc to change the shapes. Is this done through one of the op. step options or seq mix ? that would be dope!

Ok … I get it … cc 20 and 24 record some automation and send out… Thanks mate ! Could also just use Dialog audio Modulation processor now that I think of it … :stuck_out_tongue:

Hello there thanks for this firmware, I tried to upload the sysex firmware via midi but with no success…In sysex librarian (OsX app) when I bring up the YAM 0.05 firmware it’s size is 127.2 kb but your variant on that show up as only 10kb despite being listed as 131kb in the finder. When I look at the contents yours only seems to have a header. (yours is on the right in the screenshot, with Bjarnes on the left.

Bjarnes firmware boots okay but yours does not…hope you can help, any ideas?

Sorry about that. I’ve never been able to get make to do anything besides create the elf and hex files, probably something to do with being on Windows, so I’d tried to create the sysex file by manually running hex2sysex.py. I assumed it worked due to the file size but never actually tried to install it via MIDI.

If you have access to an ISP programmer I know that the .bin works. Otherwise you could try compiling it yourself - since you’re on osx, there’s a pretty good chance that everything will go right for you and the syx file will be properly created just by calling “make”. I don’t know when I’ll get a chance to dig in and fix this.

Thanks for the reply. no ISP programmer here unfortunately, never dabbled in the programming end of the firmware before, just uploaded the sysex…I’ll have a look at your link and see if that is something I am capable of doing, or some kind soul out there who knows what they are doing may be kind enough to upload it… not sure how big an ask that is, but it sure would be appreciated…

Thanks again for making the firmware and for replying, take care

Okay tried to go down the rabbit hole and compiling the software myself tried working through various errors to the worst of my ability and get the error below. Whilst editing the makefile for AVR_TOOLS_PATH / AVR_ETC_PATH, I found AVR_TOOLS_PATH easily and pointed it to first the CrossoverAVR bin and then to the arduino app bin, however I could not locate AVR_ETC_PATH at all in the makefile, do I combined it in that first line so that it reads:

AVR_TOOLS_PATH / AVR_ETC_PATH ?= /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/

is that correct? I am completely out of my depth with all of this…shall I just call it a lost cause or do you have any pointers/advice

shruthi/resources.cc:24:31: fatal error: shruthi\resources.h: No such file or directory
#include “shruthi\resources.h”
^
compilation terminated.
make: *** [build/shruthi1/resources.d] Error 1
(base) Mac:shruthi-1 reubenfinger$ make
avrlib/makefile.mk:199: build/shruthi1/depends.mk: No such file or directory
shruthi/makefile:29: build/shruthi1/depends.mk: No such file or directory

there is definitely a resources.h file in the github repository that I cloned from you, what gives?

maybe a little further forward, still though the shruthi\resources.h persists

(base) Mac:shruthi-1 reubenfinger$ make resources
avrlib/makefile.mk:199: build/shruthi1/depends.mk: No such file or directory
shruthi/makefile:29: build/shruthi1/depends.mk: No such file or directory
/usr/local/CrossPack-AVR/bin/avr-g++ -MM -mmcu=atmega644p -I. -g -Os -w -Wall -DF_CPU=20000000 -D__PROG_TYPES_COMPAT__ -fdata-sections -ffunction-sections -fshort-enums -fno-move-loop-invariants -DDISABLE_DEFAULT_UART_RX_ISR -DATMEGA644P -DSERIAL_RX_0 -mcall-prologues -fno-exceptions shruthi/resources.cc -MF build/shruthi1/resources.d -MT build/shruthi1/resources.o
shruthi/resources.cc:24:31: fatal error: shruthi\resources.h: No such file or directory
#include “shruthi\resources.h”
^
compilation terminated.
make: *** [build/shruthi1/resources.d] Error 1
(base) Mac:shruthi-1 reubenfinger$

I ran into the same error, but it’s been nearly a year since I really dived into it. I didn’t use both AVR_TOOLS_PATH / AVR_ETC_PATH, just TOOLS, and it was pretty picky about how I formatted the path. Mine reads:
AVRLIB_TOOLS_PATH ?= C:\WinAVR-20100110\bin/
It took some trial and error to really figure out exactly how the makefile wanted that formatted, but getting it right resolved a lot of errors, including the “No such file or directory” error. I don’t know exactly how it should look on osx.

A couple other things to check: I think Python comes preinstalled on osx, but you’ll need Numpy, which now can only be installed through whole scientific programming package installed thing. It’s convenient if you’re trying to set up a whole scientific data analysis suite but for our purposes it’s a real pain. Additionally, try manually running the python script shruthi/resources/resources.py - even if the resources don’t need to be recompiled, this will tell you if there’s a problem with your Python setup, or if you need to mess with the scripts at all (I had problems with a newer version of python not liking a line that was something like “i += j” and had to rewrite it to “i = i+j”, for example)

Even after it was added to path, I had to go to “WinAVR-20100110\utils\bin” in the terminal, run “sh”, and navigate back to the project directory before I could run “make”. I don’t know what the equivalent would be for you.

Make sure your AVR-GCC version is 4.3.3, otherwise you’ll have problems.

Last thing to try, after you’re certain you have Python set up right, you shouldn’t need to fully recompile the firmware if you just want to make a sysex version. Try making the directory “shruthi-1/build/shruthi1/” (it may have already been made for you when you tried to compile), put the three files from “shruthi-1/firmware_builds/” in the repository in there, then try “make midi”. Good luck!

Awesome tips, thank you, will administer your medicine and try and patch up this patient, really appreciate your getting back to me