PCM audio resampler written entirely in JavaScript.
npm install wave-resampler
npm install wave-resampler
`
Use
$3
`javascript
const waveResampler = require('wave-resampler');
// resample 48kHz samples to 44.1kHz
let newSamples = waveResampler.resample(samples, 48000, 44100);
`
or
`javascript
import { resampler } from 'wave-resampler';
let newSamples = resample(samples, 48000, 44100);
`
$3
Use the wave-resampler.js file in the dist folder:
`html
`
Or load it from the jsDelivr CDN:
`html
`
Or load it from unpkg:
`html
`
Advanced use
$3
- point: Nearest point interpolation, lowest quality, no LPF by default, fastest
- linear: Linear interpolation, low quality, no LPF by default, fast
- cubic: Cubic interpolation, use LPF by default (default method)
- sinc: Windowed sinc interpolation, use LPF by default, slowest
To use a different interpolation method:
`javascript
// Will use 'sinc' method
resample(48000, 44100, {method: "sinc"});
// Will use 'linear' method
resample(48000, 44100, {method: "linear"});
`
$3
You can turn the LPF on and off for any resampling method:
`javascript
// Will use 'sinc' method with no LPF
let newSamples = resample(48000, 44100, {method: "sinc", LPF: false});
// Will use 'linear' method with LPF
let newSamples = resample(48000, 44100, {method: "linear", LPF: true});
`
The default LPF is a IIR LPF. You may define what type of LPF will be used
by changing the LPFType attribute on the toSampleRate() param.
You can use IIR or FIR:
`javascript
// Will use 'linear' method with a FIR LPF
let newSamples = resample(48000, 44100,
{method: "linear", LPF: true, LPFType: 'FIR'});
// Will use 'linear' method with a IIR LPF, the default
let newSamples = resample(48000, 44100,
{method: "linear", LPF: true});
`
You can change the order of the LPF for both IIR and FIR with
the attribute LPFOrder:
`javascript
let newSamples = resample(48000, 44100,
{method: "linear", LPF: true, LPFType: 'IIR', LPFOrder: 2});
`
The default order for IIR is 16 and for FIR is 71.
API
`javascript
/**
* Change the sample rate of the samples to a new sample rate.
* @param {!Array|!TypedArray} samples The original samples.
* @param {number} oldSampleRate The original sample rate.
* @param {number} sampleRate The target sample rate.
* @param {?Object} details The extra configuration, if needed.
* @return {!Float64Array} the new samples.
*/
export function resample(samples, oldSampleRate, sampleRate, details={}) {}
``