Beispiel #1
0
void cParameter::getDisplayValue(char* text)
{
	switch(type)
	{
		case kParamOscOctave:		floatToOctave(value,text);break;
		case kParamOscCoarse:		floatToCoarse(value,text);break;
		case kParamOscFine:			floatToFine(value,text);break;
		case kParamOscPan:			floatToPan(value,text);break;
		case kParamOscLevel:		floatToLevel(value,text);break;
		case kParamOscSync:			getSyncDisplayValue(text);break;
		case kParamOscWaveform:		floatToOscWaveform(value,text);break;
		case kParamEnvAttack:		
		case kParamEnvDecay:		
		case kParamEnvRelease:		floatToEnvTime(value,text);break;
		case kParamEnvSustain:		floatToLevel(value,text);break;
		case kParamEnvTime:			floatToFine(value,text);break;
		case kParamLfoDelay:
		case kParamLfoFade:			floatToEnvTime(value,text);break;

		default:					floatToFloat(value,text);break;
	}
}
Beispiel #2
0
void SorolletVSTi::setProgram(VstInt32 program)
{
	if (program < 0 || program >= kNumPrograms)
		return;
	SorolletVSTiProgram *ap = &programs[program];
	curProgram = program;

	fVolume1 = ap->fVolume1;
	mSorolletVoice->setVolume1(fVolume1);

	fOctave1 = ap->fOctave1;
	mSorolletVoice->setOctave1(floatToOctave(fOctave1));

	fWave1 = ap->fWave1;
	mSorolletVoice->setWave1(floatToWave(fWave1));

	fPhase1 = ap->fPhase1;
	mSorolletVoice->setPhase1(fPhase1);

	fVolume2 = ap->fVolume2;
	mSorolletVoice->setVolume2(fVolume2);

	fOctave2 = ap->fOctave2;
	mSorolletVoice->setOctave2(floatToOctave(fOctave2));

	fWave2 = ap->fWave2;
	mSorolletVoice->setWave2(floatToWave(fWave2));

	fPhase2 = ap->fPhase2;
	mSorolletVoice->setPhase2(fPhase2);

	fWaveMixType = ap->fWaveMixType;
	mSorolletVoice->setWaveMixType(floatToWaveMixType(fWaveMixType));

	fNoiseAmount = ap->fNoiseAmount;
	mSorolletVoice->setNoiseAmount(fNoiseAmount);

	fNoiseMixType = ap->fNoiseMixType;
	mSorolletVoice->setNoiseMixType(floatToNoiseMixType(fNoiseMixType));

	// Envelopes

	fAmpTimeScale = ap->fAmpTimeScale;
	mSorolletVoice->getAmpADSR()->setTimeScale(floatToEnvelopeScale(fAmpTimeScale));

	fAmpAttack = ap->fAmpAttack;
	mSorolletVoice->getAmpADSR()->setAttack(fAmpAttack);

	fAmpDecay = ap->fAmpDecay;
	mSorolletVoice->getAmpADSR()->setDecay(fAmpDecay);

	fAmpSustain = ap->fAmpSustain;
	mSorolletVoice->getAmpADSR()->setSustainLevel(fAmpSustain);

	fAmpRelease = ap->fAmpRelease;
	mSorolletVoice->getAmpADSR()->setRelease(fAmpRelease);

	fAmpMinValue = ap->fAmpMinValue;
	mSorolletVoice->getAmpADSR()->setMinValue(fAmpMinValue);

	fAmpMaxValue = ap->fAmpMaxValue;
	mSorolletVoice->getAmpADSR()->setMaxValue(fAmpMaxValue);

	// ~~ pitch

	fPitchTimeScale = ap->fPitchTimeScale;
	mSorolletVoice->getPitchADSR()->setTimeScale(floatToEnvelopeScale(fPitchTimeScale));

	fPitchAttack = ap->fPitchAttack;
	mSorolletVoice->getPitchADSR()->setAttack(fPitchAttack);

	fPitchDecay = ap->fPitchDecay;
	mSorolletVoice->getPitchADSR()->setDecay(fPitchDecay);

	fPitchSustain = ap->fPitchSustain;
	mSorolletVoice->getPitchADSR()->setSustainLevel(fPitchSustain);

	fPitchRelease = ap->fPitchRelease;
	mSorolletVoice->getPitchADSR()->setRelease(fPitchRelease);

	fPitchMinValue = ap->fPitchMinValue;
	mSorolletVoice->getPitchADSR()->setMinValue(fPitchMinValue);

	fPitchMaxValue = ap->fPitchMaxValue;
	mSorolletVoice->getPitchADSR()->setMaxValue(fPitchMaxValue);

	// ~~ filter

	fFilterType = ap->fFilterType;
	mSorolletVoice->setFilterType(floatToFilterType(fFilterType));

	fFilterFrequency = ap->fFilterFrequency;
	mSorolletVoice->setFilterFrequency(fFilterFrequency);

	fFilterResonance = ap->fFilterResonance;
	mSorolletVoice->setFilterResonance(fFilterResonance);

	// ~~~

	fSaturate = ap->fSaturate;
	mSorolletVoice->setSaturate(fSaturate);

	// ~~~

	fEQActive = ap->fEQActive;
	mSorolletVoice->setEQActive(fEQActive > 0.5f);

	fEQLowFrequency = ap->fEQLowFrequency;
	mSorolletVoice->setEQLowFrequency(fEQLowFrequency);

	fEQHighFrequency = ap->fEQHighFrequency;
	mSorolletVoice->setEQHighFrequency(fEQHighFrequency);

	fEQLowGain = ap->fEQLowGain;
	mSorolletVoice->setEQLowGain(fEQLowGain);

	fEQMidGain = ap->fEQMidGain;
	mSorolletVoice->setEQMidGain(fEQMidGain);

	fEQHiGain = ap->fEQHiGain;
	mSorolletVoice->setEQHiGain(fEQHiGain);

}
Beispiel #3
0
void SorolletVSTi::setParameter(VstInt32 index, float value)
{
	int r;
	SorolletVSTiProgram *ap = &programs[curProgram];
	switch (index)
	{
		case PARAM_VOLUME1:
			fVolume1 = ap->fVolume1 = value;
			mSorolletVoice->setVolume1(fVolume1);
			break;
		case PARAM_OCTAVE1:
			fOctave1 = ap->fOctave1 = value;
			mSorolletVoice->setOctave1(floatToOctave(fOctave1));
			break;
		case PARAM_WAVE1:
			fWave1 = ap->fWave1 = value;
			mSorolletVoice->setWave1(floatToWave(fWave1));
			break;
		case PARAM_PHASE1:
			fPhase1 = ap->fPhase1 = value;
			mSorolletVoice->setPhase1(fPhase1);
			break;
		case PARAM_VOLUME2:
			fVolume2 = ap->fVolume2 = value;
			mSorolletVoice->setVolume2(fVolume2);
			break;
		case PARAM_OCTAVE2:
			fOctave2 = ap->fOctave2 = value;
			mSorolletVoice->setOctave2(floatToOctave(fOctave2));
			break;
		case PARAM_WAVE2:
			fWave2 = ap->fWave2 = value;
			mSorolletVoice->setWave2(floatToWave(fWave2));
			break;
		case PARAM_PHASE2:
			fPhase2 = ap->fPhase2 = value;
			mSorolletVoice->setPhase2(fPhase2);
			break;
		case PARAM_WAVE_MIX_TYPE:
			fWaveMixType = ap->fWaveMixType = value;
			mSorolletVoice->setWaveMixType(floatToWaveMixType(fWaveMixType));
			break;
		case PARAM_NOISE_AMOUNT:
			fNoiseAmount = ap->fNoiseAmount = value;
			mSorolletVoice->setNoiseAmount(fNoiseAmount);
			break;
		case PARAM_NOISE_MIX_TYPE:
			fNoiseMixType = ap->fNoiseMixType = value;
			mSorolletVoice->setNoiseMixType(floatToNoiseMixType(fNoiseMixType));
			break;
		case PARAM_AMP_ATTACK:
			fAmpAttack = ap->fAmpAttack = value;
			mSorolletVoice->getAmpADSR()->setAttack(value);
			break;
		case PARAM_AMP_DECAY:
			fAmpDecay = ap->fAmpDecay = value;
			mSorolletVoice->getAmpADSR()->setDecay(value);
			break;
		case PARAM_AMP_SUSTAIN:
			fAmpSustain = ap->fAmpSustain = value;
			mSorolletVoice->getAmpADSR()->setSustainLevel(value);
			break;
		case PARAM_AMP_RELEASE:
			fAmpRelease = ap->fAmpRelease = value;
			mSorolletVoice->getAmpADSR()->setRelease(value);
			break;
		case PARAM_AMP_TIME_SCALE:
			fAmpTimeScale = ap->fAmpTimeScale = value;
			mSorolletVoice->getAmpADSR()->setTimeScale(floatToEnvelopeScale(value));
			r = updateDisplay(); // b/c this affects the 4 previous display values
			break;
		case PARAM_AMP_MIN_VALUE:
			fAmpMinValue = ap->fAmpMinValue = value;
			mSorolletVoice->getAmpADSR()->setMinValue(value);
			break;
		case PARAM_AMP_MAX_VALUE:
			fAmpMaxValue = ap->fAmpMaxValue = value;
			mSorolletVoice->getAmpADSR()->setMaxValue(value);
			break;
		case PARAM_PITCH_ATTACK:
			fPitchAttack = ap->fPitchAttack = value;
			mSorolletVoice->getPitchADSR()->setAttack(value);
			break;
		case PARAM_PITCH_DECAY:
			fPitchDecay = ap->fPitchDecay = value;
			mSorolletVoice->getPitchADSR()->setDecay(value);
			break;
		case PARAM_PITCH_SUSTAIN:
			fPitchSustain = ap->fPitchSustain = value;
			mSorolletVoice->getPitchADSR()->setSustainLevel(value);
			break;
		case PARAM_PITCH_RELEASE:
			fPitchRelease = ap->fPitchRelease = value;
			mSorolletVoice->getPitchADSR()->setRelease(value);
			break;
		case PARAM_PITCH_TIME_SCALE:
			fPitchTimeScale = ap->fPitchTimeScale = value;
			mSorolletVoice->getPitchADSR()->setTimeScale(floatToEnvelopeScale(value));
			updateDisplay(); // b/c this affects the 4 previous display values
			break;
		case PARAM_PITCH_MIN_VALUE:
			fPitchMinValue = ap->fPitchMinValue = value;
			mSorolletVoice->getPitchADSR()->setMinValue(value);
			break;
		case PARAM_PITCH_MAX_VALUE:
			fPitchMaxValue = ap->fPitchMaxValue = value;
			mSorolletVoice->getPitchADSR()->setMaxValue(value);
			break;
		case PARAM_FILTER_TYPE:
			fFilterType = ap->fFilterType = value;
			mSorolletVoice->setFilterType(floatToFilterType(fFilterType));
			break;
		case PARAM_FILTER_FREQUENCY:
			fFilterFrequency = ap->fFilterFrequency = value;
			mSorolletVoice->setFilterFrequency(fFilterFrequency);
			break;
		case PARAM_FILTER_RESONANCE:
			fFilterResonance = ap->fFilterResonance = value;
			mSorolletVoice->setFilterResonance(fFilterResonance);
			break;
		case PARAM_SATURATE:
			fSaturate = ap->fSaturate = value;
			mSorolletVoice->setSaturate(fSaturate);
			break;
		case PARAM_EQ_ACTIVE:
			fEQActive = ap->fEQActive = value;
			mSorolletVoice->setEQActive(value > 0.5f);
			break;
		case PARAM_EQ_LOW_FREQUENCY:
			fEQLowFrequency = ap->fEQLowFrequency = value;
			mSorolletVoice->setEQLowFrequency(value);
			break;
		case PARAM_EQ_HIGH_FREQUENCY:
			fEQHighFrequency = ap->fEQHighFrequency = value;
			mSorolletVoice->setEQHighFrequency(value);
			break;
		case PARAM_EQ_LOW_GAIN:
			fEQLowGain = ap->fEQLowGain = value;
			mSorolletVoice->setEQLowGain(value);
			break;
		case PARAM_EQ_MID_GAIN:
			fEQMidGain = ap->fEQMidGain = value;
			mSorolletVoice->setEQMidGain(value);
			break;
		case PARAM_EQ_HI_GAIN:
			fEQHiGain = ap->fEQHiGain = value;
			mSorolletVoice->setEQHiGain(value);
			break;
	}
}
Beispiel #4
0
void SorolletVSTi::getParameterDisplay(VstInt32 index, char* text)
{
	text[0] = 0;
	switch (index)
	{
		case PARAM_VOLUME1: dB2string(fVolume1, text, kVstMaxParamStrLen);
			break;
		case PARAM_OCTAVE1: int2string(floatToOctave(fOctave1), text, kVstMaxParamStrLen);
			break;
		case PARAM_WAVE1: floatToWaveName(fWave1, text);
			break;
		case PARAM_PHASE1: float2string(fPhase1, text, kVstMaxParamStrLen);
			break;
		case PARAM_VOLUME2: dB2string(fVolume2, text, kVstMaxParamStrLen);
			break;
		case PARAM_OCTAVE2: int2string(floatToOctave(fOctave2), text, kVstMaxParamStrLen);
			break;
		case PARAM_WAVE2: floatToWaveName(fWave2, text);
			break;
		case PARAM_PHASE2: float2string(fPhase2, text, kVstMaxParamStrLen);
			break;
		case PARAM_WAVE_MIX_TYPE: floatToWaveMixTypeName(fWaveMixType, text);
			break;
		case PARAM_NOISE_AMOUNT: float2string(fNoiseAmount, text, kVstMaxParamStrLen);
			break;
		case PARAM_NOISE_MIX_TYPE: floatToNoiseMixTypeName(fNoiseMixType, text);
			break;
		case PARAM_AMP_ATTACK: formatTime(mSorolletVoice->getAmpADSR()->getAttackTime(), text);
			break;
		case PARAM_AMP_DECAY: formatTime(mSorolletVoice->getAmpADSR()->getDecayTime(), text);
			break;
		case PARAM_AMP_SUSTAIN: float2string(fAmpSustain, text, kVstMaxParamStrLen);
			break;
		case PARAM_AMP_RELEASE: formatTime(mSorolletVoice->getAmpADSR()->getReleaseTime(), text);
			break;
		case PARAM_AMP_TIME_SCALE: float2string(floatToEnvelopeScale(fAmpTimeScale), text, kVstMaxParamStrLen);
			break;
		case PARAM_AMP_MIN_VALUE: float2string(mSorolletVoice->getAmpADSR()->getDisplayMinValue(), text, kVstMaxParamStrLen);
			break;
		case PARAM_AMP_MAX_VALUE: float2string(mSorolletVoice->getAmpADSR()->getDisplayMaxValue(), text, kVstMaxParamStrLen);
			break;
		case PARAM_PITCH_ATTACK: formatTime(mSorolletVoice->getPitchADSR()->getAttackTime(), text);
			break;
		case PARAM_PITCH_DECAY: formatTime(mSorolletVoice->getPitchADSR()->getDecayTime(), text);
			break;
		case PARAM_PITCH_SUSTAIN: float2string(fPitchSustain, text, kVstMaxParamStrLen);
			break;
		case PARAM_PITCH_RELEASE: formatTime(mSorolletVoice->getPitchADSR()->getReleaseTime(), text);
			break;
		case PARAM_PITCH_TIME_SCALE: float2string(floatToEnvelopeScale(fPitchTimeScale), text, kVstMaxParamStrLen);
			break;
		case PARAM_PITCH_MIN_VALUE: float2string(mSorolletVoice->getPitchADSR()->getDisplayMinValue(), text, kVstMaxParamStrLen);
			break;
		case PARAM_PITCH_MAX_VALUE: float2string(mSorolletVoice->getPitchADSR()->getDisplayMaxValue(), text, kVstMaxParamStrLen);
			break;
		case PARAM_FILTER_TYPE: floatToFilterTypeName(fFilterType, text);
			break;
		case PARAM_FILTER_FREQUENCY: dB2string(mSorolletVoice->getFilterFrequencyDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_FILTER_RESONANCE: dB2string(mSorolletVoice->getFilterResonanceDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_SATURATE: float2string(fSaturate, text, kVstMaxParamStrLen);
			break;
		case PARAM_EQ_ACTIVE:
			if (fEQActive > 0.5f)
			{
				vst_strncpy(text, "on", kVstMaxParamStrLen);
			}
			else
			{
				vst_strncpy(text, "off", kVstMaxParamStrLen);
			}
			break;
		case PARAM_EQ_LOW_FREQUENCY: float2string(mSorolletVoice->getEQLowFrequencyDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_EQ_HIGH_FREQUENCY: float2string(mSorolletVoice->getEQHighFrequencyDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_EQ_LOW_GAIN: float2string(mSorolletVoice->getEQLowGainDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_EQ_MID_GAIN: float2string(mSorolletVoice->getEQMidGainDisplay(), text, kVstMaxParamStrLen);
			break;
		case PARAM_EQ_HI_GAIN: float2string(mSorolletVoice->getEQHiGainDisplay(), text, kVstMaxParamStrLen);
			break;

	}
}