Ratchet-O-Matic

Sculpt-O-Sound presents Ratchet-O-matic.

While watching a video by Gary P. Hayes where he explains how to make Berlin style rhythms, made famous by Tangerine Dream and others, using a clock multiplier to ratchet some notes and playing with a Hydra synth (which has a knob for ratcheting on the front panel ! ) at my friend Macross’ house, I got inspired to make my own module that can ratchet, which I will call a ratcheteer. It has a second mode in which it can divide gate pulses (skip notes).

I’ve posted a picture of it before, but here it is once more, for your comfort and convenience.

I made a short demo video and put it on youtube:

The code, gerbers etc. are on my github.

9 Likes

Hello,
can you add the code for the Ratchet-O-Matic as .hex to your github, I can’t do anything with the .hpp files.
Many thanks in advance
Klaus

I found that platformIO and VSC produce a firmware.elf, firmware.bin and firmware.map file. Would any one of those suit you?

I can also add the platformio.ini file. If you install VSC (free) and platformIO (also free) you can then compile the code without having to know any C++.

Thank you for your answer. If you could provide me with the bin file, that would be really nice. I can then flash the bin file to the Nano.
greetings Klaus

10:00 I will upload the firmware to my github tonight.

21:56 Done!

1 Like

Hello,
thanks for the hex file. Nano is already flashed, just waiting for the PCBs.
Greetings Klaus

2 Likes

I thought I’d add the schematics here for your viewing pleasure.

The control board consists of an arduino nano and a connector for the 5V supply. My power supply delivers +5V so there is no extra power curcuitry in this schematic.

There are 2 connectors that connect this board to the IO-board.

I’ve added a table to the schematic that makes it easy for me to choose the resistors for the LEDs I use. Because those are high efficiency LEDs the resistor values are rather high. The green led is especially bright so it gets the highest resistor value. Using this table the LEDs are more or less equally bright when lit. You will very likely use other LEDs than I, so your mileage may vary !

Note: the switch should be a push button, although the symbol suggests otherwise.

4 Likes

I’ve changed the software a bit. The response of the potmeter is now much faster and following up on a suggestion by @Tangram it is now also possible to set the ratchet frequency to 0, thus not producing an output pulse even when there is a input clock pulse. So in combination with a 960 sequencer, you can now ‘skip’ steps by choosing a frequency of 0 for that step (using one of the rows of pots of the 960) WITHOUT changing the sequence length (which is a natural consequence of using the 960’s skip mode). This can produce very interesting rhythms easily.

Hmm, I guess I may need to make another demo video …

There is a trial version of the firmware called v0.2 on github.
I’ll publish the source code at a later time.

1 Like

Hello,

Hello,
I now have some time to try out the new version.
I started AVRDudess and inserted the two files.
Opps!!!
What is that?
An error message, see picture.
Is the file run_once_to_init_eeprom_firmware.hex too big?
What error am I making?
Maybe you can help me.
Greetings Klaus

Hi Klaus, I’m not familiar with Avrdudess (I don’t use Windows).
But if you look at the filesizes, you can see that the run_only_once file is smaller than the runtime_firmware.hex file. So that should definately fit in the arduino’s flash memory.

-rw-rw-r-- 1 jos jos 300 Oct 12 22:03 readme.jsb.txt
-rw-rw-r-- 1 jos jos 43K Oct 12 22:03 run_once_to_init_eeprom_firmware.hex
-rw-rw-r-- 1 jos jos 58K Oct 15 16:02 runtime_firmware.hex

But I think that you may need to use avrdudess differently.

In the slot Flash you specify the hex file you want to upload to the flash memory.
In the slot EEPROM I think you can specify a file that is uploaded to the eeprom, thus initialising it. Given that the arduino has only 1k of EEPROM, the file run_once_to_init_eeprom_firmware.hex is definately too big to fit in there. So that explains the error message.

The latter is not what I meant to achieve with the run_once_to_init_eeprom_firmware.hex file.
In my setup that file is to be uploaded and run once. It will then initialise the eeprom for Ratchet-O-Matic software. After that you would program the flash memory once more but this time using the file “runtime_firmware.hex” which contains the Ratchet software. That code you would then run whenever the device is powered up.

I see that the program has an option to “Erase flash and EEPROM”, so my setup will not work if you use avrdudess (unless you know a way to make avrdudess not erase the eeprom). Because each time you would upload anything the eeprom would be erased again. So what can you do?

I think you will be allright when you only flash the runtime_firmware.hex file to the arduino.
So: in the location Flash you navigate to the file runtime_firmware.hex and the press Programm which flashes that to the arduino. The code does not really need the eeprom to be erased to function. I originally included the initialisation step because it seemed the proper thing to do.

Oke, give that a try. The clear difference between the old version and the new one is that if you rotate the FREQ pot completely counter clockwise, the ‘1’-LED should not light up. If you rotate the pot a bit clockwise, you should be in the ‘1’-position and the LED should light up.
If the ‘1’-LED lights up when the pot is rotated completely counterclockwise, the old software is still running.

Let me know, how things go!

1 Like

I’ve added a mode to Ratchet-O-Matic’s firmware. Double clicking the mode button you now can choose between the ‘standard’ MULT mode and the added MAX MULT mode. The MAX MULT mode allows one to set a minimum (adjust the FREQ-knob) and a maximum number of ratchets (via the CV-input). The actual value used will be chosen at random (per clock cycle). Connected to a 960 as the CV signal source, this makes for some interesting variation to the ratcheting. The code is at github as per usual. I’ve included a hex file containing the firmware.

There is a demo here:

3 Likes