/// <summary>Save the current file.</summary> public void SaveAs() { SaveFileDialog dialog = new SaveFileDialog(); dialog.DefaultExt = WaveformFormat.Formats[0].Extension; dialog.Filter = WaveformFormat.AllFilters; // Base the initial file and directory on the current waveform file // name. FileInfo fi = new FileInfo(waveform.Profile.filename); dialog.InitialDirectory = fi.Directory.FullName; dialog.FileName = Path.GetFileNameWithoutExtension(waveform.Profile.filename); if (dialog.ShowDialog() == DialogResult.OK) { Program.MainForm.UseWaitCursor = true; Program.MainForm.DefaultStatus = "Saving..."; Thread savethread = new Thread(() => { WaveformFormat format = WaveformFormat.Formats[dialog.FilterIndex - 1]; format.Save(waveform, dialog.FileName); Program.MainForm.Invoke((Action)(() => { Program.MainForm.UseWaitCursor = false; Program.MainForm.DefaultStatus = "Ready"; })); }); savethread.Start(); } }
public static void CheckFormat(WaveformFormat format, short expectedChannelsCount, int expectedSamplesPerSecond, short expectedBitsPerSample) { var sampleSize = (short)((expectedBitsPerSample + 7) / 8); var frameSize = (short)(expectedChannelsCount * sampleSize); var bytesPerSecond = frameSize * expectedSamplesPerSecond; format.ChannelsCount.ShouldEqual(expectedChannelsCount); format.SamplesPerSecond.ShouldEqual(expectedSamplesPerSecond); format.BitsPerSample.ShouldEqual(expectedBitsPerSample); format.SampleSize.ShouldEqual(sampleSize); format.FrameSize.ShouldEqual(frameSize); format.BytesPerSecond.ShouldEqual(bytesPerSecond); }
protected override void When() { _frames = new WaveForm16BitFrame[] { new WaveForm16BitFrame(new [] { (short)1, (short)2 }), new WaveForm16BitFrame(new [] { (short)3, (short)4 }), }; var format = new WaveformFormat(_channelsCount, _samplesPerSecond, _bitsPerSample); var waveForm = new MemoryWaveform(format, _frames); using (var waveFormWriter = new WaveformFileWaveformWriter(_filePath)) { waveFormWriter.Write(waveForm); } }
public static void GenerateWaveformFile(string outPath) { short channelsCount = 2; int samplesPerSecond = 44100; short bitsPerSample = 16; var frequency = 440; var durationInSeconds = 2; var amplitude = 0.1; var frames = FunctionValueGenerator .GenerateSineValuesForFrequency(frequency, samplesPerSecond, durationInSeconds, (x, y) => { var samples = new [] { amplitude *y, amplitude *y }; return(new WaveForm16BitFrame(samples)); }); var format = new WaveformFormat(channelsCount, samplesPerSecond, bitsPerSample); var waveForm = new MemoryWaveform(format, frames); WriteWaveformFile(outPath, waveForm); }