예제 #1
0
        public System.IO.Stream DoResampler(DriverModels.EngineInput Args)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            if (!_isLegalPlugin) return ms;
            try
            {
                string tmpFile = System.IO.Path.GetTempFileName();
                string ArgParam = string.Format(
                    "\"{0}\" \"{1}\" {2} {3} \"{4}\" {5} {6} {7} {8} {9} {10} !{11} {12}",
                    Args.inputWaveFile,
                    tmpFile,
                    Args.NoteString,
                    Args.Velocity,
                    Args.StrFlags,
                    Args.Offset,
                    Args.RequiredLength,
                    Args.Consonant,
                    Args.Cutoff,
                    Args.Volume,
                    Args.Modulation,
                    Args.Tempo,
                    Base64.Base64EncodeInt12(Args.pitchBend));

                var p = Process.Start(new ProcessStartInfo(ExePath, ArgParam) { UseShellExecute = false, CreateNoWindow = true });
                p.WaitForExit();
                if (p != null)
                {
                    p.Close();
                    p.Dispose();
                    p = null;
                }
                if (System.IO.File.Exists(tmpFile))
                {
                    byte[] Dat = System.IO.File.ReadAllBytes(tmpFile);
                    ms = new MemoryStream(Dat);
                    try
                    {
                        System.IO.File.Delete(tmpFile);
                    }
                    catch { ;}
                }
            }
            catch(Exception e) { ;}
            return ms;
        }
예제 #2
0
 public System.IO.Stream DoResampler(DriverModels.EngineInput Args)
 {
     System.IO.MemoryStream ms = new System.IO.MemoryStream();
     if (!_isLegalPlugin) return ms;
     if (DoResamplerMethod != null)
     {
         object inputarg = CopyObjectToNewType(Args,DoResamplerMethod.GetParameters()[0].ParameterType);
         object ret = DoResamplerMethod.Invoke(null, new object[1] { inputarg });
         DriverModels.EngineOutput Out = (DriverModels.EngineOutput)CopyObjectToNewType(ret, typeof(DriverModels.EngineOutput));
         ms = new System.IO.MemoryStream(Out.wavData);
     }
     return ms;
 }
예제 #3
0
 public System.IO.Stream DoResampler(DriverModels.EngineInput Args)
 {
     System.IO.MemoryStream ms = new System.IO.MemoryStream();
     if (!_isLegalPlugin) return ms;
     try
     {
         IntPtr hModule = LoadLibrary(DllPath);
         if (hModule == IntPtr.Zero) _isLegalPlugin = false;
         else
         {
             IntPtr m = GetProcAddress(hModule, "DoResampler");
             if (m != IntPtr.Zero)
             {
                 DoResamplerDelegate g = (DoResamplerDelegate)Marshal.GetDelegateForFunctionPointer(m, typeof(DoResamplerDelegate));
                 DriverModels.EngineOutput Output = Intptr2EngineOutput(g(Args));
                 ms = new System.IO.MemoryStream(Output.wavData);
             }
             FreeLibrary(hModule);
         }
     }
     catch { ;}
     return ms;
 }