wavesurfer.js
Version:
Interactive navigable audio visualization using Web Audio and Canvas
64 lines (47 loc) • 1.53 kB
JavaScript
var app = angular.module('ngWavesurfer', []);
app.directive('ngWavesurfer', function () {
return {
restrict: 'E',
link: function ($scope, $element, $attrs) {
$element.css('display', 'block');
var options = angular.extend({ container: $element[0] }, $attrs);
var wavesurfer = WaveSurfer.create(options);
if ($attrs.url) {
wavesurfer.load($attrs.url, $attrs.data || null);
}
$scope.$emit('wavesurferInit', wavesurfer);
}
};
});
app.controller('PlaylistController', function ($scope) {
var activeUrl = null;
$scope.paused = true;
$scope.$on('wavesurferInit', function (e, wavesurfer) {
$scope.wavesurfer = wavesurfer;
$scope.wavesurfer.on('play', function () {
$scope.paused = false;
});
$scope.wavesurfer.on('pause', function () {
$scope.paused = true;
});
$scope.wavesurfer.on('finish', function () {
$scope.paused = true;
$scope.wavesurfer.seekTo(0);
$scope.$apply();
});
});
$scope.play = function (url) {
if (!$scope.wavesurfer) {
return;
}
activeUrl = url;
$scope.wavesurfer.once('ready', function () {
$scope.wavesurfer.play();
$scope.$apply();
});
$scope.wavesurfer.load(activeUrl);
};
$scope.isPlaying = function (url) {
return url == activeUrl;
};
});