/* ============================================================================== CustomSamplerSound.cpp Created: 5 Sep 2023 3:35:11pm Author: binya ============================================================================== */ #include "SamplerParameters.h" SamplerParameters::SamplerParameters(const juce::AudioProcessorValueTreeState& apvts, PluginParameters::State& pluginState, const juce::AudioBuffer& sample, int sampleRate) : sample(sample), sampleRate(sampleRate), gain(dynamic_cast(apvts.getParameter(PluginParameters::SAMPLE_GAIN))), speedFactor(dynamic_cast(apvts.getParameter(PluginParameters::SPEED_FACTOR))), octaveSpeedFactor(dynamic_cast(apvts.getParameter(PluginParameters::OCTAVE_SPEED_FACTOR))), attack(dynamic_cast(apvts.getParameter(PluginParameters::ATTACK))), release(dynamic_cast(apvts.getParameter(PluginParameters::RELEASE))), attackShape(dynamic_cast(apvts.getParameter(PluginParameters::ATTACK_SHAPE))), releaseShape(dynamic_cast(apvts.getParameter(PluginParameters::RELEASE_SHAPE))), a4_freq(dynamic_cast(apvts.getParameter(PluginParameters::A4_HZ))), pitchWheelRange(dynamic_cast(apvts.getParameter(PluginParameters::PITCH_WHEEL_RANGE))), wideTuningControl(dynamic_cast(apvts.getParameter(PluginParameters::WIDE_TUNING))), semitoneTuning(dynamic_cast(apvts.getParameter(PluginParameters::SEMITONE_TUNING))), centTuning(dynamic_cast(apvts.getParameter(PluginParameters::CENT_TUNING))), waveformSemitoneTuning(dynamic_cast(apvts.getParameter(PluginParameters::WAVEFORM_SEMITONE_TUNING))), waveformCentTuning(dynamic_cast(apvts.getParameter(PluginParameters::WAVEFORM_CENT_TUNING))), crossfadeSamples(dynamic_cast(apvts.getParameter(PluginParameters::CROSSFADE_SAMPLES))), monoOutput(dynamic_cast(apvts.getParameter(PluginParameters::MONO_OUTPUT))), disableVelocity(dynamic_cast(apvts.getParameter(PluginParameters::DISABLE_VELOCITY))), skipAntialiasing(dynamic_cast(apvts.getParameter(PluginParameters::SKIP_ANTIALIASING))), applyFXPre(dynamic_cast(apvts.getParameter(PluginParameters::PRE_FX))), playUntilEnd(dynamic_cast(apvts.getParameter(PluginParameters::PLAY_UNTIL_END))), disableWavetableMode(dynamic_cast(apvts.getParameter(PluginParameters::DISABLE_WAVETABLE_MODE))), isLooping(dynamic_cast(apvts.getParameter(PluginParameters::IS_LOOPING))), loopingHasStart(dynamic_cast(apvts.getParameter(PluginParameters::LOOPING_HAS_START))), loopingHasEnd(dynamic_cast(apvts.getParameter(PluginParameters::LOOPING_HAS_END))), sampleStart(pluginState.sampleStart), sampleEnd(pluginState.sampleEnd), loopStart(pluginState.loopStart), loopEnd(pluginState.loopEnd), midiStart(dynamic_cast(apvts.getParameter(PluginParameters::MIDI_START))), midiEnd(dynamic_cast(apvts.getParameter(PluginParameters::MIDI_END))), midiRoot(dynamic_cast(apvts.getParameter(PluginParameters::MIDI_ROOT))), followMidiPitch(dynamic_cast(apvts.getParameter(PluginParameters::FOLLOW_MIDI_PITCH))), reverbEnabled(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_ENABLED))), distortionEnabled(dynamic_cast(apvts.getParameter(PluginParameters::DISTORTION_ENABLED))), eqEnabled(dynamic_cast(apvts.getParameter(PluginParameters::EQ_ENABLED))), chorusEnabled(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_ENABLED))), reverbMix(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_MIX))), reverbSize(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_SIZE))), reverbDamping(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_DAMPING))), reverbLows(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_LOWS))), reverbHighs(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_HIGHS))), reverbPredelay(dynamic_cast(apvts.getParameter(PluginParameters::REVERB_PREDELAY))), distortionMix(dynamic_cast(apvts.getParameter(PluginParameters::DISTORTION_MIX))), distortionDensity(dynamic_cast(apvts.getParameter(PluginParameters::DISTORTION_DENSITY))), distortionHighpass(dynamic_cast(apvts.getParameter(PluginParameters::DISTORTION_HIGHPASS))), eqLowGain(dynamic_cast(apvts.getParameter(PluginParameters::EQ_LOW_GAIN))), eqMidGain(dynamic_cast(apvts.getParameter(PluginParameters::EQ_MID_GAIN))), eqHighGain(dynamic_cast(apvts.getParameter(PluginParameters::EQ_HIGH_GAIN))), eqLowFreq(dynamic_cast(apvts.getParameter(PluginParameters::EQ_LOW_FREQ))), eqHighFreq(dynamic_cast(apvts.getParameter(PluginParameters::EQ_HIGH_FREQ))), chorusMix(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_MIX))), chorusRate(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_RATE))), chorusDepth(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_DEPTH))), chorusFeedback(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_FEEDBACK))), chorusCenterDelay(dynamic_cast(apvts.getParameter(PluginParameters::CHORUS_CENTER_DELAY))), playbackMode(dynamic_cast(apvts.getParameter(PluginParameters::PLAYBACK_MODE))), fxOrder(dynamic_cast(apvts.getParameter(PluginParameters::FX_PERM))) { } void SamplerParameters::sampleChanged(const int newSampleRate) { sampleRate = newSampleRate; } PluginParameters::PLAYBACK_MODES SamplerParameters::getPlaybackMode() const { return PluginParameters::getPlaybackMode(playbackMode->getIndex()); } std::array SamplerParameters::getFxOrder() const { return PluginParameters::paramToPerm(fxOrder->get()); }