Table of Contents

Namespace NAudio.Wave.SampleProviders

Classes

AdsrSampleProvider

Applies an ADSR (attack / decay / sustain / release) amplitude envelope to a source sample provider. Wraps EnvelopeGenerator, exposing its stage times in seconds and its sustain level, and multiplies the source by the envelope each sample.

ChannelMixMatrix

Defines common channel mixing matrices for use with ChannelMixerSampleProvider.

ChannelMixerSampleProvider

Produces an output stream by mixing together the channels of a single source using an arbitrary mixing matrix, where the number of output channels is determined by the number of columns in the matrix.

ConcatenatingSampleProvider

Sample Provider to concatenate multiple sample providers together

FadeInOutSampleProvider

Sample Provider to allow fading in and out

LinearPanStrategy

Linear Pan

MeteringSampleProvider

Simple SampleProvider that passes through audio unchanged and raises an event every n samples with the maximum sample value from the period for metering purposes

MixingSampleProvider

A sample source mixer, allowing inputs to be added and removed

MonoToStereoSampleProvider

No nonsense mono to stereo provider, no volume adjustment, just copies input to left and right.

MultiplexingSampleProvider

Allows any number of inputs to be patched to outputs Uses could include swapping left and right channels, turning mono into stereo, feeding different input sources to different soundcard outputs etc

NotifyingSampleProvider

Simple class that raises an event on every sample

OffsetSampleProvider

Allows you to:

  1. insert a pre-delay of silence before the source begins
  2. skip over a certain amount of the beginning of the source
  3. only play a set amount from the source
  4. insert silence at the end after the source is complete
PanningSampleProvider

Converts a mono sample provider to stereo, with a customisable pan strategy

Pcm16BitToSampleProvider

Converts an IWaveProvider containing 16 bit PCM to an ISampleProvider

Pcm24BitToSampleProvider

Converts an IWaveProvider containing 24 bit PCM to an ISampleProvider

Pcm32BitToSampleProvider

Converts an IWaveProvider containing 32 bit PCM to an ISampleProvider

Pcm8BitToSampleProvider

Converts an IWaveProvider containing 8 bit PCM to an ISampleProvider

SampleChannel

Utility class that takes an IWaveProvider input at any bit depth and exposes it as an ISampleProvider. Can turn mono inputs into stereo, and allows adjusting of volume. (The eventual successor to WaveChannel32) This class also serves as an example of how you can link together several simple sample sources to form a more useful class.

SampleProviderConverterBase

Helper base class for classes converting to ISampleProvider

SampleProviderEventArgs

SampleProvider event args

SampleToWaveProvider

Helper class for when you need to convert back to an IWaveProvider from an ISampleProvider. Keeps it as IEEE float

SampleToWaveProvider16

Converts a sample source to 16 bit PCM, optionally clipping and adjusting volume along the way

SampleToWaveProvider24

Converts a sample source to 24 bit PCM, optionally clipping and adjusting volume along the way

SignalGenerator

Signal Generator Sin, Square, Triangle, SawTooth, White Noise, Pink Noise, Sweep.

SinPanStrategy

Sinus Pan, thanks to Yuval Naveh

SmbPitchShiftingSampleProvider

Author: Freefall Date: 05.08.16 Based on: the port of Stephan M. Bernsee“s pitch shifting class Port site: https://sites.google.com/site/mikescoderama/pitch-shifting Test application and github site: https://github.com/Freefall63/NAudio-Pitchshifter

NOTE: I strongly advice to add a Limiter for post-processing. For my needs the FastAttackCompressor1175 provides acceptable results: https://github.com/Jiyuu/SkypeFX/blob/master/JSNet/FastAttackCompressor1175.cs

UPDATE: Added a simple Limiter based on the pydirac implementation. https://github.com/echonest/remix/blob/master/external/pydirac225/source/Dirac_LE.cpp

SquareRootPanStrategy

Square Root Pan, thanks to Yuval Naveh

StereoBalanceStrategy

Simplistic "balance" control - treating the mono input as if it was stereo In the centre, both channels full volume. Opposite channel decays linearly as balance is turned to to one side

StereoToMonoSampleProvider

Takes a stereo input and turns it to mono

StreamVolumeEventArgs

Event args for aggregated stream volume

VolumeSampleProvider

Very simple sample provider supporting adjustable gain

WaveToSampleProvider

Helper class turning an already 32 bit floating point IWaveProvider into an ISampleProvider - hopefully not needed for most applications

WaveToSampleProvider64

Helper class turning an already 64 bit floating point IWaveProvider into an ISampleProvider - hopefully not needed for most applications

WdlResamplingSampleProvider

Fully managed resampling sample provider, based on the WDL Resampler

Structs

StereoSamplePair

Pair of floating point values, representing samples or multipliers

Interfaces

IPanStrategy

Required Interface for a Panning Strategy

Enums

SignalGeneratorType

Signal Generator type