public Sequencer(SequencerType type, float frequencyMultiply, float transpose, float glide, float amp, string code) { this.type = type; this.frequencyMultiply.localValue = frequencyMultiply; this.transpose.localValue = transpose; this.glide.localValue = glide; this.amp.localValue = amp; this.code = code; Parse(); }
// padding: 7 public SequencerDispatcher(ISequencer sequencer) { _singleProducerSequencer = default; _multiProducerSequencer = default; _type = sequencer switch { SingleProducerSequencer _ => SequencerType.SingleProducer, MultiProducerSequencer _ => SequencerType.MultiProducer, _ => SequencerType.Unknown, }; Sequencer = sequencer; }
void Parse() { var parts = (from i in code.Split(',') select i.Trim()).ToArray(); sequence = new NoteTrigger[parts.Length]; for (var i = 0; i < parts.Length; i++) { var noteTrigger = new NoteTrigger() { duration = 1, volume = 0.9f }; var pda = (from x in parts[i].Split(':') select x.Trim()).ToArray(); if (pda.Length >= 1) { float hz; if (float.TryParse(pda[0], out hz)) { noteTrigger.hz = hz; noteTrigger.noteNumber = -1; } else { noteTrigger.hz = Note.Frequency(pda[0]); noteTrigger.noteNumber = Note.Number(noteTrigger.hz); } } if (pda.Length >= 2) { int duration; if (int.TryParse(pda[1], out duration)) { noteTrigger.duration = duration; } } if (pda.Length >= 3) { float volume; if (float.TryParse(pda[2], out volume)) { noteTrigger.volume = volume; } } sequence[i] = noteTrigger; } if (type == SequencerType.Down) { Reverse(); } lastCode = code; lastType = type; }
public override void UpdateControl(float[] signals) { if (control == null) { return; } this.type = control.type; SyncControlSignal(signals, ref envelope, ref control.envelope); SyncControlSignal(signals, ref glide, ref control.glide); SyncControlSignal(signals, ref amp, ref control.amp); SyncControlSignal(signals, ref frequencyMultiply, ref control.frequencyMultiply); SyncControlSignal(signals, ref transpose, ref control.transpose); beatDivider = control.beatDivider; this.code = control.code; }
public static Sequencer Sequencer(SequencerType type = SequencerType.Up, float frequencyMultiply = 1f, float transpose = 0, float glide = 0f, float amp = 1f, string code = "") => Synth.Add(new Sequencer(type, frequencyMultiply, transpose, glide, amp, code));