Beispiel #1
0
        //Va a generar una señal con una frecuencia de 440 y la guardara en un wav
        private void btnCrearFrecuencia_Click(object sender, RoutedEventArgs e)
        {
            var sampleRate      = 44100;
            var channelCount    = 1;
            var signalGenerator = new SignalGenerator(sampleRate, channelCount);

            signalGenerator.Type      = SignalGeneratorType.Sin;
            signalGenerator.Frequency = 440;
            signalGenerator.Gain      = 0.5;

            var waveFormat = new WaveFormat(sampleRate, 16, channelCount);

            var writer = new CueWaveFileWriter("tono.wav", waveFormat);

            var muestrasPorSegundo = sampleRate * channelCount;

            var buffer = new float[muestrasPorSegundo];

            for (int i = 0; i < 5; i++)
            {
                var muestras = signalGenerator.Read(buffer, 0, muestrasPorSegundo);
                writer.WriteSamples(buffer, 0, muestras);
            }
            writer.Dispose();
        }
        public void WriteCues(Dictionary <string, List <double> > DictionaryOfCuePoints, bool IsInsertCuePointsInBook = false)
        {
            string        SourceFile = string.Empty;
            List <double> CuePoints  = new List <double>();
            int           CuePointTime;
            string        cueFileFolder = string.Empty;

            foreach (var entry in DictionaryOfCuePoints)
            {
                SourceFile = entry.Key;
                CuePoints  = entry.Value;

                string sourceFileFolder = System.IO.Path.GetDirectoryName(SourceFile);
                string sourceFileName   = System.IO.Path.GetFileName(SourceFile);
                string sourceFilePath   = sourceFileFolder + "\\" + sourceFileName;
                cueFileFolder = sourceFileFolder + "\\" + "Audio_files_cuepoints";

                if (!Directory.Exists(cueFileFolder))
                {
                    Directory.CreateDirectory(cueFileFolder);
                }

                string            CueAudioFilePath = cueFileFolder + "\\" + "Cues_" + sourceFileName;
                CueWaveFileReader sourceStream     = new CueWaveFileReader(SourceFile);
                using (CueWaveFileWriter writer = new CueWaveFileWriter(CueAudioFilePath, sourceStream.WaveFormat))
                {
                    AudioLibPCMFormat pcmFormat = new AudioLibPCMFormat((ushort)sourceStream.WaveFormat.Channels, (uint)sourceStream.WaveFormat.SampleRate, (ushort)sourceStream.WaveFormat.BitsPerSample);
                    int    BUFFER_SIZE          = (int)pcmFormat.ConvertTimeToBytes(1500 * AudioLibPCMFormat.TIME_UNIT);//132300;
                    byte[] buffer = new byte[BUFFER_SIZE];
                    int    byteRead;
                    writer.Flush();

                    while ((byteRead = sourceStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        writer.Write(buffer, 0, byteRead);
                    }
                    foreach (double CuePoint in CuePoints)
                    {
                        CuePointTime = (int)CuePoint * sourceStream.WaveFormat.SampleRate;
                        writer.AddCue(CuePointTime, string.Empty);
                    }
                }
                if (IsInsertCuePointsInBook)
                {
                    sourceStream.Dispose();
                    if (File.Exists(sourceFilePath))
                    {
                        File.Delete(sourceFilePath);
                    }

                    File.Move(CueAudioFilePath, sourceFilePath);
                }
            }

            if (IsInsertCuePointsInBook && Directory.Exists(cueFileFolder))
            {
                Directory.Delete(cueFileFolder);
            }
        }