//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); } }