Exemplo n.º 1
0
        static public void GetMidiData(IMidiParserUI ui, Loop b, IList <VstEvent> midiBuffer, int blockSize)
        {
            if (ui.VstContainer.PluginManager.MasterPluginInstrument == null)
            {
                midiBuffer = new List <VstEvent>();
                return;
            }
            midiBuffer.Clear();
            {
                midiBuffer = null;
                midiBuffer = new List <VstEvent>(MidiEnumerator.EnumerateMidiData(ui, blockSize));
                //ui.VstContainer.VstPlayer.SampleOffset, blockSize

                if (midiBuffer != null)
                {
                    if (midiBuffer.Count > 0)
                    {
                        ui.VstContainer.PluginManager.MasterPluginInstrument
                        .PluginCommandStub.ProcessEvents(
                            midiBuffer.ToArray()
                            );
                    }
                }
            }
        }
Exemplo n.º 2
0
 static public IEnumerable <VstPlugin> GetEffects(IMidiParserUI ui)
 {
     foreach (VstPlugin plugin in ui.VstContainer.PluginManager.VstEffects)
     {
         yield return(plugin);
     }
 }
Exemplo n.º 3
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.º 4
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.º 5
0
 virtual public void SetUI(IMidiParserUI ui)
 {
     this.UserInterface = ui;
     this.UserInterface.ClearMidiTrack -= ClearTrack;
     this.UserInterface.ClearMidiTrack += ClearTrack;
     this.UserInterface.GotMidiFile    -= FileLoaded;
     this.UserInterface.GotMidiFile    += FileLoaded;
 }
Exemplo n.º 6
0
 /// <inheritdoc/>
 public override void SetUI(IMidiParserUI ui)
 {
     //
     base.SetUI(ui);
     //
     // PluginManager = new VstPluginManager(VstContainer);
     PluginListVw.ItemSelectionChanged += Event_PluginSelected;
     PluginManager.PluginListRefreshed += Event_PluginListReset;
     PluginManager.ActivePluginReset   += Event_PluginReload;
 }
