package com.teotigraphix.caustk.tone.components.organ; import com.teotigraphix.caustk.core.osc.OrganMessage; import com.teotigraphix.caustk.tone.ToneComponent; public class LeslieComponent extends ToneComponent { //---------------------------------- // drawbar //---------------------------------- protected int drawbar; public float getDrawBar(int index) { return drawbar; } float getDrawBar(int index, boolean restore) { return OrganMessage.DRAWBAR.query(getEngine(), getToneIndex(), index); } public void setDrawBar(int index, float value) { if (value < 0f || value > 1.0f) throw newRangeException("drawbar", "0..1.0", value); OrganMessage.DRAWBAR.send(getEngine(), getToneIndex(), index, value); } //---------------------------------- // percTone //---------------------------------- protected float percTone; public float getPercTone() { return percTone; } float getPercTone(boolean restore) { return OrganMessage.PERC_TONE.query(getEngine(), getToneIndex()); } public void setPercTone(float value) { if (value == percTone) return; if (value < 0f || value > 1.0f) throw newRangeException("perc_tone", "0..1.0", value); percTone = value; OrganMessage.PERC_TONE.send(getEngine(), getToneIndex(), percTone); } //---------------------------------- // percDecay //---------------------------------- protected float percDecay; public float getPercDecay() { return percDecay; } float getPercDecay(boolean restore) { return OrganMessage.PERC_DECAY.query(getEngine(), getToneIndex()); } public void setPercDecay(float value) { if (value == percDecay) return; if (value < 0f || value > 0.5f) throw newRangeException("perc_decay", "0..0.5", value); percDecay = value; OrganMessage.PERC_DECAY.send(getEngine(), getToneIndex(), percDecay); } //---------------------------------- // leslieRate //---------------------------------- protected float leslieRate; public float getLeslieRate() { return leslieRate; } float getLeslieRate(boolean restore) { return OrganMessage.LESLIE_RATE.query(getEngine(), getToneIndex()); } public void setLeslieRate(float value) { if (value == leslieRate) return; if (value < 0f || value > 0.7f) throw newRangeException("leslie_rate", "0..0.7", value); leslieRate = value; OrganMessage.LESLIE_RATE.send(getEngine(), getToneIndex(), leslieRate); } //---------------------------------- // leslieDepth //---------------------------------- protected float leslieDepth; public float getLeslieDepth() { return leslieDepth; } float getLeslieDepth(boolean restore) { return OrganMessage.LESLIE_DEPTH.query(getEngine(), getToneIndex()); } public void setLeslieDepth(float value) { if (value == leslieDepth) return; if (value < 0f || value > 1.0f) throw newRangeException("leslie_depth", "0..1.0", value); leslieDepth = value; OrganMessage.LESLIE_DEPTH.send(getEngine(), getToneIndex(), leslieDepth); } //---------------------------------- // drive //---------------------------------- protected float drive; public float getDrive() { return drive; } float getDrive(boolean restore) { return OrganMessage.DRIVE.query(getEngine(), getToneIndex()); } public void setDrive(float value) { if (value == drive) return; if (value < 0f || value > 1.0f) throw newRangeException("drive", "0..1.0", value); drive = value; OrganMessage.DRIVE.send(getEngine(), getToneIndex(), drive); } public LeslieComponent() { } @Override public void restore() { setDrive(getDrive(true)); setLeslieDepth(getLeslieDepth(true)); setLeslieRate(getLeslieRate(true)); setPercDecay(getPercDecay(true)); setPercTone(getPercTone(true)); } }