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() ); } } } }
static public IEnumerable <VstPlugin> GetEffects(IMidiParserUI ui) { foreach (VstPlugin plugin in ui.VstContainer.PluginManager.VstEffects) { yield return(plugin); } }
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); } }
/// <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()); }
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; }
/// <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; }
static bool HasParserErrors(IMidiParserUI ui) { if (ui == null) { return(true); } if (ui.MidiParser.MidiDataList.Count == 0) { return(true); } return(false); }
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 ); } }
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); }
/// <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; }
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); }
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); } }
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()); }
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); } }
public MidiNoteView(IMidiParserUI parserUI) : this() { SetUI(parserUI); }
static NVstEvent[] GetSampleOffsetBlock(IMidiParserUI ui, bool ignoreMidiPgm, int blockSize) { return(VstEvent_Range(ui, ignoreMidiPgm, ui.VstContainer.VstPlayer.SampleOffset, blockSize).ToArray()); }
public NAudioVstContainer(IMidiParserUI parent) { this.parent = parent; this.vstPlayer = new NAudioVST(this); this.pluginManager = new VstPluginManager(this); }
/// <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())); }
public override void SetUI(IMidiParserUI ui) { base.SetUI(ui); ApplyRegistrySettings(); }
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; }
bool HasMidi(IMidiParserUI ui) { return(ui.MidiParser != null && ui.MidiParser.SmfFileHandle != null && ui.MidiParser.MidiDataList.Count > 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; }
static public VstEvent[] EnumerateMidiData(IMidiParserUI ui, int blockSize) { return(EnumerateMidiData(ui, ui.VstContainer.VstPlayer.SampleOffset, blockSize)); }
bool HasMidi(IMidiParserUI ui) { return ui.MidiParser != null && ui.MidiParser.SmfFileHandle != null && ui.MidiParser.MidiDataList.Count > 0; }
public MidiEventControl(IMidiParserUI parserUI) : this() { SetUI(parserUI); }
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; }
static public VstEvent[] EnumerateMidiData(IMidiParserUI ui, Loop loop) { return(EnumerateMidiData(ui, loop.Begin, loop.Length.FloorMinimum(0).ToInt32())); }