Exemplo n.º 1
0
        VstEvent_Range(IMidiParserUI ui, bool ignoreMidiPgm, double start, int len)
        {
            var         list = new List <NVstEvent>();
            SampleClock c    = new SampleClock(ui.VstContainer.VstPlayer.Settings);

            foreach (MidiMessage item in MidiMessage_Range(ui, new Loop()
            {
                Begin = start, Length = len
            }))
            {
                if (item.MessageBit == 0xC0 && ignoreMidiPgm)
                {
                    continue;
                }

                if (item is MidiChannelMessage)
                {
                    list.Add(item.ToVstMidiEvent(Convert.ToInt32(ui.VstContainer.VstPlayer.SampleOffset), ui.VstContainer.VstPlayer.Settings, c));
                }

                else if (item is MidiSysexMessage)
                {
                    list.Add(item.ToVstMidiSysex(Convert.ToInt32(ui.VstContainer.VstPlayer.SampleOffset), ui.VstContainer.VstPlayer.Settings, c));
                }
            }

            c = null;

            list.Sort(SortAlgo);

            foreach (NVstEvent vstevent in list)
            {
                yield return(vstevent);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Process messages looking for Channel and Sysex messages.
        /// look at channel-message parsing for channel message types (or look into this).
        /// </summary>
        /// <param name="ui">core</param>
        /// <param name="start">Begin in samples</param>
        /// <param name="len">Length from begin in samples</param>
        /// <returns>Filtered Events</returns>
        static NVstEvent[] FilterSampleRange(IMidiParserUI ui, double start, int len)
        {
            if (HasParserErrors(ui))
            {
                return(null);
            }

            var         list = new List <NVstEvent>();
            SampleClock c    = new SampleClock(ui.VstContainer.VstPlayer.Settings);

            foreach (MidiMessage item in MidiMessage_Range(ui, new Loop()
            {
                Begin = start, Length = len
            }))
            {
                if (item is MidiChannelMessage)
                {
                    list.Add(item.ToVstMidiEvent(Convert.ToInt32(ui.VstContainer.VstPlayer.SampleOffset), ui.VstContainer.VstPlayer.Settings, c));
                }
                else if (item is MidiSysexMessage)
                {
                    list.Add(item.ToVstMidiSysex(Convert.ToInt32(ui.VstContainer.VstPlayer.SampleOffset), ui.VstContainer.VstPlayer.Settings, c));
                }
            }
            c = null;

            list.Sort(SortAlgo);
            return(list.ToArray());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Retrieve all MIDI events from all tracks as found in the MIDI parser.
        /// </summary>
        /// <param name="Parser"></param>
        /// <param name="loop"></param>
        /// <returns></returns>
        static IEnumerable <MidiMessage> MidiMessage_Range(IMidiParserUI Parser, Loop loop)
        {
            SampleClock c = new SampleClock(Parser.VstContainer.VstPlayer.Settings);

            for (int trackId = 0; trackId < Parser.MidiParser.FileHandle.NumberOfTracks; trackId++)
            {
                var elements = Parser.MidiParser.MidiDataList[trackId].Where(msg0 => msg0.IsContained(c, loop));
                foreach (MidiMessage item in elements)
                {
                    yield return(item);
                }
            }
            c = null;
        }
Exemplo n.º 4
0
        void Perform()
        {
            double bpm = (double)this.udBpm.Value;
            double div1 = (double)udDiv1.Value, div2 = (double)udDiv2.Value, m = (double)nMulti.Value;
            double result = BpmCalculator.GetHz(bpm, div1, div2, m);

            try {
                this.udOutput.Value     = (decimal)result;
                this.udOutput.BackColor = NumericUpDown.DefaultBackColor;
            } catch {
                this.udOutput.Value     = 0;
                this.udOutput.BackColor = Color.Red;
            }
            s2mbqt = new SampleClock(
                (double)s2m_Samples.Value,
                (int)s2m_Rate.Value,
                (double)s2m_BPM.Value,
                (int)s2m_Division.Value,
                true);
        }
Exemplo n.º 5
0
        static public VstEvent[] EnumerateMidiData(IMidiParserUI ui, double start, int len)
        {
            if (ui == null)
            {
                return(null);
            }
            if (ui.MidiParser.MidiDataList.Count == 0)
            {
                return(null);
            }
            List <VstEvent> list = new List <VstEvent>();

            //			lock (locker)
            {
                SampleClock c = new SampleClock(ui.VstContainer.VstPlayer.Settings);
                foreach (MidiMessage item in EnumerateMidiMessages(ui, new Loop()
                {
                    Begin = start, Length = len
                }))
                {
                    if (item is MidiChannelMessage)
                    {
                        list.Add(item.ToVstMidiEvent(Convert.ToInt32(ui.VstContainer.VstPlayer.SampleOffset), ui.VstContainer.VstPlayer.Settings, c));
                    }
                    else if (item is MidiSysexMessage)
                    {
                        list.Add(
                            item.ToVstMidiSysex(
                                ui.VstContainer.VstPlayer.SampleOffset.ToInt32(),
                                ui.VstContainer.VstPlayer.Settings,
                                c
                                )
                            );
                    }
                }
                c = null;
            }
            list.Sort(SortAlgo);
            return(list.ToArray());
        }
Exemplo n.º 6
0
        void Perform()
        {
            double bpm = (double)this.udBpm.Value;
              double div1 = (double)udDiv1.Value, div2 = (double)udDiv2.Value, m = (double)nMulti.Value;
              double result  = BpmCalculator.GetHz(bpm,div1,div2,m);

              try {
            this.udOutput.Value = (decimal) result;
            this.udOutput.BackColor = NumericUpDown.DefaultBackColor;
              } catch {
            this.udOutput.Value = 0;
            this.udOutput.BackColor = Color.Red;
              }
              s2mbqt = new SampleClock(
            (double)s2m_Samples.Value,
            (int)s2m_Rate.Value,
            (double)s2m_BPM.Value,
            (int)s2m_Division.Value,
            true);
        }
Exemplo n.º 7
0
        static bool IsContained(MidiMessage message, Loop constraint, SampleClock clockRef, double min, double max)
        {
            double samplePos = clockRef.SolveSamples(message.DeltaTime).Samples32;

            return(samplePos >= min && samplePos < max && samplePos < constraint.End);
        }
Exemplo n.º 8
0
 public static Jacobi.Vst.Core.VstMidiSysExEvent ToVstMidiSysex(this MidiMessage item, int offset, ITimeConfiguration config, SampleClock c)
 {
     int samples = c.SolveSamples(item.DeltaTime).Samples32Floor-offset;
     return new Jacobi.Vst.Core.VstMidiSysExEvent(samples,(item as MidiSysexMessage).SystemData);
 }
Exemplo n.º 9
0
        /// <summary>
        /// Check sample-range
        /// </summary>
        /// <param name="c">must have Division and PPQ set.</param>
        /// <param name="b">We currently check the end position of the loop.</param>
        /// <returns>True if delta-time is contained within sample ranges min and max</returns>
        public bool IsContained(SampleClock c, Loop b)
        {
            double samplePos = c.SolveSamples(DeltaTime).Samples32;

            return(samplePos >= b.Begin && samplePos < b.End);
        }
Exemplo n.º 10
0
 /// <summary>
 /// Check sample-range
 /// </summary>
 /// <param name="c">must have Division and PPQ set.</param>
 /// <param name="b">We currently check the end position of the loop.</param>
 /// <param name="min">first sample in search block</param>
 /// <param name="max">last sample in search block</param>
 /// <returns>True if delta-time is contained within sample ranges min and max</returns>
 public bool IsContained(SampleClock c, Loop b, double min, double max)
 {
     double samplePos = c.SolveSamples(DeltaTime).Samples32;
     return samplePos >= min && samplePos < max && samplePos < b.End;
 }
Exemplo n.º 11
0
 public FpsCounter(SampleClock clock)
 {
     _clock = clock;
 }
Exemplo n.º 12
0
        /// <summary>
        /// Check sample-range
        /// </summary>
        /// <param name="c">must have Division and PPQ set.</param>
        /// <param name="b">We currently check the end position of the loop.</param>
        /// <param name="min">first sample in search block</param>
        /// <param name="max">last sample in search block</param>
        /// <returns>True if delta-time is contained within sample ranges min and max</returns>
        public bool IsContained(SampleClock c, Loop b, double min, double max)
        {
            double samplePos = c.SolveSamples(DeltaTime).Samples32;

            return(samplePos >= min && samplePos < max && samplePos < b.End);
        }
Exemplo n.º 13
0
 /// <summary>
 /// Check sample-range
 /// </summary>
 /// <param name="c">must have Division and PPQ set.</param>
 /// <param name="b">We currently check the end position of the loop.</param>
 /// <returns>True if delta-time is contained within sample ranges min and max</returns>
 public bool IsContained(SampleClock c, Loop b)
 {
     double samplePos = c.SolveSamples(DeltaTime).Samples32;
     return samplePos >= b.Begin && samplePos < b.End;
 }
Exemplo n.º 14
0
 public static Jacobi.Vst.Core.VstMidiEvent ToVstMidiEvent(this MidiMessage item, int offset, ITimeConfiguration config, SampleClock c)
 {
     // byte b0 = (config.IsSingleZeroChannel) ? (byte)item.MessageBit : item.Data[0];
     int samples = c.SolveSamples(item.DeltaTime).Samples32Floor - offset;
     return new Jacobi.Vst.Core.VstMidiEvent(samples, 0, 0, new byte[4]{ item.Data[0], item.Data[1], item.Data[2], 0 }, 0 , 0 );
 }
Exemplo n.º 15
0
 public FpsCounter(SampleClock clock)
 {
     _clock = clock;
 }
Exemplo n.º 16
0
        static public Jacobi.Vst.Core.VstMidiSysExEvent ToVstMidiSysex(this MidiMessage item, int offset, ITimeConfiguration config, SampleClock c)
        {
            int samples = c.SolveSamples(item.DeltaTime).Samples32Floor - offset;

            return(new Jacobi.Vst.Core.VstMidiSysExEvent(samples, (item as MidiSysexMessage).SystemData));
        }
Exemplo n.º 17
0
        static public Jacobi.Vst.Core.VstMidiEvent ToVstMidiEvent(this MidiMessage item, int offset, ITimeConfiguration config, SampleClock c)
        {
            // byte b0 = (config.IsSingleZeroChannel) ? (byte)item.MessageBit : item.Data[0];
            int samples = c.SolveSamples(item.DeltaTime).Samples32Floor - offset;

            return(new Jacobi.Vst.Core.VstMidiEvent(samples, 0, 0, new byte[4] {
                item.Data[0], item.Data[1], item.Data[2], 0
            }, 0, 0));
        }