package com.teotigraphix.caustk.core.components.bassline; import com.teotigraphix.caustic.osc.FilterMessage; import com.teotigraphix.caustk.core.components.FilterComponentBase; public class FilterComponent extends FilterComponentBase { //-------------------------------------------------------------------------- // // IBasslineFilter API :: Properties // //-------------------------------------------------------------------------- //---------------------------------- // decay //---------------------------------- private float decay = 0f; public float getDecay() { return decay; } float getDecay(boolean restore) { return FilterMessage.FILTER_DECAY.query(getEngine(), getToneIndex()); } public void setDecay(float value) { if (value == decay) return; if (value < 0f || value > 1f) throw newRangeException("filter_decay", "0..1", value); decay = value; FilterMessage.FILTER_DECAY.send(getEngine(), getToneIndex(), decay); } //---------------------------------- // envMod //---------------------------------- private float envMod = 0.99f; public float getEnvMod() { return envMod; } float getEnvMod(boolean restore) { return FilterMessage.FILTER_ENVMOD.query(getEngine(), getToneIndex()); } public void setEnvMod(float value) { if (value == envMod) return; if (value < 0f || value > 1f) throw newRangeException("filter_envmod", "0..1", value); envMod = value; FilterMessage.FILTER_ENVMOD.send(getEngine(), getToneIndex(), envMod); } public FilterComponent() { } @Override public void restore() { super.restore(); setDecay(getDecay(true)); setEnvMod(getEnvMod(true)); } }