I'm working on a generative music engine. See attached patch for rudimentary beginnings.
The Idea is that you enter a chord sequence through a gui, tap a tempo, and the machine starts improvising for you.
A more advanced version would let you enter the notes and tempo in one go via midi. Just play the song in block-chords on quarter notes and hit a predefined key as soon as the chord sequence loops.
I have made a version of this patch that works quite well for one tempo and chord sequence.
I have also made a start on the generic version. You can choose a scale, and it translates numbers into notes for that scale. See attachment.
I'd love to collaborate on this. Who's up for that?
Some questions about the patch I made:
I have a sub-patch called SelectNoteFromScale, that inputs a number and a list that represents a scale.
So input 0 in any scale outputs 0. Input 1 plus Major, output 2, etcetera.
It was quite easy to get working for positive numbers, but the negative ones required some hacks I don't really understand myself, even though I made it
I've commented it as far as I could.
Who can explain why/how this works?
Even better: I\m sure there is an elegant way of doing this. How?
Then some more general questions:
I made this based on lists for the scales. What would be the advantages/disadvantages of doing it with arrays?
I made this with the length of the list varying according to the scale. that way you can use a counter as the input for SelectNoteFromScale, and hear a nice scale being played.
Another way would be to have the list always 12 long. That would have advantages for transposing melodies to other scales. Look here:
Your thoughts on this are much appreciated.
All the best,