First of all: Great job, men!
[+] change the voice by midinote. Useful for simply keyboard without programmable buttons. Comfortable because you have to press a key that is already in the place you have your hands..
I already solved this task using the midinote value as voice number and modifying midicallback.py
if messagetype == 9: # Note on
mod for voice change
if midinote in gv.voices: gv.ac.voice.change(midinote) else: # end mo gv.ac.noteon(midinote=midinote, midichannel=midichannel, velocity=velocity)
[+] stacked layers/voices
is it possible to attach more samples to a single midinote? Could be useful, for example, to make a patch with a piano sound + pad or strings in the background and so on....
[+] an idea for the modulations wheels
is it possible to use the mod. wheel to fade between two different voices (or stacked layer). This feature requires a continuos control of the volume of the playing samples. Drawback is that minimum two samples per midinote have to be played togheter (the one for mod=0 and the one for mod=127), eating poliphony. But this feature can add expressiveness: for example you can fade between a synth sound with opened or closed filter....
limit the effects to a region or samples.
[+] More basic effects per region or samples (delay / chorus).
Let me know your thoughs,
I could also help, I've experience in programming, but not in python.