Euclidean drum machine emulating the TR-808 sound.
I’ve written this script to learn Lua, SuperCollider and the norns environment.
The sound engine is based on the SC-808 by Yoshinosuke Horiuchi.
I have implemented only my favourite sounds, to keep the GUI in a single norns page.
The sequencer borrows some techniques from playfair euclidean drummer written by @tehn with new features like randomizer and real time recording.
I’ve tried to design an efficient interface, keeping things simple.
I hope you enjoy it.
Requirements
Monome norns
Documentation
k1 shift
k1+k3 clear all (if stopped)
k1+k3 randomize (if started)
k2 start/stop
k3 insert step (if started)
k3 randomize all (if stopped)
e1 instrument select
e2 drum parameter 1
e3 drum parameter 2
e1+k1 pattern rotation
e2+k1 number of pulses
e3+k1 number of steps
Changelog
v2.0
added pitch parameter for Hi-Hat
pattern rotation
automatic state saving
v2.1
added individual levels
all the parameters are now exposed and therefore MIDI controllable
I just want to say that this line warms my heart. I’m just starting to learn Lua, motivated by the Monome ecosystem. It’s lovely and inspiring to see someone to have taken the same path, and to have completed a standalone app as a result.
having some issues with this one hanging pretty hard and pretty consistently.
I’m on a Fates, rpi 3b+, system 200712
The issue pops up when I set the decay time on the kick to over 75% and the fill to more than 50%. Maiden isn’t giving me anything useful after letting me know that the script is loaded in either the matron or sc tab. Buttons become unresponsive, though knobs still work. ;restart is timing out. If I turn decay down and wait for a while it starts to clear up.
If I set things going and then jump out to the select/system/sleep page, the cpu usage climbs up to around 37% before becoming unresponsive. 3 button restart does not work, sleep> does not work because buttons are unresponsive.
Sounds like SuperCollider creates a new instance of the kick drum for every note, and doesn’t destroy them/free up resources until the sound has faded out completely.
With fast triggers, and a long decay time, notes will stack up until the CPU overloads.
The SuperCollider engine could be rewritten such that there’s only ever one instance of each drum sound, that’s re-triggered, rather than each trigger creating a new instance, while the previous one continues to play.
That way, the CPU load would remain constant, but some clicks might be introduced due to sudden volume changes.
I don’t know if this behaviour will be more or less like the way a real 808 sounds, but I don’t think either really mimics the real response of the original hardware.
The issue pops up when I set the decay time on the kick to over 75% and the fill to more than 50%. Maiden isn’t giving me anything useful after letting me know that the script is loaded in either the matron or sc tab. Buttons become unresponsive, though knobs still work. ;restart is timing out. If I turn decay down and wait for a while it starts to clear up.
I can easily reproduce the issue.
Thanks @coreyrt, I'll take a look.
Sounds like SuperCollider creates a new instance of the kick drum for every note, and doesn’t destroy them/free up resources until the sound has faded out completely.
@toneburst you are probably right, thanks to point me in the right direction. I think that the behaviour is now very similar to the real 808, but I could be wrong.
I don’t know exactly how to solve the problem…it’s time to learn something new!
Much more stable! I can still overload sc a bit if I set the fill of multiple voices too high all at once but its not freezing up and becoming unresponsive. It works very well if I’m using it within reason.
Great script @pangrus! The max decay time on the bass drum is now quite a bit shorter, but if I understand correctly, unmodded 808s don’t have a super long decay time either. Great work around, it sounds fantastic.