public void Metronome_Stop(object sender, MetronomeEventArgs e) { if (State == LooperState.Recording) { StopRecording(); } else if (State == LooperState.Playing) { StopPlayback(); } }
/// <summary> /// Wire this to base metronome. /// Changes state of Looper (idle, recording, playing) at the start of bar /// </summary> public void Metronome_Bar(object sender, MetronomeEventArgs e) { int length = Convert.ToInt32(numericUpDown_length.Value); int start = Convert.ToInt32(numericUpDown_start.Value); if (State == LooperState.ReadyToRecord) { if (e.BarNumber % start == 0) { StartingBar = e.BarNumber; StartRecording(); } } if (State == LooperState.ReadyToPlay) { if (e.BarNumber % start == 0) { StartingBar = e.BarNumber; StartPlayback(); } } if (State == LooperState.Recording) { if (e.BarNumber >= StartingBar + length) { StopRecording(); } } if (State == LooperState.Playing) { if (e.BarNumber >= StartingBar + length) { //StopPlayback(); StartingBar = e.BarNumber; StartPlayback(); } } }
/// <summary> /// Wire this to metronome. /// Displays bar (phrase) progrees on the progressbar. /// </summary> public void Metronome_Beat(object sender, MetronomeEventArgs e) { int length = Convert.ToInt32(numericUpDown_length.Value); int start = Convert.ToInt32(numericUpDown_start.Value); int lengthBeats = length * e.BeatsInBar; int currentBeat = e.BarNumber * e.BeatsInBar + e.BeatNumber; int startBeats = start * e.BeatsInBar; switch (State) { case LooperState.ReadyToRecord: case LooperState.ReadyToPlay: coloredProgressBar_record.Value = (currentBeat % startBeats) + 1; coloredProgressBar_record.Value = (currentBeat % startBeats) + 1; break; case LooperState.Recording: case LooperState.Playing: coloredProgressBar_record.Value = (((e.BarNumber - StartingBar) * e.BeatsInBar + e.BeatNumber) % lengthBeats) + 1; break; } }
protected virtual void OnStarted(MetronomeEventArgs e) { Started?.Invoke(this, e); }
protected virtual void OnBar(MetronomeEventArgs e) { label_bar.Text = e.BarNumber.ToString(); Bar?.Invoke(this, e); }
protected virtual void OnBeat(MetronomeEventArgs e) { //Console.WriteLine(currentBar + "/" + currentBeat); label_beat.Text = (e.BeatNumber + 1).ToString() + "/" + numericUpDown_metronomeMeasuse.Value.ToString(); Beat?.Invoke(this, e); }