I'm able to allow 5 types of a scale as well as switching the key of the scale.
- Strict - If a note is in the scale you loaded, it gets played. If you specify a key, the note will get adjusted to that key.
- Up - If a note isn't in a scale, the last known note going up will get played. Ex. If C and D are in the scale, then C# will default to C. The key will be applied after a note has been specified.
- Down - If a note isn't in a scale, the last known note going down will get played. Ex. If C and D are in the scale, then C# will default to D. The key will be applied after a note has been specified.
- Random - If a note isn't in a scale, a random note within the octave range will be selected. Ex. If C, D and E are in the scale, C# can default to either C, D or E.
- Filter - The incoming note is checked to see if it is in the scale/key, if so it gets played. The incoming note doesn't get altered, it just gets played.
The attached scales.zip file has 1,658 scales to choose from.
Plus if you take a look at the script, you can change to any scale you want as well.
Here's a simple use of the scales. Notice that I use it on an External Instrument, that's so I can MIDI Record the changed notes.
UPDATED:20190316 Replaced the scales.zip with an update.