diff options
-rw-r--r-- | lib/dtas/player/client_handler.rb | 3 | ||||
-rw-r--r-- | lib/dtas/rg_state.rb | 11 | ||||
-rw-r--r-- | test/test_rg_integration.rb | 2 | ||||
-rw-r--r-- | test/test_rg_state.rb | 6 |
4 files changed, 11 insertions, 11 deletions
diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb index 05704c0..b17e90b 100644 --- a/lib/dtas/player/client_handler.rb +++ b/lib/dtas/player/client_handler.rb @@ -274,8 +274,7 @@ module DTAS::Player::ClientHandler # :nodoc: when "fallback_track" rv = set_bool(io, kv, v) { |b| @rg.fallback_track = b } rv == true or return rv - when %r{(?:gain_threshold|norm_threshold| - preamp|norm_level|fallback_gain|volume)[+-]?\z}x + when %r{(?:preamp|norm_level|fallback_gain|volume)[+-]?\z}x rv = adjust_numeric(io, @rg, k, v) rv == true or return rv end diff --git a/lib/dtas/rg_state.rb b/lib/dtas/rg_state.rb index 1452158..7af67e1 100644 --- a/lib/dtas/rg_state.rb +++ b/lib/dtas/rg_state.rb @@ -22,8 +22,6 @@ class DTAS::RGState # :nodoc: RG_DEFAULT = { "volume" => 1.0, # skip the effect if the adjustment is too small to be noticeable - "gain_threshold" => 0.00000001, # in dB - "norm_threshold" => 0.00000001, "preamp" => 0, # no extra adjustment # "mode" => "album_gain", # nil: off @@ -73,23 +71,21 @@ class DTAS::RGState # :nodoc: when -1 then return 'gain -192' when 1 then return 'gain 192' else - sprintf('gain %0.8g', val).freeze + val.abs <= 0.00000001 and return + sprintf('gain %0.8f', val).freeze end end # returns a dB argument to the "gain" effect, nil if nothing found def rg_vol_gain(val) val = val.to_f + @preamp + vol_db - return if val.abs < @gain_threshold to_sox_gain(val) end # returns a DB argument to the "gain" effect def rg_vol_norm(val) n = @norm_level == 1.0 ? @volume : @norm_level - diff = n - val.to_f - return if (n - diff).abs < @norm_threshold - diff += n + diff = n * 2 - val.to_f to_sox_gain(linear_to_db(diff)) end @@ -99,7 +95,6 @@ class DTAS::RGState # :nodoc: # tag slips into the queue def rg_fallback_effect(reason) val = (@fallback_gain || 0) + @preamp + vol_db - return if val.abs < @gain_threshold warn(reason) if $DEBUG to_sox_gain(val) end diff --git a/test/test_rg_integration.rb b/test/test_rg_integration.rb index a932720..29dd29b 100644 --- a/test/test_rg_integration.rb +++ b/test/test_rg_integration.rb @@ -63,7 +63,7 @@ class TestRgIntegration < Testcase check_gain.call(%r{gain -3}, "album_gain") check_gain.call(%r{gain -2}, "track_gain") - check_gain.call(%r{gain 0\.0}, "album_peak") + check_gain.call(%r{gain 0\.}, "album_peak") check_gain.call(%r{gain 2\.5}, "track_peak") s.req_ok("rg preamp+=1") diff --git a/test/test_rg_state.rb b/test/test_rg_state.rb index 3a84216..59061a2 100644 --- a/test/test_rg_state.rb +++ b/test/test_rg_state.rb @@ -20,6 +20,12 @@ class TestRGState < Testcase assert_equal({"preamp" => 0.666}, rg.to_hsh) end + def test_rg_vol_norm + rg = DTAS::RGState.new + assert_nil rg.rg_vol_norm(0.999999999) + assert_match(%r{\Again 0.827}, rg.rg_vol_norm(0.9)) + end + def test_mode_set rg = DTAS::RGState.new orig = rg.mode |