Last active
November 9, 2020 19:29
-
-
Save rveitch/4e083cbb61476e3e126c34ce5af2b9e4 to your computer and use it in GitHub Desktop.
Morningstar MC6 Midi Program Mapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const MIDI_OFFSET = 1; | |
const BANK_MIN = 1; | |
const BANK_MAX = 30; | |
const PRESETS_PER_BANK = 12; // CC# 10-21, Presets A-L | |
const PRESET_MIN = 10; // Control Change # - Preset A | |
const PRESET_MAX = 21;// Control Change # - Preset L | |
const CONTROL_CHANGE_VALUE = 1; // Control Change Value - (1 = On Press) | |
function getBank(incomingProgramChange) { | |
return Math.floor(incomingProgramChange / PRESETS_PER_BANK) + MIDI_OFFSET; | |
} | |
function getPreset(incomingProgramChange, bank) { | |
const minPresetForBank = PRESETS_PER_BANK * (bank - MIDI_OFFSET); | |
return (incomingProgramChange - minPresetForBank) + PRESET_MIN; | |
} | |
function mapIncomingEvent(incomingProgramChange) { | |
const bank = getBank(incomingProgramChange); | |
const present = getPreset(incomingProgramChange, bank); | |
return { | |
pc: bank, | |
cc: present, | |
ccv: CONTROL_CHANGE_VALUE, | |
}; | |
} | |
function mapIncomingEventInline(incomingProgramChange) { | |
const bank = Math.floor(incomingProgramChange / PRESETS_PER_BANK) + MIDI_OFFSET; | |
const present = (incomingProgramChange - (PRESETS_PER_BANK * (bank - MIDI_OFFSET))) + PRESET_MIN; | |
return { | |
pc: bank, | |
cc: present, | |
ccv: CONTROL_CHANGE_VALUE, | |
}; | |
} | |
// mapIncomingEvent(24); // Uncomment to run example. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Runkit Example: https://gist.github.com/rveitch/4e083cbb61476e3e126c34ce5af2b9e4