maximecb / Melodique

Algorithmic musical phrase generator
25 stars 1 forks source link

Incorporate chord grammars? #1

Open okayzed opened 6 years ago

okayzed commented 6 years ago

Melodique is very cool!

I am looking through your source code and am wondering if you have investigated "chord grammar" for generating chord progressions. Something like: generate the CF ahead of time ( I -> V -> IV -> I, fe) and then generate the melody on top of that. i see some notes in your comments (https://github.com/maximecb/Melodique/blob/master/melody.js#L249 and the switch statement :)

i had read a good handout a few years ago: https://web.archive.org/web/20150316014959/http://www.dangutwein.net/courses/mus201/handouts/har_mot.htm. also see: https://music.stackexchange.com/questions/56661/old-books-with-chord-progression-charts-or-matrices

once CF is created, can selectively modify chords for flavor effect: f.e. can do modal mixture or secondary mixtures as well as modulation between keys (pick a chord that is valid in grammar of start and end key, then find a path from start -> end using the intermediate chord).

anyways - thanks for putting melodique up, it is interesting to look at and play with. i also like the turing composers, as well - they are inspiring.

EDIT: i accidentally submitted too early, so the email starting this issue may be weird. also, sorry if i am describing ideas or thoughts you've already had.

maximecb commented 6 years ago

Hi @okayzed, thanks for the info and comments.

I wrote Melodique & Musictoy a few years back, when I was reading books about music theory. My grand plan was to eventually make a program called evertechno, which would generate an endless and always varying techno beat, and be user-parameterizable.

As you saw, Melodique has some basic notion of chord progressions, but not chord grammars. Do you know of chord grammars for more modern music? I think chord grammars would be best expressed in the form of a graph, where there is a start node (I), and directed edges to the notes that can follow it. Loops where it makes sense.

I recently bought a Korg Minilogue and an Arturia Microbrute and might write some Python code to try to generate some fun beats/loops.