static VstPluginBank Prepare(IVstPluginContext plugin) { VstPluginBank bank = new VstPluginBank(); bank.ChunkMagic = ckMagic; bank.PluginId = plugin.PluginInfo.PluginID; return bank; }
static VstPluginBank Prepare(IVstPluginContext plugin) { VstPluginBank bank = new VstPluginBank(); bank.ChunkMagic = ckMagic; bank.PluginId = plugin.PluginInfo.PluginID; return(bank); }
private float[] ProcessReplace(int blockSize, IVstPluginContext plugin) { lock (this) { if (blockSize != BlockSize) { UpdateBlockSize(blockSize, plugin); } try { plugin.PluginCommandStub.StartProcess(); plugin.PluginCommandStub.ProcessReplacing(inputBuffers, outputBuffers); plugin.PluginCommandStub.StopProcess(); } catch (Exception ex) { Debug.Print("IO Write Error"); Console.Out.WriteLine(ex.Message); } int indexOutput = 0; int oc = plugin.PluginInfo.AudioOutputCount; float maxL = float.MinValue; float maxR = float.MinValue; for (int j = 0; j < BlockSize; j++) { output[indexOutput] = outputBuffers[0][j]; output[indexOutput + 1] = outputBuffers[(oc > 1)?1:0][j]; indexOutput += 2; } // // try to find when processing input file has reached // // zero volume level // float almostZero = 0.0000001f; // if (maxL < almostZero && maxR < almostZero) { // //Console.Out.Write("-"); // // // don't stop until we have x consequetive silence calls after each other // if (foundSilenceCounter >= 5) { // if (wavStream != null && wavStream.CurrentTime >= wavStream.TotalTime) { // RaisePlayingStopped(); // } // } else { // foundSilenceCounter++; // } // } else { // foundSilenceCounter = 0; // //Console.Out.Write("."); // } RaiseProcessCalled(maxL, maxR); } return(output); }
/// .begin<br/> /// set(pgmid)<br/> /// ck=getchunk<br/> /// if (ck.NotNull) setchunk<br/> /// .end /// <param name="pluginContext">plugin</param> /// <param name="pgmId">the program we're modifying</param> public void Apply(IVstPluginContext pluginContext, int pgmId /*, byte[] data*/) { { plugin.begin(); pluginContext.PluginCommandStub.BeginSetProgram(); plugin.PluginCommandStub.SetProgram(pgmId); byte[] ck = GetChunk(true); // if we have program data, send it to the plugin if (ck != null) { Apply(pluginContext, ck, true); } ck = null; plugin.end(); } plugin.idle(); }
public static void IdleLoop(IVstPluginContext ctx, int loops) { var outputCount = ctx.PluginInfo.AudioOutputCount; var inputCount = ctx.PluginInfo.AudioInputCount; using (var inputMgr = new VstAudioBufferManager(inputCount, BlockSize)) { using (var outputMgr = new VstAudioBufferManager(outputCount, BlockSize)) { var outputBuffers = outputMgr.ToArray(); var inputBuffers = inputMgr.ToArray(); int k; for (k = 0; k < loops; k++) { ctx.PluginCommandStub.ProcessReplacing(inputBuffers, outputBuffers); } } } }
private void UpdateBlockSize(int blockSize, IVstPluginContext plugin) { BlockSize = blockSize; int inputCount = plugin.PluginInfo.AudioInputCount; int outputCount = plugin.PluginInfo.AudioOutputCount; VstAudioBufferManager inputMgr = new VstAudioBufferManager(inputCount, blockSize); VstAudioBufferManager outputMgr = new VstAudioBufferManager(outputCount, blockSize); plugin.PluginCommandStub.SetBlockSize(blockSize); plugin.PluginCommandStub.SetSampleRate(WaveFormat.SampleRate); plugin.PluginCommandStub.SetProcessPrecision(VstProcessPrecision.Process32); inputBuffers = inputMgr.ToArray(); outputBuffers = outputMgr.ToArray(); input = new float[WaveFormat.Channels * blockSize]; output = new float[WaveFormat.Channels * blockSize]; }
private static int ProcessSingleBuffer( IVstPluginContext pluginContext, int samplesOffset, VstAudioBuffer[] vstBufIn, VstAudioBuffer[] vstBufOut, VstAudioPrecisionBuffer[] vstBufIn2, VstAudioPrecisionBuffer[] vstBufOut2, bool isDoublePrecision, WAVParser pcmInput, WAVParser pcmOutput, int vstInputCount, int vstOutputCount, int samplesPerBuffer ) { var result = ProcessSingleBufferClearBuffers( vstBufIn, vstBufOut, vstBufIn2, vstBufOut2, isDoublePrecision, vstInputCount, vstOutputCount, samplesPerBuffer ); if (result != 0) { return(result); } result = ProcessSingleBufferFillBufferInput( samplesOffset, vstBufIn, vstBufIn2, isDoublePrecision, pcmInput, pcmOutput, vstOutputCount ); if (result != 0) { return(result); } if (isDoublePrecision) { pluginContext.PluginCommandStub.ProcessReplacing(vstBufIn2, vstBufOut2); } else { pluginContext.PluginCommandStub.ProcessReplacing(vstBufIn, vstBufOut); } result = ProcessSingleBufferFillByteBuffer( vstBufOut, vstBufOut2, isDoublePrecision, pcmOutput, vstOutputCount, samplesPerBuffer ); return(result); }
/// <summary> /// /// </summary> /// <param name="context">pugin</param> /// <param name="data">byte dump</param> /// <param name="isPresent">true if pgm</param> /// <returns></returns> public int SetChunk(IVstPluginContext context, byte[] data, bool isPreset) { return context.PluginCommandStub.SetChunk(data,isPreset); }
/// .begin<br/> /// set(pgmid)<br/> /// ck=getchunk<br/> /// if (ck.NotNull) setchunk<br/> /// .end /// <param name="pluginContext">plugin</param> /// <param name="pgmId">the program we're modifying</param> public void Apply(IVstPluginContext pluginContext, int pgmId/*, byte[] data*/) { { plugin.begin(); pluginContext.PluginCommandStub.BeginSetProgram(); plugin.PluginCommandStub.SetProgram(pgmId); byte[] ck = GetChunk(true); // if we have program data, send it to the plugin if (ck!=null) Apply(pluginContext,ck,true); ck = null; plugin.end(); } plugin.idle(); }
/// <summary> /// /// </summary> /// <param name="context">pugin</param> /// <param name="data">byte dump</param> /// <param name="isPresent">true if pgm</param> /// <returns></returns> public int SetChunk(IVstPluginContext context, byte[] data, bool isPreset) { return(context.PluginCommandStub.SetChunk(data, isPreset)); }
private float[] ProcessReplace(int blockSize, IVstPluginContext plugin) { lock (this) { if (blockSize != BlockSize) UpdateBlockSize(blockSize, plugin); try { plugin.PluginCommandStub.StartProcess(); plugin.PluginCommandStub.ProcessReplacing(inputBuffers, outputBuffers); plugin.PluginCommandStub.StopProcess(); } catch (Exception ex) { Debug.Print("IO Write Error"); Console.Out.WriteLine(ex.Message); } int indexOutput = 0; int oc = plugin.PluginInfo.AudioOutputCount; float maxL = float.MinValue; float maxR = float.MinValue; for (int j = 0; j < BlockSize; j++) { output[indexOutput] = outputBuffers[0][j]; output[indexOutput + 1] = outputBuffers[(oc > 1)?1:0][j]; indexOutput += 2; } // // try to find when processing input file has reached // // zero volume level // float almostZero = 0.0000001f; // if (maxL < almostZero && maxR < almostZero) { // //Console.Out.Write("-"); // // // don't stop until we have x consequetive silence calls after each other // if (foundSilenceCounter >= 5) { // if (wavStream != null && wavStream.CurrentTime >= wavStream.TotalTime) { // RaisePlayingStopped(); // } // } else { // foundSilenceCounter++; // } // } else { // foundSilenceCounter = 0; // //Console.Out.Write("."); // } RaiseProcessCalled(maxL, maxR); } return output; }
/// /// <param name="pluginContext">plugin</param> public void Apply(IVstPluginContext pluginContext) { Apply(pluginContext, this.id); }
/// set program or pattern data. /// <param name="isPat">true if data is pattern. false if data is patch</param> /// <param name="data">binary dump</param> /// <param name="pluginContext">plugin</param> public void Apply(IVstPluginContext pluginContext, byte[] data, bool isPat) { SetChunk(pluginContext, data, true); }
VstEditorViewer(INaudioVstContainer host, IVstPluginContext plugin) { this.Host = host; this.Plugin = plugin; }
/// set program or pattern data. /// <param name="isPat">true if data is pattern. false if data is patch</param> /// <param name="data">binary dump</param> /// <param name="pluginContext">plugin</param> public void Apply(IVstPluginContext pluginContext, byte[] data, bool isPat) { SetChunk(pluginContext,data,true); }
/// /// <param name="pluginContext">plugin</param> public void Apply(IVstPluginContext pluginContext) { Apply(pluginContext,this.id); }
VstEditorViewer( INaudioVstContainer host , IVstPluginContext plugin ) { this.Host = host; this.Plugin = plugin; }
public List <PluginInfoItem> GetPluginInfoItems(IVstPluginContext pluginContext) { var pluginInfoItems = new List <PluginInfoItem>(); if (pluginContext == null) { return(pluginInfoItems); } // plugin product pluginInfoItems.Add(new PluginInfoItem("Base", "Plugin Name", pluginContext.PluginCommandStub.GetEffectName())); pluginInfoItems.Add(new PluginInfoItem("Base", "Product", pluginContext.PluginCommandStub.GetProductString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Vendor", pluginContext.PluginCommandStub.GetVendorString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Vendor Version", pluginContext.PluginCommandStub.GetVendorVersion().ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Vst Support", pluginContext.PluginCommandStub.GetVstVersion().ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Plugin Category", pluginContext.PluginCommandStub.GetCategory().ToString())); // plugin info pluginInfoItems.Add(new PluginInfoItem("Base", "Flags", pluginContext.PluginInfo.Flags.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Plugin ID", pluginContext.PluginInfo.PluginID.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Plugin ID String", VstUtils.PluginIdNumberToIdString(pluginContext.PluginInfo.PluginID))); pluginInfoItems.Add(new PluginInfoItem("Base", "Plugin Version", pluginContext.PluginInfo.PluginVersion.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Audio Input Count", pluginContext.PluginInfo.AudioInputCount.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Audio Output Count", pluginContext.PluginInfo.AudioOutputCount.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Initial Delay", pluginContext.PluginInfo.InitialDelay.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Program Count", pluginContext.PluginInfo.ProgramCount.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Parameter Count", pluginContext.PluginInfo.ParameterCount.ToString())); pluginInfoItems.Add(new PluginInfoItem("Base", "Tail Size", pluginContext.PluginCommandStub.GetTailSize().ToString())); // can do pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.Bypass), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.Bypass)).ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.MidiProgramNames), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.MidiProgramNames)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.Offline), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.Offline)).ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.ReceiveVstEvents), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.ReceiveVstEvents)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.ReceiveVstMidiEvent), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.ReceiveVstMidiEvent)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.ReceiveVstTimeInfo), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.ReceiveVstTimeInfo)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.SendVstEvents), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.SendVstEvents)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.SendVstMidiEvent), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.SendVstMidiEvent)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.ConformsToWindowRules), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.ConformsToWindowRules)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.Metapass), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.Metapass)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.MixDryWet), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.MixDryWet)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.Multipass), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.Multipass)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.NoRealTime), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.NoRealTime)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.PlugAsChannelInsert), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.PlugAsChannelInsert)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.PlugAsSend), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.PlugAsSend)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.SendVstTimeInfo), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.SendVstTimeInfo)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x1in1out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x1in1out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x1in2out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x1in2out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x2in1out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x2in1out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x2in2out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x2in2out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x2in4out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x2in4out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x4in2out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x4in2out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x4in4out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x4in4out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x4in8out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x4in8out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x8in4out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x8in4out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("CanDo", nameof(VstPluginCanDo.x8in8out), pluginContext.PluginCommandStub.CanDo(VstCanDoHelper.ToString(VstPluginCanDo.x8in8out)) .ToString())); pluginInfoItems.Add(new PluginInfoItem("Program", "Current Program Index", pluginContext.PluginCommandStub.GetProgram().ToString())); pluginInfoItems.Add(new PluginInfoItem("Program", "Current Program Name", pluginContext.PluginCommandStub.GetProgramName())); return(pluginInfoItems); }