public VoiceValue(UpdateHandler updateHandler, int voiceNum, ISoundMaker maker) { this.voiceNum = voiceNum; this.maker = maker; this.updateHandler = updateHandler; voice = maker.GetVoice(voiceNum); maker.SetWave(voiceNum, "square"); this.updateHandler.AddObserver(this); InitalizeSuffixes(); }
public void InitalizeSuffixes() { AddSuffix("ATTACK", new SetSuffix <ScalarValue>(() => voice.Attack, value => voice.Attack = value)); AddSuffix("DECAY", new SetSuffix <ScalarValue>(() => voice.Decay, value => voice.Decay = value)); AddSuffix("SUSTAIN", new ClampSetSuffix <ScalarValue>(() => voice.Sustain, value => voice.Sustain = value, 0, 1)); AddSuffix("RELEASE", new SetSuffix <ScalarValue>(() => voice.Release, value => voice.Release = value)); AddSuffix("VOLUME", new SetSuffix <ScalarValue>(() => voice.Volume, value => voice.Volume = value)); AddSuffix("WAVE", new SetSuffix <StringValue>(() => maker.GetWaveName(voiceNum), value => maker.SetWave(voiceNum, value.ToString()))); AddSuffix("PLAY", new OneArgsSuffix <Structure>(Play)); AddSuffix("STOP", new NoArgsVoidSuffix(Stop)); AddSuffix("LOOP", new SetSuffix <BooleanValue>(() => loop, value => loop = value)); AddSuffix("ISPLAYING", new SetSuffix <BooleanValue>(() => IsPlaying, value => IsPlaying = value)); AddSuffix("TEMPO", new SetSuffix <ScalarValue>(() => tempo, value => tempo = (float)value.GetDoubleValue())); }