Live data from Hacker News

Euclidean Drum Machine

groovemechanics.com

11–20 of 24 posts

Re: Euclidean Drum Machine

#13
post #9

Warning for all those with headphones on: If you navigate to a different tab, and then come back to groovemechanics.com, the sound pops in VERY LOUDLY...it was painful and a bit scary to my eardrums. Other than that, though, this is really cool!

I did not heed this warning. It is VERY LOUD! Heart attack loud :)

Re: Euclidean Drum Machine

#14

Holy coolness, can you make a version that runs in node-webkit so I can hook it up to ableton and other DAWs via OSC? That would be 100% groovy. Do you mind if i do it myself some time?

Thanks! Yeah, I plan to open-source the project. So of course that would be great to port it node-webkit.

Re: Euclidean Drum Machine

#15
post #3

I'm fascinated by this concept and I've even had some ideas about making something similar, though I haven't worked them out I'd love to look at the source code for this.

There's a popular paper on the technique by Godfried Toussaint that explores it in depth: http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf

He has a bunch of interesting material and a book called The Geometry of Musical Rhythm. Being a CS prof, though, he has the intensely annoying habit of counting everything from zero. Musicians don't do this, they count from 1 (like everyone else except programmers), and so all his diagrams, notation etc. have to been mentally shifted by one step every time you reach for an instrument or talk to another musician.

I personally think that counting from zero is a really harmful habit. I understand how it originated and of course switching to counting from 1 would involve all sorts of kludges and result in all sorts of bugs. But it strikes me as a classic case of abstraction gone wrong, as 'the nth step' is going to mean entirely different things in the problem and the software domain.

Re: Euclidean Drum Machine

#16
post #6

I don't understand why and how it periodically resets.

If the least common multiple of two elements is high, the rhythm would have a very long period, which doesn't sound very well. Three elements of periods 16,9 and 7 would have a period of 1008 steps, which at a tempo of 100 would take 10 seconds to reset. That's not a rhythm, that's a tune.

I actually thought it would be interesting to do a tune along those lines.

Have a quartet where each one is playing something with a different time signature. Hellish to coordinate, but could be interesting at the same time, as instruments wander in and out of sync with each other. Chord progressions forming with two and three instruments while the others are doing something else.

Re: Euclidean Drum Machine

#17
My patch...

var patch = [ {steps:11,pulses:4,offset:0}, {steps:7,pulses:1,offset:8}, {steps:5,pulses:2,offset:0}, {steps:3,pulses:1,offset:0}, {steps:1,pulses:16,offset:0}, ]; patch.forEach(function(hit,index){ index = index + 1; $('.space-'+index).val(hit.steps).trigger('change'); $('.fill-'+index).val(hit.pulses).trigger('change'); $('.offset-'+index).val(hit.offset).trigger('change'); });

just drop that into your F12 tools' watch window and we can share configs/patches

Re: Euclidean Drum Machine

#18
post #12

Suggestion: a random button.

(function(){ for(var i=1;i<6;i++){ $('.space-'+i).val(Math.floor((Math.random() * 16) + 1)).trigger('change'); $('.fill-'+i).val(Math.floor((Math.random() * 16) + 1)).trigger('change'); $('.offset-'+i).val(Math.floor((Math.random() * 8) + 1)).trigger('change'); } })()

Re: Euclidean Drum Machine

#19
post #17

My patch... var patch = [ {steps:11,pulses:4,offset:0}, {steps:7,pulses:1,offset:8}, {steps:5,pulses:2,offset:0}, {steps:3,pulses:1,offset:0}, {steps:1,pulses:16,offset:0}, ]; patch.forEach(function(hit,index){ index = index + 1; $('.space-'+index).val(hit.steps).trigger('change'); $('.fill-'+index).val(hit.pulses).trigger('change'); $('.offset-'+index).val(hit.offset).trigger('change'); }); just drop that into your…

Double-bass metal

var patch = [ {steps:11,pulses:13,offset:2}, {steps:8,pulses:2,offset:6}, {steps:5,pulses:7,offset:4}, {steps:1,pulses:3,offset:1}, {steps:15,pulses:8,offset:8}, ]; patch.forEach(function(hit,index){ index = index + 1; $('.space-'+index).val(hit.steps).trigger('change'); $('.pulses-'+index).val(hit.pulses).trigger('change'); $('.offset-'+index).val(hit.offset).trigger('change'); });

Re: Euclidean Drum Machine

#20

Holy coolness, can you make a version that runs in node-webkit so I can hook it up to ableton and other DAWs via OSC? That would be 100% groovy. Do you mind if i do it myself some time?

Ooo a MAX midi out plug-in that could fire off notes in a drum rack
Post reply on HN