Monomachine suggestion:
An option to set a midichannel to receive what notes are allowed.
Now, this might seem a bit confusing at first but hear me out and it will all make sense.
Say you're generating chords using max/msp or something or you have a jazz pianist who can play chords on a midi keyboard.
These chords come into the monomachine on for example channel 16, the currently held notes are saved in a memory.
Then, when the MM is going to play a note, say a C#, it will look to see what notes are in its current chord, take the note closest to that one, in our example we might be playing a C minor chord, C, D# and G, so the monomachine will chose C.
Why such a function you might ask?
Well, imagine this, you might have a live-set in ableton live running, you can write a midi-channel with all the chords for all your tracks that go in sync with the song, send out the chords to the MM and then you can go crazy sequencing in realtime and all the stuff you do will always be in the same chord or scale as the tracks playing.
I've developed similar functionality in max4live, it's very easy and it turns whatever has it into the most complex arpeggiator there is!
Not to mention how awesome it is!