Skip to content

Instantly share code, notes, and snippets.

@georgeperry1
Last active July 30, 2021 13:09
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save georgeperry1/ab080f95bedf2236ef87e63c7e3e60c7 to your computer and use it in GitHub Desktop.
Save georgeperry1/ab080f95bedf2236ef87e63c7e3e60c7 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react';
import WaveSurfer from 'wavesurfer.js';
import { WaveformContianer, Wave, PlayButton } from './Waveform.styled';
class Waveform extends Component {
state = {
playing: false,
};
componentDidMount() {
const track = document.querySelector('#track');
this.waveform = WaveSurfer.create({
barWidth: 3,
cursorWidth: 1,
container: '#waveform',
backend: 'WebAudio',
height: 80,
progressColor: '#2D5BFF',
responsive: true,
waveColor: '#EFEFEF',
cursorColor: 'transparent',
});
this.waveform.load(track);
};
handlePlay = () => {
this.setState({ playing: !this.state.playing });
this.waveform.playPause();
};
render() {
const url = 'https://www.mfiles.co.uk/mp3-downloads/gs-cd-track2.mp3';
return (
<WaveformContianer>
<PlayButton onClick={this.handlePlay} >
{!this.state.playing ? 'Play' : 'Pause'}
</PlayButton>
<Wave id="waveform" />
<audio id="track" src={url} />
</WaveformContianer>
);
}
};
export default Waveform;
@mhsattarian
Copy link

setting property Backend should be MediaElement for this to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment