[HN Gopher] I made a command-line tool to assist me with writing...
___________________________________________________________________
I made a command-line tool to assist me with writing polyrhythmic
drum parts
Author : dredozubov
Score : 109 points
Date : 2023-06-28 18:07 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| waffletower wrote:
| Thank you very much for sharing your code with everyone. I am
| very sorry for laughing really loudly and waking my dog when I
| discovered that it was written in Rust, instead of Python or
| another dynamic language. After taking a step back, I realized
| that I could learn a bit about Rust by looking at your code. If I
| found interesting ideas, they would have likely been translated
| into another language anyway, unless I was really lucky and you
| picked Clojure.
| type0 wrote:
| Anyone who's interested in synth DSL should really check out
| Sonic Pi, it does MIDI, polyrhythms and it's very easy to do
| generative sequences in it.
| dredozubov wrote:
| I'm a guitar player, and I use tablature notation editors such as
| Guitar Pro a lot. However, it gets complicated fast when I write
| polyrhythmic/polymetric drum parts, because shifts tend to go
| over the bar lines and it's hard to make sense it's correct
| visually (may be even harder if you listen to it). The other
| property of such parts is: it tends to unfold from simple ideas
| such as "I want to create a drum part that will have a 3 against
| 4 feel with a kick drum against a snare drum". The other way to
| think about it is that it has a simple blueprint, but it's tricky
| and error-prone to express in Western musical notation. This is
| why Polyrhythmix exists. I wanted to have a simple tool to
| workshop/brainstorm rhythmic ideas and evaluate them by having a
| MIDI playback. I'm into modern Progressive Rock/Metal music,
| Fusion, so it all applies very well. I have an impression it may
| be useful for Indian Carnatic music as well, but I would like to
| get some insightful confirmation on that.
| jcpst wrote:
| Very excited to see this. It's very much a tool I would use,
| excited to give it a spin after work tonight. I also look
| forward to reading the code.
|
| Other cool music tools I've seen implemented in rust:
|
| * glicol - https://glicol.org/
|
| * tune - https://github.com/Woyten/tune
|
| A while back I wanted to make some tools to aid in composition
| and was using rust. Very partially baked, but a fun pet project
| to learn the language with. Generates just intonation pitch
| lattices based on my research of Ben Johnston's compositional
| approach. https://github.com/jcpst/johnston
| dekhn wrote:
| I have only familiarity with western musical notation, and it
| too me a while to get there. Tablature and track notation
| (digital audio workstation) both were completely intuitive to
| me. Is there anything that argues for learning Western musical
| notation- IE, does it help express some things
| eloquently/efficiently/naturally? Every time I ask classically
| trained musicians (who started with a piano and a music book)
| they look at me like I'm crazy and dumb.
| karlgrz wrote:
| This looks super cool. I'm also a guitarist that, uh, isn't a
| very good drummer, heh. Will kick the tires, thanks for
| sharing!
| sshine wrote:
| Somewhat related: A drum-machine DSL with dependent types:
|
| https://media.ccc.de/v/456-tsh-a-dependently-timed-drum-mach...
| Phelinofist wrote:
| I really enjoy the art of Matt Garstka (drummer of Animals As
| Leaders): https://www.youtube.com/watch?v=NpFnbgqHmjQ
|
| Also Demetori (Touhou) is great:
| https://www.youtube.com/watch?v=po69XUGd2v0
| thatxliner wrote:
| It's great to see the musicians of HN post things like this
| ferrous69 wrote:
| > converges over 3 bars
|
| bars of what length? a 3 against 4 polyrhythm converges after 12
| beats, so here it's 3 bars of 4 beats, which is a "bar" for the
| second rhythm you passed in (`'4-x'`) but four or two bars for
| your first rhythm (depending on if you write it 6/8 or 3/4, this
| one could go both ways).
|
| Would be worth letting us know in the CLI, if you think about
| more esoteric polyrhythms it gets more confusing.
| Tyr42 wrote:
| The example continues, and says converges after 2 bars in 3/4
| time.
|
| 4/4 is the default.
| [deleted]
| sirjamespants wrote:
| This is cool!
|
| I have a web-based polyrhythm generator as well based around
| Euclidean rhythms.
|
| https://e-drums-stg.vercel.app/
|
| currently working on a v2 with a much better mobile interface and
| fewer clicks)
| moogly wrote:
| This is cool and reminds me a bit of Jens Johansson's old tool:
|
| http://www.panix.com/~jens/polymath-old.par
| xhevahir wrote:
| I'll have to play around with this. Here's something similar for
| microrythms that I found on GitHub a while ago:
| https://github.com/davetremblay/Marathon
| wizzwizz4 wrote:
| Your README cuts off:
|
| > For example (3,8x(3,16x-xx(3,32xx-x)))) would read as "Three
| atorodius wrote:
| Related: http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf
|
| I use a eucledian pattern generator to sequence some of my drums
| and voices in my eurorack modular synth and it works so well
| iainctduncan wrote:
| His book is really interesting too.
| luluganeta wrote:
| this paper is the real deal! However it might be a bit tough
| without context, which this post does decently:
|
| https://medium.com/code-music-noise/euclidean-rhythms-391d87...
|
| (it goes at length into the algorithms, but the intro is well
| enough; in the end you can hear some examples too)
|
| I second the other post recommending the Tidalcycles music
| livecoding language, as it uses euclidean rhythms as a base
| from which you can compose on. Livecoding combined with
| euclideans is such an interesting musical paradigm that I'd
| name it as one of the widest musical revelations I had.
| xigency wrote:
| This is super cool and I can't wait to try it out. There's more
| than one polyrhythm I'm trying to arrange, and being able to
| quickly hear it without having to come up with a sticking or
| arrangement would really help.
| crtified wrote:
| I shall nickname it "The Haakinator".
|
| https://en.wikipedia.org/wiki/Tomas_Haake
| mastazi wrote:
| for immediate visualisation of polyrhythms, I really liked the
| Buchla 252e UI with the big circle. But Buchla stuff tends to be
| way over my usual budgets. I wonder if there is anything like it
| in plug-in or Eurorack format?
| Jeff_Brown wrote:
| If you're interested in this, there's a good chance you would
| enjoy the TidalCycles language for generating music. It's been a
| mind-expanding experience for me, particularly w/r/t polyrhythms.
|
| The landing page: https://tidalcycles.org/
|
| An example of some music made live with it:
| https://www.youtube.com/watch?v=mlUOWjC5fpY
| glimshe wrote:
| Very cool! How is this better than SuperCollider, which I have
| considered (and learned a bit about) in the past?
| luluganeta wrote:
| Tidalcycles actually runs SuperCollider as its sound backend,
| through the SuperDirt library:
| https://github.com/musikinformatik/SuperDirt/
| glimshe wrote:
| Nice! But why shouldn't I just use SuperCollider directly?
| Jeff_Brown wrote:
| They have different focii. SuperCollider gives you
| outstanding timbral control, but patterning at the
| melodic or chord level is awkward. TidalCycles is a
| language for musical patterns, not for generating
| waveforms directly. If you want to mess with both, I'd
| recommend starting from the definitions of the synths in
| SuperDirt, the collection of SuperCollider synths that
| TidalCycles uses.
|
| TidalCycles _does_ offer a lot of ways to control the
| timbre -- there are a bunch of effects, including some
| magical granular stuff. And merely triggering samples at
| sufficiently high frequencies, particularly frequencies
| that vary over time, can generate some cool sounds. But
| SC will give you much more control over that kind of
| thing.
| mry2048 wrote:
| [dead]
| luluganeta wrote:
| This set by yaxu (Tidalcycles author) is what convinced me to
| get into livecoding seriously:
|
| https://www.youtube.com/watch?v=1IzfMqs5NGw
|
| (this set is "from scratch", meaning that it opens with an
| empty file and starts from there, making it clearer to
| understand what is going on as it builds up)
| samstave wrote:
| 2030, USA: 9PM, San Francisco.
|
| As we sit into our booth and the environment closes around
| use we are greeted with soft, soothing music.
|
| As we get into conversation, the body language, verbal
| language, laughter and even facial expressions we express
| inform the mood of the room - and the music that it produces.
| A certain, unique-to-our-meeting melody. All of this is
| encoded and played back as music in real time.
|
| Later we can use the melody to replay the mood and dialogue
| of the night - as everything that was said was encoded into
| the music heard - but may be decoded to have a recording of
| the conversation...
|
| For further information, contact
|
| @Cymatic.ai
| wwalexander wrote:
| Also worth checking out Lil Data [1], an artist affiliated with
| PC Music who uses TidalCycles and also has a doctorate in some
| pretty interesting musical research [2].
|
| [1] https://soundcloud.com/lil-data [2]
| https://scholar.google.co.uk/citations?user=APvoBhUAAAAJ&hl=...
| Jeff_Brown wrote:
| +1. Lil Data is fantastic.
| a_simple_dev wrote:
| This is so dope! Love seeing the analog rytm used in a coding
| project like this. Want to see if I can get it to work with my
| mk-II, should be basically the same.
|
| those are some incredible tones you're working with in the
| video. are they being generated by the rytm or samples or
| something else?
| Jeff_Brown wrote:
| That video is of Mike Hodnick, not myself. But to answer your
| question, the timbres are generally a combination of both
| things you mention. At its core TidalCycles triggers synths
| and samplers in SuperCollider. It also controls the effect
| chain they go through, though, so you can pattern "clean
| DISTORTED clean clean DISTORTED" as easily as "kick hat snare
| hat". And sufficiently high-frequency control of the synths
| will have timbral consequences, too -- alternate, for
| instance, between two constant frequencies sufficiently
| quickly and you've built a simple FM synth.
___________________________________________________________________
(page generated 2023-06-28 23:00 UTC)