All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.malliina.audio.GainHack.scala Maven / Gradle / Ivy

The newest version!
package com.malliina.audio

import javax.sound.sampled.FloatControl

trait GainHack extends RichPlayer {
  def gainControl: FloatControl

  private lazy val maxDbGain = gainControl.getMaximum
  private lazy val minDbGain = gainControl.getMinimum
  private lazy val zeroGain = 0.4f
  private lazy val maxGain = 1.0f
  private lazy val posDbFactor = maxDbGain / (maxGain - zeroGain)
  private lazy val negDbFactor = zeroGain / -minDbGain

  def dbValue(gainLevel: Float) = {
    if (gainLevel >= zeroGain) {
      (gainLevel - zeroGain) * posDbFactor
    } else {
      (zeroGain - gainLevel) * minDbGain / zeroGain
    }
  }

  def gainValue(dbLevel: Float) = {
      if (dbLevel >= 0f) {
        zeroGain + dbLevel / posDbFactor
      } else {
        (-minDbGain + dbLevel) * negDbFactor
      }
  }
//  abstract override def gain = gainValue(super.gain)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy