audio-waveform-svg-path

1.0.2 • Public • Published

Audio Waveform SVG Path

npm version

Building path for SVG element to perform waveform view of audio file

Inspired by:

https://robots.thoughtbot.com/javascript-audio-api

Demo:

https://antonkalinin.github.io/audio-waveform-svg-path/

Installation

npm install --save audio-waveform-svg-path

Usage

import AudioSVGWaveform from 'audio-waveform-svg-path';
 
const trackWaveform = new AudioSVGWaveform({url: 'url of audio file'});
 
trackWaveform.loadFromUrl().then(() => {
    const path = trackWaveform.getPath();
 
    document.getElementById('my-path-element').setAttribute('d', path);
});
 

Constructor assepts object with one of keys:

{
    url: 'url address of audio file',
    buffer: 'audio as AudioBuffer'
}

Methods

  • loadFromUrl - loads audio from url, returns Promise

  • getPath(preprocessChannels) - returns a path of waveform, accepts callback function as only arument

Example of getPath with callback

const diffPath = trackWaveform.getPath(
    /*
        Use preprocessChannels callback to modify final list of channels.
        This callback will be invocked as a argument of reduce method of channels array.
     */
    (channels, channel) => {
        const prevChannel = channels[0];
        const length = channel.length;
        const outputChannel = [];
 
        if (prevChannel) {
            for (let i = 0; i < length; i++) {
                // flip phase of right channel
                outputChannel[i] = (channel[i] - prevChannel[i]);
            }
 
            channels[0] = outputChannel;
        } else {
            channels.push(channel);
        }
 
        return channels;
    },
    []
);

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i audio-waveform-svg-path

Weekly Downloads

46

Version

1.0.2

License

MIT

Last publish

Collaborators

  • antonkalinin