UNPKG

sono

Version:

A simple yet powerful JavaScript library for working with Web Audio

105 lines (94 loc) 2.63 kB
'use strict'; exports.__esModule = true; exports.default = SoundGroup; var _group = require('../group'); var _group2 = _interopRequireDefault(_group); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function SoundGroup(context, destination) { var group = new _group2.default(context, destination); var sounds = group.sounds; var playbackRate = 1, loop = false, src = void 0; function getSource() { if (!sounds.length) { return; } src = sounds.slice(0).sort(function (a, b) { return b.duration - a.duration; })[0]; } var add = group.add; group.add = function (sound) { add(sound); getSource(); return group; }; var remove = group.remove; group.remove = function (soundOrId) { remove(soundOrId); getSource(); return group; }; Object.defineProperties(group, { currentTime: { get: function get() { return src ? src.currentTime : 0; }, set: function set(value) { this.stop(); this.play(0, value); } }, duration: { get: function get() { return src ? src.duration : 0; } }, // ended: { // get: function() { // return src ? src.ended : false; // } // }, loop: { get: function get() { return loop; }, set: function set(value) { loop = !!value; sounds.forEach(function (sound) { sound.loop = loop; }); } }, paused: { get: function get() { // return src ? src.paused : false; return !!src && src.paused; } }, progress: { get: function get() { return src ? src.progress : 0; } }, playbackRate: { get: function get() { return playbackRate; }, set: function set(value) { playbackRate = value; sounds.forEach(function (sound) { sound.playbackRate = playbackRate; }); } }, playing: { get: function get() { // return src ? src.playing : false; return !!src && src.playing; } } }); return group; }