Table of Contents

Class WaveExtensionMethods

Namespace
NAudio.Wave
Assembly
NAudio.Core.dll

Useful extension methods to make switching between WaveAndSampleProvider easier

public static class WaveExtensionMethods
Inheritance
WaveExtensionMethods
Inherited Members

Methods

AsStandardWaveFormat(WaveFormat)

Turns WaveFormatExtensible into a standard waveformat if possible

public static WaveFormat AsStandardWaveFormat(this WaveFormat waveFormat)

Parameters

waveFormat WaveFormat

Input wave format

Returns

WaveFormat

A standard PCM or IEEE waveformat, or the original waveformat

FollowedBy(ISampleProvider, ISampleProvider)

Concatenates one Sample Provider on the end of another

public static ISampleProvider FollowedBy(this ISampleProvider sampleProvider, ISampleProvider next)

Parameters

sampleProvider ISampleProvider

The sample provider to play first

next ISampleProvider

The sample provider to play next

Returns

ISampleProvider

A single sampleprovider to play one after the other

FollowedBy(ISampleProvider, TimeSpan, ISampleProvider)

Concatenates one Sample Provider on the end of another with silence inserted

public static ISampleProvider FollowedBy(this ISampleProvider sampleProvider, TimeSpan silenceDuration, ISampleProvider next)

Parameters

sampleProvider ISampleProvider

The sample provider to play first

silenceDuration TimeSpan

Silence duration to insert between the two

next ISampleProvider

The sample provider to play next

Returns

ISampleProvider

A single sample provider

Init(IWavePlayer, ISampleProvider, bool)

Allows sending a SampleProvider directly to an IWavePlayer without needing to convert back to an IWaveProvider

public static void Init(this IWavePlayer wavePlayer, ISampleProvider sampleProvider, bool convertTo16Bit = false)

Parameters

wavePlayer IWavePlayer

The WavePlayer

sampleProvider ISampleProvider
convertTo16Bit bool

Skip(ISampleProvider, TimeSpan)

Skips over a specified amount of time (by consuming source stream)

public static ISampleProvider Skip(this ISampleProvider sampleProvider, TimeSpan skipDuration)

Parameters

sampleProvider ISampleProvider

Source sample provider

skipDuration TimeSpan

Duration to skip over

Returns

ISampleProvider

A sample provider that skips over the specified amount of time

Take(ISampleProvider, TimeSpan)

Takes a specified amount of time from the source stream

public static ISampleProvider Take(this ISampleProvider sampleProvider, TimeSpan takeDuration)

Parameters

sampleProvider ISampleProvider

Source sample provider

takeDuration TimeSpan

Duration to take

Returns

ISampleProvider

A sample provider that reads up to the specified amount of time

ToMono(ISampleProvider, float, float)

Converts a Stereo Sample Provider to mono, allowing mixing of channel volume

public static ISampleProvider ToMono(this ISampleProvider sourceProvider, float leftVol = 0.5, float rightVol = 0.5)

Parameters

sourceProvider ISampleProvider

Stereo Source Provider

leftVol float

Amount of left channel to mix in (0 = mute, 1 = full, 0.5 for mixing half from each channel)

rightVol float

Amount of right channel to mix in (0 = mute, 1 = full, 0.5 for mixing half from each channel)

Returns

ISampleProvider

A mono SampleProvider

ToSampleProvider(IWaveProvider)

Converts a WaveProvider into a SampleProvider (only works for PCM)

public static ISampleProvider ToSampleProvider(this IWaveProvider waveProvider)

Parameters

waveProvider IWaveProvider

WaveProvider to convert

Returns

ISampleProvider

ToStereo(ISampleProvider, float, float)

Converts a Mono ISampleProvider to stereo

public static ISampleProvider ToStereo(this ISampleProvider sourceProvider, float leftVol = 1, float rightVol = 1)

Parameters

sourceProvider ISampleProvider

Mono Source Provider

leftVol float

Amount to mix to left channel (1.0 is full volume)

rightVol float

Amount to mix to right channel (1.0 is full volume)

Returns

ISampleProvider

ToWaveProvider(ISampleProvider)

Converts a ISampleProvider to a IWaveProvider but still 32 bit float

public static IWaveProvider ToWaveProvider(this ISampleProvider sampleProvider)

Parameters

sampleProvider ISampleProvider

SampleProvider to convert

Returns

IWaveProvider

An IWaveProvider

ToWaveProvider16(ISampleProvider)

Converts a ISampleProvider to a IWaveProvider but and convert to 16 bit

public static IWaveProvider ToWaveProvider16(this ISampleProvider sampleProvider)

Parameters

sampleProvider ISampleProvider

SampleProvider to convert

Returns

IWaveProvider

A 16 bit IWaveProvider