From e8cc571d6a0f12934b7909b4fe6c7250758b5a7b Mon Sep 17 00:00:00 2001 From: meew0 Date: Sat, 2 Apr 2016 11:03:28 +0200 Subject: [PATCH 1/4] Make the multiplier return the current volume without doing any math to it, so we can have different ways to set the multiplier in logarithmic ways. --- src/Voice/VolumeTransformer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Voice/VolumeTransformer.js b/src/Voice/VolumeTransformer.js index 6235ae496..7c9c18ecd 100644 --- a/src/Voice/VolumeTransformer.js +++ b/src/Voice/VolumeTransformer.js @@ -18,7 +18,7 @@ class Volume extends Transform { } get multiplier() { - return Math.tan(this.volume); + return this.volume; } get() { From 910b5a7ae6c5cae64ed90e971bd9941b126e0293 Mon Sep 17 00:00:00 2001 From: meew0 Date: Sat, 2 Apr 2016 11:08:00 +0200 Subject: [PATCH 2/4] Add a function to set the volume in a logarithmic way so that 0.5 is -10 dB (half the perceived volume) and 2.0 is +10 dB (double the perceived volume). --- src/Voice/VolumeTransformer.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Voice/VolumeTransformer.js b/src/Voice/VolumeTransformer.js index 7c9c18ecd..98c7d7b15 100644 --- a/src/Voice/VolumeTransformer.js +++ b/src/Voice/VolumeTransformer.js @@ -17,6 +17,12 @@ 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); + } + get multiplier() { return this.volume; } From 3a2c449197981c1c5c1267fcaabac0d9c3e4fae7 Mon Sep 17 00:00:00 2001 From: meew0 Date: Sat, 2 Apr 2016 11:09:51 +0200 Subject: [PATCH 3/4] Add a function to set the volume to a decibel value --- src/Voice/VolumeTransformer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Voice/VolumeTransformer.js b/src/Voice/VolumeTransformer.js index 98c7d7b15..87b9d0521 100644 --- a/src/Voice/VolumeTransformer.js +++ b/src/Voice/VolumeTransformer.js @@ -23,6 +23,11 @@ class Volume extends Transform { 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 this.volume; } From 8fa3c24b1292c600edb7a0d84ab1179da34e6f3e Mon Sep 17 00:00:00 2001 From: meew0 Date: Sat, 2 Apr 2016 11:15:33 +0200 Subject: [PATCH 4/4] Rebuild for volume changes --- lib/Voice/VolumeTransformer.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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; } }]);