MIDI CC
This commit is contained in:
parent
0295e85aed
commit
41e5018bbc
3 changed files with 284 additions and 17 deletions
|
@ -25,7 +25,7 @@
|
||||||
#include "ObxdVoice.h"
|
#include "ObxdVoice.h"
|
||||||
enum ObxdParameters
|
enum ObxdParameters
|
||||||
{
|
{
|
||||||
UNDEFINED,
|
UNDEFINED = 0,
|
||||||
MIDILEARN,
|
MIDILEARN,
|
||||||
VOLUME,
|
VOLUME,
|
||||||
VOICE_COUNT,
|
VOICE_COUNT,
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
==============================================================================
|
==============================================================================
|
||||||
This file is part of Obxd synthesizer.
|
This file is part of Obxd synthesizer.
|
||||||
|
|
||||||
Copyright © 2013-2014 Filatov Vadim
|
Copyright © 2013-2014 Filatov Vadim
|
||||||
|
|
||||||
Contact author via email :
|
Contact author via email :
|
||||||
justdat_@_e1.ru
|
justdat_@_e1.ru
|
||||||
|
@ -23,13 +23,286 @@
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "SynthEngine.h"
|
#include "SynthEngine.h"
|
||||||
|
#include "ParamsEnum.h"
|
||||||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||||||
class MidiMap
|
class MidiMap
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int controllers[255];
|
int controllers[255];
|
||||||
|
int controllers_default[255];
|
||||||
|
|
||||||
|
bool loaded = false;
|
||||||
MidiMap()
|
MidiMap()
|
||||||
{
|
{
|
||||||
for(int i = 0 ; i < 255;i++)
|
reset();
|
||||||
|
set_default();
|
||||||
|
}
|
||||||
|
void reset(){
|
||||||
|
for(int i = 0 ; i < 255;i++){
|
||||||
controllers[i] = 0;
|
controllers[i] = 0;
|
||||||
|
controllers_default[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_default(){
|
||||||
|
int midicc = 71;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = VOLUME;
|
||||||
|
|
||||||
|
midicc = 72;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = VOICE_COUNT;
|
||||||
|
|
||||||
|
midicc = 33;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = TUNE;
|
||||||
|
|
||||||
|
midicc = 17;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = OCTAVE;
|
||||||
|
|
||||||
|
midicc = 118;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = BENDRANGE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = BENDOSC2;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LEGATOMODE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = BENDLFORATE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = VFLTENV;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = VAMPENV;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ASPLAYEDALLOCATION;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PORTAMENTO;
|
||||||
|
|
||||||
|
//midicc = 16;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = UNISON;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = UDET;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2_DET;
|
||||||
|
|
||||||
|
//midicc = 19;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOFREQ;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOSINWAVE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOSQUAREWAVE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOSHWAVE;
|
||||||
|
|
||||||
|
midicc = 22;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LFO1AMT;
|
||||||
|
|
||||||
|
midicc = 25;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LFO2AMT;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOOSC1;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOOSC2;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOFILTER;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOPW1;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFOPW2;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2HS;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = XMOD;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC1P;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2P;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSCQuantize;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC1Saw;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC1Pul;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2Saw;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2Pul;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PW;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = BRIGHTNESS;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ENVPITCH;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC1MIX;
|
||||||
|
|
||||||
|
//midicc = 8;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = OSC2MIX;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = NOISEMIX;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = FLT_KF;
|
||||||
|
|
||||||
|
midicc = 74;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = CUTOFF;
|
||||||
|
|
||||||
|
midicc = 42;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = RESONANCE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = MULTIMODE;
|
||||||
|
|
||||||
|
midicc = 47;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = FILTER_WARM;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = BANDPASS;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = FOURPOLE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ENVELOPE_AMT;
|
||||||
|
|
||||||
|
midicc = 73;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LATK;
|
||||||
|
|
||||||
|
midicc = 36;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LDEC;
|
||||||
|
|
||||||
|
midicc = 37;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LSUS;
|
||||||
|
|
||||||
|
midicc = 72;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = LREL;
|
||||||
|
|
||||||
|
midicc = 38;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = FATK;
|
||||||
|
|
||||||
|
midicc = 39;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = FDEC;
|
||||||
|
|
||||||
|
midicc = 40;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = FSUS;
|
||||||
|
|
||||||
|
midicc = 41;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = FREL;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ENVDER;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = FILTERDER;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PORTADER;
|
||||||
|
|
||||||
|
//midicc = 81;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PAN1;
|
||||||
|
|
||||||
|
//midicc = 82;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PAN2;
|
||||||
|
|
||||||
|
midicc = 83;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN3;
|
||||||
|
|
||||||
|
midicc = 84;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN4;
|
||||||
|
|
||||||
|
midicc = 85;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN5;
|
||||||
|
|
||||||
|
midicc = 86;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN6;
|
||||||
|
|
||||||
|
midicc = 87;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN7;
|
||||||
|
|
||||||
|
midicc = 88;
|
||||||
|
controllers[midicc] = controllers_default[midicc] = PAN8;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ECONOMY_MODE;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LFO_SYNC;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PW_ENV;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PW_ENV_BOTH;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = ENV_PITCH_BOTH;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = FENV_INVERT;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = PW_OSC2_OFS;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = LEVEL_DIF;
|
||||||
|
|
||||||
|
//midicc = 0;
|
||||||
|
//controllers[midicc] = controllers_default[midicc] = SELF_OSC_PUSH;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int& operator[](int index)
|
||||||
|
{
|
||||||
|
if (index >= 255) {
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
return controllers[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
void setXml( XmlElement &xml){
|
||||||
|
for (int i = 0; i < 255; ++i)
|
||||||
|
{
|
||||||
|
xml.setAttribute("Val_" + String(i), controllers[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void getXml(XmlElement &xml){
|
||||||
|
for (int i = 0; i < 255; ++i)
|
||||||
|
{
|
||||||
|
int tmp = xml.getIntAttribute("Val_" + String(i), controllers_default[i]);
|
||||||
|
if (tmp == 0){
|
||||||
|
tmp = controllers_default[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
controllers[i] = tmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
|
@ -230,22 +230,22 @@ inline void ObxdAudioProcessor::processMidiPerSample (MidiBuffer::Iterator* iter
|
||||||
lastMovedController = midiMsg->getControllerNumber();
|
lastMovedController = midiMsg->getControllerNumber();
|
||||||
|
|
||||||
if (programs.currentProgramPtr->values[MIDILEARN] > 0.5f)
|
if (programs.currentProgramPtr->values[MIDILEARN] > 0.5f)
|
||||||
bindings.controllers[lastMovedController] = lastUsedParameter;
|
bindings[lastMovedController] = lastUsedParameter;
|
||||||
|
|
||||||
if (programs.currentProgramPtr->values[UNLEARN] > 0.5f)
|
if (programs.currentProgramPtr->values[UNLEARN] > 0.5f)
|
||||||
{
|
{
|
||||||
midiControlledParamSet = true;
|
midiControlledParamSet = true;
|
||||||
bindings.controllers[lastMovedController] = 0;
|
bindings[lastMovedController] = 0;
|
||||||
setEngineParameterValue (UNLEARN, 0);
|
setEngineParameterValue (UNLEARN, 0);
|
||||||
lastMovedController = 0;
|
lastMovedController = 0;
|
||||||
lastUsedParameter = 0;
|
lastUsedParameter = 0;
|
||||||
midiControlledParamSet = false;
|
midiControlledParamSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bindings.controllers[lastMovedController] > 0)
|
if (bindings[lastMovedController] > 0)
|
||||||
{
|
{
|
||||||
midiControlledParamSet = true;
|
midiControlledParamSet = true;
|
||||||
setEngineParameterValue (bindings.controllers[lastMovedController],
|
setEngineParameterValue (bindings[lastMovedController],
|
||||||
midiMsg->getControllerValue() / 127.0f);
|
midiMsg->getControllerValue() / 127.0f);
|
||||||
|
|
||||||
setEngineParameterValue (MIDILEARN, 0);
|
setEngineParameterValue (MIDILEARN, 0);
|
||||||
|
@ -355,10 +355,7 @@ void ObxdAudioProcessor::getStateInformation(MemoryBlock& destData)
|
||||||
|
|
||||||
xmlState.addChildElement(xprogs);
|
xmlState.addChildElement(xprogs);
|
||||||
|
|
||||||
for (int i = 0; i < 255; ++i)
|
bindings.setXml(xmlState);
|
||||||
{
|
|
||||||
xmlState.setAttribute("Val_" + String(i), bindings.controllers[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
copyXmlToBinary(xmlState, destData);
|
copyXmlToBinary(xmlState, destData);
|
||||||
}
|
}
|
||||||
|
@ -415,10 +412,7 @@ void ObxdAudioProcessor::setStateInformation(const void* data, int sizeInBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 255; ++i)
|
bindings.getXml(*xmlState);
|
||||||
{
|
|
||||||
bindings.controllers[i] = xmlState->getIntAttribute("Val_" + String(i), 0);
|
|
||||||
}
|
|
||||||
#if ! DEMOVERSION
|
#if ! DEMOVERSION
|
||||||
setCurrentProgram(xmlState->getIntAttribute(S("currentProgram"), 0));
|
setCurrentProgram(xmlState->getIntAttribute(S("currentProgram"), 0));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue