public void Update(BmpSequencer bmpSeq) { int tn = this.TrackNum; if (!(bmpSeq is BmpSequencer)) { return; } Sequence seq = bmpSeq.Sequence; if (!(seq is Sequence)) { return; } Keyboard.UpdateFrequency(new List <int>()); if ((tn >= 0 && tn < seq.Count) && seq[tn] is Track track) { int po = bmpSeq.GetTrackPreferredOctaveShift(track); Console.WriteLine(String.Format("Track {0} {1} po {2}", tn, bmpSeq.MaxTrack, po)); List <int> notes = new List <int>(); foreach (MidiEvent ev in track.Iterator()) { if (ev.MidiMessage.MessageType == MessageType.Channel) { ChannelMessage msg = (ev.MidiMessage as ChannelMessage); if (msg.Command == ChannelCommand.NoteOn) { int note = msg.Data1; int vel = msg.Data2; if (vel > 0) { notes.Add(NoteHelper.ApplyOctaveShift(note, this.OctaveNum + po)); } } } } this.OctaveShift.Value = po; Keyboard.UpdateFrequency(notes); ChosenInstrument = bmpSeq.GetTrackPreferredInstrument(track); } if (hostProcess) { this.BackColor = Color.FromArgb(235, 235, 120); } else { this.BackColor = Color.Transparent; } }
public void UpdatePerformers(BmpSequencer seq) { if (seq == null) { return; } foreach (Control ctl in PerformerPanel.Controls) { BmpLocalPerformer performer = (ctl as BmpLocalPerformer); if (performer != null) { performer.Sequencer = seq; } } }
public void Update(BmpSequencer sequencer) { int tn = this.TrackNum; Sequence seq = sequencer.Sequence; if (!(seq is Sequence)) { return; } Keyboard.UpdateFrequency(new List <int>()); if ((tn >= 0 && tn < seq.Count) && seq[tn] is Track track) { List <int> notes = new List <int>(); foreach (MidiEvent ev in track.Iterator()) { if (ev.MidiMessage.MessageType == MessageType.Channel) { ChannelMessage msg = (ev.MidiMessage as ChannelMessage); if (msg.Command == ChannelCommand.NoteOn) { int note = msg.Data1; int vel = msg.Data2; if (vel > 0) { int po = sequencer.GetTrackPreferredOctaveShift(track); notes.Add(NoteHelper.ApplyOctaveShift(note, this.OctaveNum + po)); } } } } Keyboard.UpdateFrequency(notes); ChosenInstrument = sequencer.GetTrackPreferredInstrument(track); } if (hostProcess) { this.BackColor = Color.FromArgb(235, 235, 120); } else { this.BackColor = Color.Transparent; } }