package com.teotigraphix.caustk.tone.components.padsynth; import com.teotigraphix.caustk.core.osc.PadSynthMessage; import com.teotigraphix.caustk.tone.ToneComponent; public class MorphComponent extends ToneComponent { //---------------------------------- // blend //---------------------------------- protected float blend; public float getBlend() { return blend; } float getBlend(boolean restore) { return PadSynthMessage.MORPH.query(getEngine(), getToneIndex()); } public void setBlend(float value) { if (value == blend) return; if (value < 0f || value > 1f) throw newRangeException("morph", "0..1", value); blend = value; PadSynthMessage.MORPH.send(getEngine(), getToneIndex(), blend); } //---------------------------------- // evelopeEnabled //---------------------------------- protected int evelopeEnabled = 0; public int getEnvelopeEnabled() { return evelopeEnabled; } int getEnvelopeEnabled(boolean restore) { return (int)PadSynthMessage.MORPH_ENV.query(getEngine(), getToneIndex()); } public void setEnvelopeEnabled(int value) { if (value == evelopeEnabled) return; if (value < 0 || value > 1) throw newRangeException("morph_env", "0,1", value); evelopeEnabled = value; PadSynthMessage.MORPH_ENV.send(getEngine(), getToneIndex(), evelopeEnabled); } //---------------------------------- // attack //---------------------------------- protected float attack; public float getAttack() { return attack; } float getAttack(boolean restore) { return PadSynthMessage.MORPH_ATTACK.query(getEngine(), getToneIndex()); } public void setAttack(float value) { if (value == attack) return; if (value < 0f || value > 3f) throw newRangeException("morph_attack", "0..3", value); attack = value; PadSynthMessage.MORPH_ATTACK.send(getEngine(), getToneIndex(), attack); } //---------------------------------- // decay //---------------------------------- protected float decay; public float getDecay() { return decay; } float getDecay(boolean restore) { return PadSynthMessage.MORPH_DECAY.query(getEngine(), getToneIndex()); } public void setDecay(float value) { if (value == decay) return; if (value < 0f || value > 3f) throw newRangeException("morph_decay", "0..3", value); decay = value; PadSynthMessage.MORPH_DECAY.send(getEngine(), getToneIndex(), decay); } //---------------------------------- // sustain //---------------------------------- protected float sustain; public float getSustain() { return sustain; } float getSustain(boolean restore) { return PadSynthMessage.MORPH_SUSTAIN.query(getEngine(), getToneIndex()); } public void setSustain(float value) { if (value == sustain) return; if (value < 0f || value > 1f) throw newRangeException("morph_sustain", "0..1", value); sustain = value; PadSynthMessage.MORPH_SUSTAIN.send(getEngine(), getToneIndex(), sustain); } //---------------------------------- // release //---------------------------------- protected float release; public float getRelease() { return release; } float getRelease(boolean restore) { return PadSynthMessage.MORPH_RELEASE.query(getEngine(), getToneIndex()); } public void setRelease(float value) { if (value == release) return; if (value < 0f || value > 3f) throw newRangeException("morph_release", "0..3", value); release = value; PadSynthMessage.MORPH_RELEASE.send(getEngine(), getToneIndex(), release); } public MorphComponent() { } @Override public void restore() { setAttack(getAttack(true)); setBlend(getBlend(true)); setDecay(getDecay(true)); setEnvelopeEnabled(getEnvelopeEnabled(true)); setRelease(getRelease(true)); setSustain(getSustain(true)); } }