private void record(object sender, RoutedEventArgs e) { if (this.lvSentences.SelectedItems.Count < 1) { return; } if (isRecording) { stop(sender, e); } else { saveLanguage(); isRecording = true; lblRecording.Visibility = System.Windows.Visibility.Visible; Sentence sentence = (Sentence)this.lvSentences.SelectedItem; string path = sentence.fullPath; Directory.CreateDirectory(Path.GetDirectoryName(path)); // Create directory if it doesn't exist System.IO.File.WriteAllText(path, ""); // Create and flush the file filewriter = new WavFileWriter(path, recSamplerate, recBits, recChannels); WaveFormat fmt = new WaveFormat(recSamplerate, recBits, recChannels); recorder = new WaveInRecorder(-1, fmt, recBuffersize, this.DataArrived); } }
public unsafe void InitAudio(int sampleRate, int bufferSize) { //Set up audio provider audioProvider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, 2)); audioOutput = new WaveOut(); audioOutput.Init(audioProvider); audioOutput.Play(); //Create buffer audioOutputBuffer = new byte[bufferSize * 2 * sizeof(float)]; audioOutputHandle = GCHandle.Alloc(audioOutputBuffer, GCHandleType.Pinned); audioOutputPtr = (float *)audioOutputHandle.AddrOfPinnedObject(); //Create WAV file test = new WavFileWriter("F:\\test_audio.wav", FileMode.Create, sampleRate, 2, 16, bufferSize); }
/// <summary> /// Filter out silence or noise from start and end of wave file. /// </summary> /// <param name="strPath">Source wave file</param> /// <param name="noiceLevel">Absolute value for noice threshold</param> /// <returns>True/False</returns> public bool StripSilence(string strPath, int noiceLevel) { if ((strPath == null) || (strPath == "")) return false; // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) return false; byte[] arrfile = GetWAVEData(strPath); int startpos = 0; int endpos = arrfile.Length - 1; // Check for silence at start for (int j = 0; isSilence(arrfile, j, noiceLevel); j += 20) startpos = j; // Allow room for tone-in buffer int buffer = wain.SampleRate * (wain.BitsPerSample / 8) / 32; // 1/32 seconds lead time startpos = startpos - buffer; if (startpos < 0) startpos = 0; // Check for silence at end. No need to check tone out buffer for (int k = arrfile.Length - buffer; (k >= 0) && (isSilence(arrfile, k, noiceLevel)); k -= 20) endpos = k; // Allow room for tone-out buffer endpos = endpos + buffer; if (endpos > arrfile.Length) endpos = arrfile.Length - 2; if (startpos >= endpos) return false; byte[] newarr = new byte[endpos - startpos]; for (int ni = 0, m = startpos; ni < newarr.Length; m++, ni++) newarr[ni] = arrfile[m]; // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(newarr, newarr.Length); writer.Close(); return true; }
private void buttonModulateAmplitude_Click(object sender, EventArgs e) { if (generatedSignal.Count == 0) { MessageBox.Show("Generate signal first!"); } else { var inputValues = ProcessInput(); modulationSignal = CreateProperSignal(comboBoxWave.SelectedIndex, inputValues.Item1, inputValues.Item2, inputValues.Item3); currentSignal.AM = modulationSignal; generatedSignal = currentSignal.GenerateSignal(); var wavFileWriter = new WavFileWriter(new FileStream(PATH, FileMode.Create), sampleRate, 1000000, 1); wavFileWriter.WriteAll(generatedSignal, soundLength); } }
/// <summary> /// Speed up wav file to mimic Donald Duck /// </summary> /// <param name="strPath">Source wave</param> /// <param name="speed">Speed between 0 and 19 </param> /// <returns>True/False</returns> public bool SpeedUp(string strPath, int speed) { if ((strPath == null) || (strPath == "")) { return(false); } if ((speed < 0) || (speed > 19)) { return(false); } // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) { return(false); } byte[] arrfile = GetWAVEData(strPath); byte[] newfile = new byte[arrfile.Length]; int skip = 21 - speed; int j = 0; for (int i = 0; i < arrfile.Length; i += 2) { if (skip > 20 || (((i / 2) % skip) != 0)) { newfile[j] = arrfile[i]; newfile[j + 1] = arrfile[i + 1]; j += 2; } } // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(newfile, j); writer.Close(); return(true); }
static void Main(string[] args) { LibUSBProvider provider = new LibUSBProvider(); var testd = provider.FindDevices(0x1d50, 0x60a1)[0]; testd.OpenDevice(); var b = new LibSDR.Components.IO.USB.UsbBuffer(512); int testr = testd.BulkTransfer(LibSDR.Components.IO.USB.UsbTransferDirection.READ, 0x01, b, 1000); AirSpyDevice device = AirSpyDevice.OpenDevice(provider); device.StartRx(); device.SampleRate = 10000000; //device.SampleRate = 3000000; if (true) { device.CenterFrequency = 93700000; device.SetLinearGain(6 / 21f); } else { device.CenterFrequency = 144430000; device.SetLinearGain(2 / 21f); } test = new WavFileWriter(new FileStream("F:\\test.wav", FileMode.Create), (int)device.SampleRate, 2, LibSDR.Components.IO.SampleFormat.Short16, 1 << 16); UnsafeBuffer buffer = UnsafeBuffer.Create(1 << 16, out Complex * bufferPtr); while (true) { int read = device.Read(bufferPtr, 1 << 16, 1000); test.Write(bufferPtr, read); test.FinalizeFile(); } }
/// <summary> /// Tone out wav file /// </summary> /// <param name="strPath">Source wave</param> /// <returns>True/False</returns> public bool ToneOut(string strPath) { if ((strPath == null) || (strPath == "")) { return(false); } // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) { return(false); } byte[] arrfile = GetWAVEData(strPath); // Calculate constants int end = wain.Length; int start = end - (wain.SampleRate * (wain.BitsPerSample / 8) / 16); // 1/16 seconds from end int span = end - start; //change volume for (int j = start; j < arrfile.Length; j += 2) { short snd = ComplementToSigned(ref arrfile, j); snd = Convert.ToInt16(snd * (end - j) / span); byte[] newval = SignedToComplement(snd); arrfile[j] = newval[0]; arrfile[j + 1] = newval[1]; } // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(arrfile, arrfile.Length); writer.Close(); return(true); }
private void buttonCreate_Click(object sender, EventArgs e) { if (!createPoly) { var inputValues = ProcessInput(); currentSignal = CreateProperSignal(comboBoxWave.SelectedIndex, inputValues.Item1, inputValues.Item2, inputValues.Item3); generatedSignal = currentSignal.GenerateSignal(); } else { generatedSignal = resultSignal[0].GenerateSignal(); for (int i = 1; i < resultSignal.Count; i++) { var getSignal = resultSignal[i].GenerateSignal(); for (int j = 0; j < getSignal.Count; j++) { generatedSignal[j] += getSignal[j]; } } /* * generatedSignal = new List<double>(polyHarmonicsSignal[0]); * for (int i = 1; i < polyHarmonicsSignal.Count; i++) * { * for (int j = 0; j < generatedSignal.Count; j++) * { * generatedSignal[j] += polyHarmonicsSignal[i][j]; * } * } */ createPoly = false; } var wavFileWriter = new WavFileWriter(new FileStream(PATH, FileMode.Create), sampleRate, 1000000, 1); wavFileWriter.WriteAll(generatedSignal, 10); }
public void InitAudio(int sampleRate, int bufferSize) { test = new WavFileWriter("/home/pi/test.wav", FileMode.Create, sampleRate, 2, 16, bufferSize); }
public WavAudioPipe(string filename, int rate, int bufferSize) { wav = new WavFileWriter(new FileStream(filename, FileMode.Create), rate, 2, LibSDR.Components.IO.SampleFormat.Short16, bufferSize); }
/// <summary> /// Filter out silence or noise from start and end of wave file. /// </summary> /// <param name="strPath">Source wave file</param> /// <param name="noiceLevel">Absolute value for noice threshold</param> /// <returns>True/False</returns> public bool StripSilence(string strPath, int noiceLevel) { if ((strPath == null) || (strPath == "")) { return(false); } // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) { return(false); } byte[] arrfile = GetWAVEData(strPath); int startpos = 0; int endpos = arrfile.Length - 1; // Check for silence at start for (int j = 0; isSilence(arrfile, j, noiceLevel); j += 20) { startpos = j; } // Allow room for tone-in buffer int buffer = wain.SampleRate * (wain.BitsPerSample / 8) / 32; // 1/32 seconds lead time startpos = startpos - buffer; if (startpos < 0) { startpos = 0; } // Check for silence at end. No need to check tone out buffer for (int k = arrfile.Length - buffer; (k >= 0) && (isSilence(arrfile, k, noiceLevel)); k -= 20) { endpos = k; } // Allow room for tone-out buffer endpos = endpos + buffer; if (endpos > arrfile.Length) { endpos = arrfile.Length - 2; } if (startpos >= endpos) { return(false); } byte[] newarr = new byte[endpos - startpos]; for (int ni = 0, m = startpos; ni < newarr.Length; m++, ni++) { newarr[ni] = arrfile[m]; } // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(newarr, newarr.Length); writer.Close(); return(true); }
/// <summary> /// Tone in wav file /// </summary> /// <param name="strPath">Source wave</param> /// <returns>True/False</returns> public bool ToneIn(string strPath) { if ((strPath == null) || (strPath == "")) return false; // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) return false; byte[] arrfile = GetWAVEData(strPath); // Calculate constants int start = 0; int end = wain.SampleRate * (wain.BitsPerSample / 8) / 16; // 1/16 seconds int span = end - start; //change volume for (int j = start; j < end; j += 2) { short snd = ComplementToSigned(ref arrfile, j); snd = Convert.ToInt16(snd * (j / span)); byte[] newval = SignedToComplement(snd); arrfile[j] = newval[0]; arrfile[j + 1] = newval[1]; } // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(arrfile, arrfile.Length); writer.Close(); return true; }
/// <summary> /// Speed up wav file to mimic Donald Duck /// </summary> /// <param name="strPath">Source wave</param> /// <param name="speed">Speed between 0 and 19 </param> /// <returns>True/False</returns> public bool SpeedUp(string strPath, int speed) { if ((strPath == null) || (strPath == "")) return false; if ((speed < 0) || (speed > 19)) return false; // Read from file wavProcessor wain = new wavProcessor(); if (!wain.WaveHeaderIN(@strPath)) return false; byte[] arrfile = GetWAVEData(strPath); byte[] newfile = new byte[arrfile.Length]; int skip = 21-speed; int j = 0; for (int i = 0; i < arrfile.Length; i += 2) { if (skip > 20 || (((i/2) % skip) != 0)) { newfile[j] = arrfile[i]; newfile[j + 1] = arrfile[i + 1]; j += 2; } } // write file back WavFileWriter writer = new WavFileWriter(@strPath, wain.SampleRate, wain.BitsPerSample, wain.Channels); writer.Write(newfile, j); writer.Close(); return true; }