Beispiel #1
0
 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();
 }
Beispiel #2
0
        // padding: 7

        public SequencerDispatcher(ISequencer sequencer)
        {
            _singleProducerSequencer = default;
            _multiProducerSequencer  = default;
            _type = sequencer switch
            {
                SingleProducerSequencer _ => SequencerType.SingleProducer,
                MultiProducerSequencer _ => SequencerType.MultiProducer,
                                        _ => SequencerType.Unknown,
            };

            Sequencer = sequencer;
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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));