diff --git a/lib/Voice/VolumeTransformer.js b/lib/Voice/VolumeTransformer.js index 309bb8dbd..29cbfb176 100644 --- a/lib/Voice/VolumeTransformer.js +++ b/lib/Voice/VolumeTransformer.js @@ -22,6 +22,19 @@ var Volume = (function (_Transform) { this.set(volume); } + // Set the volume so that a value of 0.5 is half the perceived volume and + // 2.0 is double the perceived volume. + + Volume.prototype.setVolumeLogarithmic = function setVolumeLogarithmic(value) { + this.volume = Math.pow(value, 1.660964); + }; + + // Set the volume to a value specified as decibels. + + Volume.prototype.setVolumeDecibels = function setVolumeDecibels(db) { + this.volume = Math.pow(10, db / 20); + }; + Volume.prototype.get = function get() { return this.volume; }; @@ -61,7 +74,7 @@ var Volume = (function (_Transform) { }, { key: 'multiplier', get: function get() { - return Math.tan(this.volume); + return this.volume; } }]); diff --git a/src/Voice/VolumeTransformer.js b/src/Voice/VolumeTransformer.js index 6235ae496..87b9d0521 100644 --- a/src/Voice/VolumeTransformer.js +++ b/src/Voice/VolumeTransformer.js @@ -17,8 +17,19 @@ class Volume extends Transform { this._volume = value; } + // Set the volume so that a value of 0.5 is half the perceived volume and + // 2.0 is double the perceived volume. + setVolumeLogarithmic(value) { + this.volume = Math.pow(value, 1.660964); + } + + // Set the volume to a value specified as decibels. + setVolumeDecibels(db) { + this.volume = Math.pow(10, db / 20); + } + get multiplier() { - return Math.tan(this.volume); + return this.volume; } get() {