5 ms·
Euclidean Drum Machine
- pavel_lishin 12y agoI don't understand why and how it periodically resets.
- crucialfelix 12y agoits an algorithm that's been popular in music programming the past several years. there are a bunch of implementations of it. its a method for evenly distributing x pulses along a grid of y steps. 4 / 16 is house kick 5 / 16 is a dancehall beat start by setting all steps to 16 (the grid size), offset to 0 and vary the pulse setting and you will hear how they are distributed along the steps. good simple explanation with python implementation: https://github.com/brianhouse/bjorklund https://github.com/brianhouse/bjorklund javascript: http://blog.fader.co.uk/post/11519018856/bjorklund-algorithm-and-euclidean-rhythms http://blog.fader.co.uk/post/11519018856/bjorklund-algorithm... I usually call it bjorklund. I once used it to evenly distribute promoted content across slots on a website.
- kmm 12y agoIf 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.
- TheLoneWolfling 12y agoI 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.
- boomlinde 12y agoThat it doesn't sound well is a very subjective notion. Polyrhythm is quite common in some types of music, and a staple of traditional music in many places outside europe. In western music you can usually find it art music, film soundtracks, jazz, IDM, progressive rock... With well placed accents and syncopation I don't think it's that bothersome to the untrained ear even.
- Chinjut 12y agoAre you referring to the adjustable reset counter in the bottom right (which by default resets every 32 steps)? I wish the option were available to disable it and simply have the rhythm reset at its natural period. Alas...
- kaoD 12y agoSuggestion: a random button.
- pistle 12y ago(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'); } })()
- naringas 12y agoI'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.
- erikschoster 12y agoThere's a popular paper on the technique by Godfried Toussaint that explores it in depth: http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf
- mafribe 12y agoThe paper "The Distance Geometry of Music" by Demain et al. might also be of interest: http://erikdemaine.org/papers/DeepRhythms_CGTA/paper.pdf http://erikdemaine.org/papers/DeepRhythms_CGTA/paper.pdf
- anigbrowl 12y agoHe 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.
- robhanlon 12y agoReminds me of Axon: http://www.audiodamage.com/instruments/product.php?pid=AD026 http://www.audiodamage.com/instruments/product.php?pid=AD026
- tcfunk 12y agoWarning 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!
- hartzler 12y agoI did not heed this warning. It is VERY LOUD! Heart attack loud :)
- genericacct 12y agoHoly 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?
- pistle 12y agoMy 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
- pistle 12y agoDouble-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'); });
- sitkack 12y agoCould you post a screenshot of how you did this? My browser dev fu is weak.
- frankydp 12y agoSuggestion. Update the url hash with the settings so you can share links.
- dpflan 12y agoThe top level site (http://www.groovemechanics.com/ http://www.groovemechanics.com/) has some other cool instruments like a virtual analog sequencer and synthesizer. It would be awesome to be able to use multiple instruments at once in an integrated session - who doesn't want to be a JS-plug-in one-man-band?