New Project Idea - Euclidean Rythmn Groovebox
Dami Etoile
Background Information
I have been exploring a lot of electronics that produce music or sound in general. I started with a Teenage Engineering OP-1, but I wanted to explore what over synths exist and how they produce unique sounds. This lead me down a rabbit hole of different styles and tools used.
One of those rabbit holes was the Pamela Pro Workout module. I thought it was super cool that it could handle timing as elegantly with the UX that it does have. I liked how it was mathematical in the approach. That's something I could explore as I am much more likely to adapt to learning that then to just happen upon rythmn. I don't have a eurorack, and I don't think I should start just for a clock module, however I thought it'd be fun to turn this into a project!
Euclidean Rythmns are generated using three main variables. The function takes n, the number of steps, p, the number of pulses, and o, the offset of the pattern. The value of p has to be less than or equal to n. The offset could theorhetically be as large as you want, however it would still map to 0..n
as it would wrap back to the initial pattern. The notation to describe the rythmn would look like this E(16,4,0)
. That example would produce 4 pulses, evenly spaced, between 16 total steps. That means that every 4th beat would be a pulse. Note: These patterns are reducable when p is a divisor of n. Four cycles of E(4,1,0) is equivalent to E(16,4,0) as an example.
Where my project idea comes in is to create a website that just allows the user to spawn a euclidean rythmn generator that pulses based on the configuration. This could be used to play a sound, a drum kick or snare, or to interlace two different rythmns in a complementary way. Using a simple web interface would make this super approachable for most people where expensive noise machines might not be.
Project Milestones:
- Algorithm that generates a pattern sequence based on n, p, o.
- Frontend component that visualizes the pattern and allows the user to select what happens when a pulse occurs (currently this would be just to enable or disable the sound output).
- The ability to spawn new rythmns which would run in sync with the group
- Master level configuration options for FX or mixing or total volume.(This would be something that needs to be better defined, as I think it could end up being scope creep.)
Technical Notes:
- I want to utilize deno + fresh for this. This would be easily transitionable to a different framework if needed, but I enjoy the DX in Deno.
- I think having local storage of the project and management of different projects would be cool to integrate with. Local storage would be used to keep the configuration and sounds selected, so that you could share a unique url that would load up everything to anyone else's computer.
- Opting for no login and saving in cloud means that I wouldn't have to pay anything to have continuity of product.
- I know that sound playback is not something I have explored much in web dev, however I know that there are a lot of options for this (p5.js is what I see a lot of). Worse case, I can build out a library of "nice-to-have" wrapped around a basic sound source.
- I think itd be neat to include a basic set of "drum machine" sounds that can kickstart someone playing with the tool. There's no need to jam pack it. Just enough to accomplish a simple demo project.
- Mobile support is likely not going to be a thing, however I will try and be friendly as I can for later evaluation on if it is worth it.
Final Thoughts
I think that I have a good set of stepping stones to go from nothing to an MVP at least. I want to do a more formal writeup on how the project went/is going after I get started. This would include some demo screenshots and an overview of what I would do further if I wanted to expand the project.