Exemple #1
0
        public override void Evaluate(double CurrentTime)
        {
            base.Evaluate(CurrentTime);

            if (FMidiScore == null)
            {
                return;
            }

            List <TLBaseKeyFrame> activeNotes = new List <TLBaseKeyFrame>();

            foreach (TLMidiSlice ms in FOutputSlices)
            {
                activeNotes.AddRange(ms.KeyFrames.FindAll(delegate(TLBaseKeyFrame mk) { return(mk.Time <= CurrentTime && CurrentTime < (mk as TLMidiKeyFrame).End); }));
            }

            for (int i = 0; i < 128; i++)
            {
                TLMidiKeyFrame m = activeNotes.Find(delegate(TLBaseKeyFrame mk) { return((mk as TLMidiKeyFrame).Note == i); }) as TLMidiKeyFrame;
                if (m == null)
                {
                    FChannelOut.SetValue(i, 0);
                    FVelocityOut.SetValue(i, 0);
                }
                else
                {
                    FChannelOut.SetValue(i, m.Channel);
                    FVelocityOut.SetValue(i, m.Velocity);
                }
            }
        }
Exemple #2
0
        private TLBaseKeyFrame AddKeyFrame(double Start, double End, int Track, int Channel, int Note, int Velocity)
        {
            //called via configpinchanged and gui-doubleclick
            float          sliceheight = FPin.Height / FPin.SliceCount;
            float          slicetop    = FPin.Top + FSliceIndex * sliceheight;
            TLMidiKeyFrame k           = new TLMidiKeyFrame(FPin.Transformer, Track, Channel, Note, Velocity, Start, End, FMinNote, FMaxNote, slicetop, sliceheight);

            FKeyFrames.Add(k);
            return(k);
        }