Musical notation to Patterns examples

as an exercise (and with one eye on a possible future project) I started converting a book of motifs from the Ring to Supercollider. And I realized

  • this is quite hard
  • there’s More Than One Way To Do It ™
  • loads of other people must have done this already

You can create a large Pseq with all the notes in order, with arrays where there are chords, but how do you do it intelligently? (And even by brute force, I’m not clear what the best approach is where there are multiple, more or less independent lines of melody.)

Does anyone have any insights about how to go about this? Examples of it being done? It seems that certain principles should be observed, such as

  • it should be as componentized as possible - you don’t want a giant complex pattern, you want many patterns that can be combined in various ways
  • it should be possible to change instruments, keys, tempos, etc
2 Likes

This sounds interesting. What is the “Ring”?

Presumably Wagner’s Ring Cycle?

https://en.wikipedia.org/wiki/Der_Ring_des_Nibelungen

1 Like

My favourite way to convert notation into patterns is to use a domain specific language.

I’ve created a quark that works well for me (although in a next iteration (none is planned at the moment), I’d probably want to modify a few things). It’s called Panola (for PAttern NOtation LAnguage) and you can find installation instructions and a tutorial on sccode.org: Panola - pattern notation language tutorial

In short, it offers a kind of text-based music notation, with some support to animate certain parameters over time (e.g. to make a crescendo) from which you then automatically extract either a complete pattern, or the individual elements that make up a complete pattern (like extracting only the durations, or only the notenumbers, etc.).

2 Likes

this looks truly excellent.

Thank you for sharing this. I’ll let you know how it goes.

Probably, ChordSymbol extention also can be helpfull.

2 Likes

so far, so
Panola("(<g5_8. e c> <e_16 c g4> <f5_8 d g4> <g5_4. e c> <e_4 c g4> r_8)*2").asPbind.play