Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
 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;
         }
     }
 }
Ejemplo n.º 3
0
        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;
            }
        }