For a while I’ve been playing around with the idea of programming an application that allows non-musicians to make music, and even improvise. Basically it would work by having “blocks”, which have a scale and a chord property (and some others), and the application will play through them. So the application always knows the current scale and chord.
One idea would be to just press keys on a midi keyboard, and the application would filter out the notes which aren’t in the current chord (with some more flexibility, to play non-chord notes when needed), and quantize everything. Or there could be a module that plays some notes of the current chord, and an arpeggiator creating melodies from this.
This would allow me to jam with some of my friends who don’t know anything about music, and at least it wouldn’t sound out of tune. I’d change the chords now and then, and all instruments would follow. Seems like a lot of fun to me ![]()
I was planning to make this into a computer program, which I would control with a Midibox64 - but now I’m wondering if it could be done entirely with MIOS. I don’t know assembler (well, I do have some asm experience but it’s a long time ago), and my C is very very rusty. I do know a lot of other programming languages (C#, some java, php, actionscript, javascript, ruby, etc) so I think I’ll be able to learn.
So I would have one main box which would need the following features :
-
send midi time code
-
a list of many musical scales and the possible chords within these scales
-
an interface to create and select patterns, which consist of blocks with a length, scale, and chord (displayed on a 16x2 character LCD, I’m currently working out the screens for how this would look…)
-
when a block is played, it should send the notes of the scale and then the notes of the chord through midi on a certain channel
Then I’d make slave boxes (starting with one, off course), which would do the following :
-
receive the midi time code
-
receive the notes of the scales and chords sent by the main box
-
each box could have a different way of handling what notes to play, ie arpegiators, little integrated keyboard, etc
-
quantize notes, with a changeable resolution (or even quantize to certain rhythm-patterns)
-
send midi data to synths, etc
This is the basic idea, I hope I explained it well (language barrier). I have lots of other ideas (for creating beats, etc) but I want to start “simple”. I know this will probably be a lot of work, but can it be done with MIOS? Or would I be better off just writing the software for the computer, and then create some midiboxes or buy some suitable controllers to control the software?