all current parameters can be set
This commit is contained in:
parent
3c9edede8d
commit
3f63138b85
@ -16,7 +16,6 @@
|
|||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "chassis.hpp"
|
#include "chassis.hpp"
|
||||||
|
|
||||||
void Chassis::initParameter(uint32_t index, Parameter ¶meter) {
|
void Chassis::initParameter(uint32_t index, Parameter ¶meter) {
|
||||||
@ -246,9 +245,9 @@ void Chassis::initParameter(uint32_t index, Parameter ¶meter) {
|
|||||||
parameter.midiCC = 26;
|
parameter.midiCC = 26;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// chorus, porta, bend range, key mode still to do
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Chassis::setParameterValue(uint32_t index, float value) {
|
void Chassis::setParameterValue(uint32_t index, float value) {
|
||||||
// should be trapped by host, but let's be safe
|
// should be trapped by host, but let's be safe
|
||||||
if (value < 0.0f) value = 0.0f;
|
if (value < 0.0f) value = 0.0f;
|
||||||
@ -262,31 +261,39 @@ void Chassis::setParameterValue(uint32_t index, float value) {
|
|||||||
s.patchRam.lfoDelay = value;
|
s.patchRam.lfoDelay = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case paramVCORange:
|
|
||||||
// bits 0-2 of switch 1
|
|
||||||
// doesn't look great in Carla because of odd behaviour with small integer knobs
|
|
||||||
s.patchRam.switch1 &= 0xf8;
|
|
||||||
s.patchRam.switch1 |= (1 << (int)value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case paramVCOLFO:
|
case paramVCOLFO:
|
||||||
s.patchRam.vcoLfo = value;
|
s.patchRam.vcoLfo = value;
|
||||||
break;
|
break;
|
||||||
case paramPWMLFO:
|
case paramPWMLFO:
|
||||||
s.patchRam.pwmLfo = value;
|
s.patchRam.pwmLfo = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case paramSaw:
|
|
||||||
s.patchRam.switch1 &= 0xef;
|
|
||||||
s.patchRam.switch1 |= (value > 63) << 4;
|
|
||||||
break;
|
|
||||||
case paramSqr:
|
|
||||||
s.patchRam.switch1 &= 0xf7;
|
|
||||||
s.patchRam.switch1 |= (value > 63) << 3;
|
|
||||||
break;
|
|
||||||
case paramSub:
|
case paramSub:
|
||||||
s.patchRam.sub = value;
|
s.patchRam.sub = value;
|
||||||
break;
|
break;
|
||||||
|
case paramNoise:
|
||||||
|
s.patchRam.noise = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case paramVCFFreq:
|
||||||
|
s.patchRam.vcfFreq = value;
|
||||||
|
break;
|
||||||
|
case paramVCFReso:
|
||||||
|
s.patchRam.vcfReso = value;
|
||||||
|
break;
|
||||||
|
case paramVCFEnv:
|
||||||
|
s.patchRam.vcfEnv = value;
|
||||||
|
break;
|
||||||
|
case paramVCFLFO:
|
||||||
|
s.patchRam.vcfLfo = value;
|
||||||
|
break;
|
||||||
|
case paramVCFKey:
|
||||||
|
s.patchRam.vcfKey = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case paramVCALevel:
|
||||||
|
s.patchRam.vca = value;
|
||||||
|
break;
|
||||||
|
|
||||||
case paramAttack:
|
case paramAttack:
|
||||||
s.patchRam.env_a = value;
|
s.patchRam.env_a = value;
|
||||||
break;
|
break;
|
||||||
@ -299,12 +306,46 @@ void Chassis::setParameterValue(uint32_t index, float value) {
|
|||||||
case paramRelease:
|
case paramRelease:
|
||||||
s.patchRam.env_r = value;
|
s.patchRam.env_r = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// switch 1 params
|
||||||
|
case paramVCORange: // bits 0-2 of switch 1
|
||||||
|
// doesn't look great in Carla because of odd behaviour with small integer knobs
|
||||||
|
s.patchRam.switch1 &= 0xf8;
|
||||||
|
s.patchRam.switch1 |= (1 << (int)value);
|
||||||
|
break;
|
||||||
|
case paramSqr: // bit 3 of switch 1
|
||||||
|
s.patchRam.switch1 &= 0xf7;
|
||||||
|
s.patchRam.switch1 |= (value > 63) << 3;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case paramSaw: // bit 4 of switch 1
|
||||||
|
s.patchRam.switch1 &= 0xef;
|
||||||
|
s.patchRam.switch1 |= (value > 63) << 4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
// missing chorus switch
|
||||||
|
|
||||||
|
// switch 2 params
|
||||||
|
case paramPWMMode: // bit 0 of switch 2
|
||||||
|
s.patchRam.switch2 &= 0xfe;
|
||||||
|
s.patchRam.switch2 |= (value > 63);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case paramVCFMode: // bit 1 of switch 2
|
||||||
|
s.patchRam.switch2 &= 0xfd;
|
||||||
|
s.patchRam.switch2 |= (value > 63) << 1;
|
||||||
|
break;
|
||||||
case paramEnvGate:
|
case paramEnvGate:
|
||||||
s.patchRam.switch2 &= 0xfb;
|
s.patchRam.switch2 &= 0xfb;
|
||||||
s.patchRam.switch2 |= (value > 63) << 2;
|
s.patchRam.switch2 |= (value > 63) << 2;
|
||||||
break;
|
break;
|
||||||
case paramVCALevel:
|
|
||||||
s.patchRam.vca = value;
|
case paramHPF: // bits 3-4 of switch 2
|
||||||
|
// doesn't look great in Carla because of odd behaviour with small integer knobs
|
||||||
|
if (value > 3) value = 3;
|
||||||
|
s.patchRam.switch2 &= 0xf3;
|
||||||
|
s.patchRam.switch2 |= (int)value << 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ class Synth {
|
|||||||
uint8_t pwmLfo = 55;
|
uint8_t pwmLfo = 55;
|
||||||
uint8_t noise = 0;
|
uint8_t noise = 0;
|
||||||
uint8_t vcfFreq = 85;
|
uint8_t vcfFreq = 85;
|
||||||
uint8_t vcfResp = 0;
|
uint8_t vcfReso = 0;
|
||||||
uint8_t vcfEnv = 0;
|
uint8_t vcfEnv = 0;
|
||||||
uint8_t vcfLfo = 0;
|
uint8_t vcfLfo = 0;
|
||||||
uint8_t vcfKey = 108;
|
uint8_t vcfKey = 108;
|
||||||
|
Loading…
Reference in New Issue
Block a user