MediaSuite.NET Sample code

Using Resampler.NET

Resampler.NET will upsample/downsample audio streams for you. So you could be going from 44100Hz CD-Audio quality to 8000Hz use it for the many codecs provided by SpeechEncoder.NET.

using System;
using StreamCoders.Wave;
 
namespace ResamplerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // Open default wavein
            WaveInput win = new WaveInput();
            win.BitsPerSample = 16;
            win.Channels = 1;
            win.SampleRate = 16000;
            win.OpenDevice(null);
            win.Start();
 
            // Open default waveout
            WaveOutput wout = new WaveOutput();
            wout.Channels = 1;
            wout.SampleRate = 8000;
            wout.BitsPerSample = 16;
            wout.Init();
            wout.OpenDevice(null);
 
            // Create sampler using frequencies from input and output
            Resampler resamp = new Resampler();
            resamp.Input.SampleRate = win.SampleRate;
            resamp.Output.SampleRate = wout.SampleRate;
            resamp.Init();
 
            win.ClearBuffers();
 
            while(true)
            {
                if (win.SamplesAvailable == true)
                {
                    // get all queued data from device
                    byte[] samples = win.GetAllData();
 
                    // resample from win.rate -> wout->rate
                    byte[] newsamples = resamp.Resample(samples);       
 
                    // show pride
                    Console.WriteLine("{0} -> {1}", samples.Length, newsamples.Length);
 
                    // feed back to device
                    wout.Enqueue(newsamples);
                }
            }
        }
    }
}