Exemplo n.º 7
0
 static bool HasParserErrors(IMidiParserUI ui)
 {
     if (ui == null)
     {
         return(true);
     }
     if (ui.MidiParser.MidiDataList.Count == 0)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 8
0
        public static void TracksToTreeView(IMidiParserUI ui)
        {
            NodeMidi.Nodes.Clear();
            if (ui.MidiParser==null) return;
            if (ui.MidiParser.SmfFileHandle==null) return;
            if (ui.MidiParser.SmfFileHandle.NumberOfTracks==0) return;

            for (int i = 0; i < ui.MidiParser.SmfFileHandle.NumberOfTracks; i++)
            {
                TreeNode tn = new TreeNode(string.Format("{0}",/*Strings.Filter_MidiTrack*/ i )); //Event_MidiChangeTrack_MenuItemSelected
                tn.Tag = i;
                NodeMidi.Nodes.Add( tn );
            }
        }
Exemplo n.º 9
0
        public static void InitializeTreeNodes(TreeView tree, IMidiParserUI ui)
        {
            WindowsInterop.WindowsTheme.HandleTheme(tree,true);
            tree.Nodes.Clear();
            NodeMidi=new TreeNode("MIDI");
            NodeVst=new TreeNode("VST");
            NodeVstI=new TreeNode("Instrument");
            NodeVstE=new TreeNode("Effect");

            tree.Nodes.Add(NodeMidi);
            tree.Nodes.Add(NodeVst);
            NodeVst.Nodes.Add(NodeVstE);
            NodeVst.Nodes.Add(NodeVstI);
        }
Exemplo n.º 10
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.º 11
0
        static public void InitializeTreeNodes(TreeView tree, IMidiParserUI ui)
        {
            WindowsInterop.WindowsTheme.HandleTheme(tree, true);
            tree.Nodes.Clear();
            NodeMidi = new TreeNode("MIDI");
            NodeVst  = new TreeNode("VST");
            NodeVstI = new TreeNode("Instrument");
            NodeVstE = new TreeNode("Effect");

            tree.Nodes.Add(NodeMidi);
            tree.Nodes.Add(NodeVst);
            NodeVst.Nodes.Add(NodeVstE);
            NodeVst.Nodes.Add(NodeVstI);
        }
Exemplo n.º 12
0
        static public void SendMidi2Plugin(VstPlugin vstMidiPlugin, IMidiParserUI ui, int blockSize)
        {
            if (vstMidiPlugin == null)
            {
                return;
            }

            var EventR = new List <NVstEvent>(
                GetSampleOffsetBlock(ui, vstMidiPlugin.IgnoreMidiProgramChange, blockSize)
                );

            NVstEvent[] range = EventR.ToArray();
            EventR.Clear();
            EventR = null;

            if (range != null && range.Length > 0)
            {
                vstMidiPlugin.PluginCommandStub.ProcessEvents(range);
            }
        }
Exemplo n.º 13
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.º 14
0
 static public void TracksToTreeView(IMidiParserUI ui)
 {
     NodeMidi.Nodes.Clear();
     if (ui.MidiParser == null)
     {
         return;
     }
     else if (ui.MidiParser.SmfFileHandle == null)
     {
         return;
     }
     else if (ui.MidiParser.SmfFileHandle.NumberOfTracks == 0)
     {
         return;
     }
     for (int i = 0; i < ui.MidiParser.SmfFileHandle.NumberOfTracks; i++)
     {
         TreeNode tn = new TreeNode(string.Format("{0}", /*Strings.Filter_MidiTrack*/ i));                 //Event_MidiChangeTrack_MenuItemSelected
         tn.Tag = i;
         NodeMidi.Nodes.Add(tn);
     }
 }
Exemplo n.º 15
0
 public MidiNoteView(IMidiParserUI parserUI)
     : this()
 {
     SetUI(parserUI);
 }
Exemplo n.º 16
0
 static NVstEvent[] GetSampleOffsetBlock(IMidiParserUI ui, bool ignoreMidiPgm, int blockSize)
 {
     return(VstEvent_Range(ui, ignoreMidiPgm, ui.VstContainer.VstPlayer.SampleOffset, blockSize).ToArray());
 }
 /// <inheritdoc/>
 public override void SetUI(IMidiParserUI ui)
 {
     //
     base.SetUI(ui);
     //
     // PluginManager = new VstPluginManager(VstContainer);
     PluginListVw.ItemSelectionChanged += Event_PluginSelected;
     PluginManager.PluginListRefreshed += Event_PluginListReset;
     PluginManager.ActivePluginReset += Event_PluginReload;
 }
Exemplo n.º 18
0
 public MidiNoteView(IMidiParserUI parserUI) : this()
 {
     SetUI(parserUI);
 }
Exemplo n.º 19
0
 public NAudioVstContainer(IMidiParserUI parent)
 {
     this.parent        = parent;
     this.vstPlayer     = new NAudioVST(this);
     this.pluginManager = new VstPluginManager(this);
 }
Exemplo n.º 20
0
 /// <summary>
 /// Seems not to be used.
 /// </summary>
 /// <param name="ui"></param>
 /// <param name="loop"></param>
 /// <returns></returns>
 static VstEvent[] EnumerateMidiData(IMidiParserUI ui, Loop loop)
 {
     return(FilterSampleRange(ui, loop.Begin, loop.Length.FloorMinimum(0).ToInt32()));
 }
Exemplo n.º 21
0
 public override void SetUI(IMidiParserUI ui)
 {
     base.SetUI(ui);
     ApplyRegistrySettings();
 }
Exemplo n.º 22
0
 public virtual void SetUI(IMidiParserUI ui)
 {
     this.UserInterface = ui;
     this.UserInterface.ClearMidiTrack -= ClearTrack;
     this.UserInterface.ClearMidiTrack += ClearTrack;
     this.UserInterface.GotMidiFile -= FileLoaded;
     this.UserInterface.GotMidiFile += FileLoaded;
 }
Exemplo n.º 23
0
 public NAudioVstContainer(IMidiParserUI parent)
 {
     this.parent = parent;
     this.vstPlayer = new NAudioVST(this);
     this.pluginManager = new VstPluginManager(this);
 }
Exemplo n.º 24
0
 bool HasMidi(IMidiParserUI ui)
 {
     return(ui.MidiParser != null &&
            ui.MidiParser.SmfFileHandle != null &&
            ui.MidiParser.MidiDataList.Count > 0);
 }
Exemplo n.º 25
0
        static void SaveRuntime(IMidiParserUI modest, Loop loop, float volume)
        {
            MidiSmfFile newfile = new MidiSmfFile();
              newfile.Settings = new MidiSmfFileSettings();
              newfile.Settings.ConfigurationFile = modest.VstContainer.PluginManager.CurrentConfigurationFile;

              if (modest.MidiParser != null) {
            newfile.Settings.SelectedMidiTrack = modest.MidiParser.SelectedTrackNumber;
            newfile.Settings.MidiFileName = modest.MidiParser.MidiFileName;
              }

              newfile.Settings.MasterVolume = volume;

              // Modules
              // ---------------------------------------------------
              newfile.Settings.Generators = new List<VstModule>();

              if (modest.VstContainer.PluginManager.MasterPluginInstrument != null) {
            newfile.Settings.Generators.Add(
              new VstModule(modest.VstContainer.PluginManager.MasterPluginInstrument)
            );
              }
              // Generators
              // ---------------------------------------------------
              newfile.Settings.Modules = new List<VstModule>();

              if (modest.VstContainer.PluginManager.MasterPluginEffect != null) {
            newfile.Settings.Modules.Add(
              new VstModule(modest.VstContainer.PluginManager.MasterPluginEffect)
            );
              }

              // OLD MasterPluginInstrument
              // ---------------------------------------------------
              if (modest.VstContainer.PluginManager.MasterPluginInstrument != null) {
            newfile.Settings.Plugin = new Plugin(
              modest.VstContainer
                    .PluginManager.MasterPluginInstrument
            );
            newfile.Settings.Plugin.Path =
                    modest.VstContainer
                    .PluginManager.MasterPluginInstrument.PluginPath;
              }

              //
              // Bar
              // ---------------------------------------------------
              newfile.Settings.Bar = loop;
              // Automation
              // ---------------------------------------------------
              PulseValue bar = new PulseValue(modest.MidiParser.SmfFileHandle.Division * 4 * 4, DeltaType.Ticks);
              PulseValue measure = new PulseValue(bar.Value * 4, DeltaType.Ticks);

              newfile.Settings.AutoParams = new List<AutomationParam>();
              // one measure = 2:1:0
              // = 4bars = 4quarters*4 = (4*div)*4
              // incrementing per quarter note
              //    = 4 * 4 * 4 * value
              // or = value / 4 / 4 / 4
              // value is 0 - 1 (zero inclusive 64
              double m = 0.015625;
              int counter = 0;
              for (
                double i = 0;
                i < measure.Value;
                i += modest.MidiParser.SmfFileHandle.Division) {
            double d = i / modest.MidiParser.SmfFileHandle.Division;
            double v = counter * m;
            newfile.Settings.AutoParams.Add(AutomationParam.Create(i, DeltaType.Ticks, 0, v.ToSingle()));
            counter++;
              }

              // (string) ActiveInstrument
              // ---------------------------------------------------
              if (modest.VstContainer.PluginManager.MasterPluginInstrument != null)
            newfile.Settings.ActiveInstrument = modest
                    .VstContainer
                    .PluginManager.MasterPluginInstrument.Title;
              // (string) ActiveEffect
              // ---------------------------------------------------
              if (modest.VstContainer.PluginManager.MasterPluginEffect != null)
            newfile.Settings.ActiveEffect = modest.VstContainer
                    .PluginManager.MasterPluginEffect.Title;
              newfile.Save(newfile);
              // maybe we should have checked for errors.
              modest.VstContainer.RuntimeSettings = newfile;
        }
Exemplo n.º 26
0
 static public VstEvent[] EnumerateMidiData(IMidiParserUI ui, int blockSize)
 {
     return(EnumerateMidiData(ui, ui.VstContainer.VstPlayer.SampleOffset, blockSize));
 }
Exemplo n.º 27
0
 bool HasMidi(IMidiParserUI ui)
 {
     return ui.MidiParser != null &&
     ui.MidiParser.SmfFileHandle != null &&
     ui.MidiParser.MidiDataList.Count > 0;
 }
Exemplo n.º 28
0
 public MidiEventControl(IMidiParserUI parserUI) : this()
 {
     SetUI(parserUI);
 }
Exemplo n.º 29
0
 public override void SetUI(IMidiParserUI ui)
 {
     base.SetUI(ui);
     ApplyRegistrySettings();
 }
Exemplo n.º 30
0
 public MidiEventControl(IMidiParserUI parserUI)
     : this()
 {
     SetUI(parserUI);
 }
Exemplo n.º 31
0
        public static MidiSmfFile LoadRuntime(IMidiParserUI modest)
        {
            MidiSmfFile newfile = MidiSmfFile.Load();

              if (newfile == null) {
            MessageBox.Show("Couldn't create config.");
            return null;
              }

              if (modest.VstContainer.PluginManager.CurrentConfigurationFile == null || modest.VstContainer.PluginManager.CurrentConfigurationFile != newfile.Settings.ConfigurationFile)
            modest.VstContainer.PluginManager.CurrentConfigurationFile = newfile.Settings.ConfigurationFile;

              modest.Action_MidiFileOpen(newfile.Settings.MidiFileName, newfile.Settings.SelectedMidiTrack);

              foreach (VstPlugin p in modest.VstContainer.PluginManager.Plugins) {
            {
              // active effect
              if (!string.IsNullOrEmpty(newfile.Settings.ActiveEffect))
              if (p.Title == newfile.Settings.ActiveEffect)
            modest.VstContainer.PluginManager.ActivePlugin = modest.VstContainer.PluginManager.MasterPluginEffect = p;
              // active instrument
              if (!string.IsNullOrEmpty(newfile.Settings.ActiveInstrument))
              if (p.Title == newfile.Settings.ActiveInstrument)
            modest.VstContainer.PluginManager.ActivePlugin = modest.VstContainer.PluginManager.MasterPluginInstrument = p;
            }
              }
              modest.TrySetProgram(newfile, modest.VstContainer.PluginManager.MasterPluginInstrument);
              return newfile;
        }
Exemplo n.º 32
0
 static public VstEvent[] EnumerateMidiData(IMidiParserUI ui, Loop loop)
 {
     return(EnumerateMidiData(ui, loop.Begin, loop.Length.FloorMinimum(0).ToInt32()));
 }