Overview
I am using a Midi Fighter 3D to play notes into Ableton Live (Lite in this situation, but I have a license for Suite if needed). The MF3D outputs 16 sequential MIDI notes for each of 4 banks as follows:
Bank 1: C1(36), C#1(37), D1(38), D#1(39), E1(40), F1(41), F#1(42), G1(43), G#1(44), A1(45), A#1(46), B1(47), C2(48), C#2(49), D2(50), D#2(51)
Bank 2: E2(52)... G3(67)
Bank 3: G#3(68)... B4(83)
Bank 4: C5(84)... D#6(99)
This works well for playing drum kits, however, I would also like to use it to play bass lines and other melodic parts, similar to how you would on the Ableton Push.
The Problem
When I play a melodic part, I would typically like to play in a scale, not chromatically. However, I don't want to reprogram the MF3D to output different MIDI notes as this would
- complicate using the standard drum racks,
- make it difficult to change scales,
- and probably mess up the way it works with other software.
I also want to maximize the number of in-scale notes available in the selected bank.
The Question
How can I re-map the sequential notes of the MF3D to sequential notes in a scale, starting at some arbitrary root note
I'd like a solution that I can put in a rack so I can use the chain selector to play a drum kit on one bank and an instrument on a different bank. Any other solution that lets me switch between drum kits and scales by changing banks on the MF3D would also be appreciated.
Example
For example, I might like to have bank 1 send the default note values, but map bank 2 to a C minor scale as follows:
E2 (52) --> C2 (36)
F2 (53) --> D2 (38)
F#2 (54) --> D#2 (39)
G2 (55) --> F2 (41)
G#2 (56) --> G2 (43)
A2 (57) --> G#2 (44)
A#2 (58) --> A#2 (46)
B2 (59) --> C3 (48)
C3 (60) --> D3 (50)
C#3 (61) --> D#3 (51)
D3 (62) --> F3 (53)
D#3 (63) --> G3 (55)
E3 (64) --> G#3 (56)
F3 (65) --> A#3 (58)
F#3 (66) --> C4 (60)
G3 (67) --> D4 (62)
What I've Tried
I tried using the Scale MIDI effect, but this doesn't work b/c it maps solely based on note name; i.e. I can map an incoming E to play a C in the same octave, but I can't have E2 mapped to C2 while E3 is mapped to G#3.