4 ms·
I have an irrational aversion to sequencers so I've been working on rhythm synthesis using oscillators to build a drumming robot. early prototype: https://www.
by _spduchamp 4y ago
I have an irrational aversion to sequencers so I've been working on rhythm synthesis using oscillators to build a drumming robot.
early prototype: https://www.youtube.com/watch?v=zeHJXyyhJ70 https://www.youtube.com/watch?v=zeHJXyyhJ70
Rather than operating on preset sequences, I'm using a series of oscillators in Puredata that can have their frequencies set to various ratios of a primary frequency. The oscillators get added together and a drum hit is triggered on the zero crossing of the result. The patterns can be modulated by changing the amplitude and phase of the oscillators in realtime. The early prototype was made in Puredata but now I'm trying to put all the rhythm synthesis into the robot microcontroller using the Mozzi library.
I'd love be able to initialize the oscillators with these Euclidean patterns and then be able to modulate them using the oscillator controls. I'm curious if any one knows of a way to take an existing drum pattern and calculate a small series of sine waves that would express that pattern. Kind of like FFT but for rhythms. This seems like something someone might have already figured out.
- clumsycomputer 4y agonot really an FFT approach, but you can take a euclidean rhythm or really any discrete rhythm for that matter and compute its slot weights. checkout https://github.com/clumsycomputer/clumsy-math#rhythm-slot-weight https://github.com/clumsycomputer/clumsy-math#rhythm-slot-we... for more details. you can use a rhythm's slot weights to set a wave's amplitude, phase, or frequency. just need to decide on some continuous <=> discrete mapping
- _spduchamp 4y agoThanks! I'll try to get my head around that stuff.
- clumsycomputer 4y agomy pleasure, feel free to reach out with any questions
- Slow_Hand 4y agoI really like this. It feels musically coherent in a way that's far better than what I'm used to hearing in other non-euclidean approaches. Typically other people's attempts are unpredictable and lack a coherency or internal logic to their development that ends up making them feel "random". Your example manages to keep an underlying rhythmic motif going that helps glue the whole thing together. It all feels very Autechre. Congrats. Could you discuss the example in the video a little more? How much are you "performing" and changing the phases and amplitude of the oscillators in this example? Are you tweaking them steadily, or are you able to leave the system to run by itself and let it's "emergent" rhythms occur naturally? I'd love to know much more about this, as I'm also pretty disenchanted with sequencers these days and am searching for a better way to generate systems like this. Great work.
- _spduchamp 4y agoI don't totally remember what I did in that video, but I would have set up some ratios on the oscillators, and then shifted the amplitudes and phases a bit. Here's a copy of the Puredata sketch https://stefanpowell.ca/project/Robodrummer/drumming_v4.zip https://stefanpowell.ca/project/Robodrummer/drumming_v4.zip I'm not sure if anything in there makes any sense. I'm not a drummer. I can't drum. I feel like my body has a palsy that completely prevents me from being able to keep a rhythm, so this is why I'm working on this drumming robot project. For this sketch I'm using a Korg Nano Kontrol v1 with an abstraction to hook connect the knobs and sliders to Pd, and then I abstract it further to turn the sliders and knobs into floats. This patch, and variations on it, have been serving as a mental sketch board for thinking about rhythms. The output can be used to trigger a modular synth using L/R channels, but I'm using it to send OSC commands to my drumming robot. I'm not sticking with this setup because I don't want to send the individual hit instructions over the network, rather I want to only send parameter changes. Yes, this approach can generate some interesting emergent patterns especially when you play with the ratios like using something very slightly off and then you get phasing patterns. My general goal is to make an autonomous drummer that will jam my other autonomous instruments.