/// <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();
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        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);
        }