Skip to content

Repository files navigation

resample

-- import "github.com/zaf/resample"

Package resample implements resampling of PCM-encoded audio. It uses the SoX Resampler library `libsoxr'.

To install make sure you have libsoxr and pkg-config installed, then run:

go install github.com/zaf/resample@latest

The package warps an io.Reader in a Resampler that resamples and writes all input data. Input should be RAW PCM encoded audio samples.

For usage details please see the code snippet in the cmd folder.

Usage

const (
// Quality settingsQuick=0// Quick cubic interpolationLowQ=1// LowQ 16-bit with larger rolloffMediumQ=2// MediumQ 16-bit with medium rolloffHighQ=4// High qualityVeryHighQ=6// Very high quality// Input formatsF32=0// 32-bit floating point PCMF64=1// 64-bit floating point PCMI32=2// 32-bit signed linear PCMI16=3// 16-bit signed linear PCM
)

type Resampler

typeResamplerstruct {
}

Resampler resamples PCM sound data.

func New

funcNew(writer io.Writer, inputRate, outputRatefloat64, channels, format, qualityint) (*Resampler, error)

New returns a pointer to a Resampler that implements an io.WriteCloser. It takes as parameters the destination data Writer, the input and output sampling rates, the number of channels of the input data, the input format and the quality setting.

func (*Resampler) Close

func (r*Resampler) Close() (error)

Close flushes, clean-ups and frees memory. Should always be called when finished using the resampler, and before we can use its output.

func (*Resampler) Reset

func (r*Resampler) Reset(writer io.Writer) (error)

Reset permits reusing a Resampler rather than allocating a new one.

func (*Resampler) Write

func (r*Resampler) Write(p []byte) (int, error)

Write resamples PCM sound data. Writes len(p) bytes from p to the underlying data stream, returns the number of bytes written from p (0 <= n <= len(p)) and any error encountered that caused the write to stop early.

About

Go package for resampling sound data

Resources

Stars

73 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages