class SPCore::Gain

Provide utility functions to convert between a linear and decibel (logarithm) unit.

Constants

MAX_DB_ABS

Public Class Methods

db_to_linear(db) click to toggle source

Convert a decibel value to a linear value.

# File lib/spcore/util/gain.rb, line 9
def self.db_to_linear db
  db_abs = db.abs
  raise ArgumentError, "decibel value #{db} is more than allowed maximum #{MAX_DB_ABS}" if db_abs > MAX_DB_ABS
  raise ArgumentError, "decibel value #{db} is less than allowed minimum #{-MAX_DB_ABS}" if db_abs < -MAX_DB_ABS
  return 10.0**(db / 20.0)
end
linear_to_db(linear) click to toggle source

Convert a linear value to a decibel value.

# File lib/spcore/util/gain.rb, line 17
def self.linear_to_db linear
  raise ArgumentError, "linear value #{linear} is less than 0.0" if linear < 0.0
  if linear == 0.0
    return -MAX_DB_ABS
  else
    return 20.0 * Math::log10(linear)
  end
end