[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)