56 if (multiplier == 0.f)
return DB_FLOOR;
58 float dB = 10 * log10f(multiplier);
66 float m = powf(10.f, dB / 10.f);
78 }
else if (db < -60.0f) {
79 def = (db + 70.0f) * 0.25f;
80 }
else if (db < -50.0f) {
81 def = (db + 60.0f) * 0.5f + 2.5f;
82 }
else if (db < -40.0f) {
83 def = (db + 50.0f) * 0.75f + 7.5f;
84 }
else if (db < -30.0f) {
85 def = (db + 40.0f) * 1.5f + 15.0f;
86 }
else if (db < -20.0f) {
87 def = (db + 30.0f) * 2.0f + 30.0f;
89 def = (db + 20.0f) * 2.5f + 50.0f;
100 db = (def - 50.0f) / 2.5f - 20.0f;
101 }
else if (def >= 30.0f) {
102 db = (def - 30.0f) / 2.0f - 30.0f;
103 }
else if (def >= 15.0f) {
104 db = (def - 15.0f) / 1.5f - 40.0f;
105 }
else if (def >= 7.5f) {
106 db = (def - 7.5f) / 0.75f - 50.0f;
107 }
else if (def >= 2.5f) {
108 db = (def - 2.5f) / 0.5f - 60.0f;
110 db = (def / 0.25f) - 70.0f;
124 float percent = float(level) * maxPercent / float(maxLevel);
130 int zeroLevel = int(maxLevel *
faderTypes[type].zeroPoint);
132 if (level >= zeroLevel) {
134 float value = level - zeroLevel;
135 float scale = float(maxLevel - zeroLevel) /
138 float dB = powf(value, 2.f);
143 float value = zeroLevel - level;
144 float scale = zeroLevel / sqrtf(0.f -
faderTypes[type].minDb);
146 float dB = powf(value, 2.f);
167 int faderLevel = int((maxLevel * percent) / maxPercent + 0.01f);
169 if (faderLevel < 0) faderLevel = 0;
170 if (faderLevel > maxLevel) faderLevel = maxLevel;
175 int zeroLevel = int(maxLevel *
faderTypes[type].zeroPoint);
185 float value = sqrtf(dB);
186 float scale = (maxLevel - zeroLevel) / sqrtf(
faderTypes[type].maxDb);
188 int level = int(value + 0.01f) + zeroLevel;
189 if (level > maxLevel) level = maxLevel;
196 float value = sqrtf(dB);
197 float scale = zeroLevel / sqrtf(0.f -
faderTypes[type].minDb);
199 int level = zeroLevel - int(value + 0.01f);
200 if (level < 0) level = 0;
210 if (level == 0)
return 0.f;
217 if (multiplier == 0.f)
return 0;
static float multiplier_to_dB(float multiplier)
static const float DB_FLOOR
static float fader_to_multiplier(int level, int maxLevel, FaderType type)
static float dB_to_multiplier(float dB)
static const FaderDescription faderTypes[]
static float preview_to_multiplier(int level, int levels)
FaderDescription(float _minDb, float _maxDb, float _zeroPoint)
static float fader_to_dB(int level, int maxLevel, FaderType type)
static float iec_fader_to_dB(float def)
static float iec_dB_to_fader(float db)
static int multiplier_to_preview(float multiplier, int levels)
static int dB_to_fader(float dB, int maxFaderLevel, FaderType type)
static int multiplier_to_fader(float multiplier, int maxFaderLevel, FaderType type)