AIMP Forum

AIMP for PC => Вопросы / Questions => Topic started by: Jin X on June 07, 2020, 17:37:39

Title: Формула громкости
Post by: Jin X on June 07, 2020, 17:37:39
Здравствуйте.
У меня чисто технический вопрос к разработчику :)

Какую формулу вы используете для преобразования уровня громкости (%) в коэффициент изменения (уменьшения) амплитуды?
Для логарифмического и обычного режима.

Если в логарифмическом используется регулировка по децибелам (условно: 100% = 0 дБ, 90% = -5 дБ, 80% = -10 дБ и т.д.), то какой уровень используется внизу (при почти 0%)?

Если в обычном (нелогарифмическом) используется нелинейная регулировка, то какая? Квадратичная, Степень log2(10)/2 или ещё какая-то?
Title: Re: Формула громкости
Post by: Artem on June 08, 2020, 00:00:23
Если в логарифмическом используется регулировка по децибелам (условно: 100% = 0 дБ, 90% = -5 дБ, 80% = -10 дБ и т.д.), то какой уровень используется внизу (при почти 0%)?

Нет, привязку к дБ я не использую - для преобразования множителя в dB используется 10-чный логарифм, а для логарифмической шкалы я использую натуральный.

Если в обычном (нелогарифмическом) используется нелинейная регулировка, то какая? Квадратичная, Степень log2(10)/2 или ещё какая-то?

Да все просто:
0%   - множитель = 0
100% - множитель = 1

если переводить в дБ, то получится
-∞ и 0

Title: Re: Формула громкости
Post by: Jin X on June 08, 2020, 08:17:52
для логарифмической шкалы я использую натуральный.
Понял. А какое значение принимаете за ноль? Ведь и в ln тоже от -∞ до 0 получается же.
Вы эту идею взяли откуда-то или сами придумали?

Как вам мысль добавить ещё квадратичную функцию? :)
Степень log2(10)/2 (это в районе 1,66) ближе всего к уху получается (двойное увеличение громкости при изменении на 10 дБ). Т.е. 50% – это половина от 100% по восприятию.
См: https://ru.wikipedia.org/wiki/Сон_(единица_громкости)
Title: Re: Формула громкости
Post by: Artem on June 08, 2020, 08:27:26
Понял. А какое значение принимаете за ноль? Ведь и в ln тоже от -∞ до 0 получается же.

Повторюсь, я не работаю с dB, я считаю множитель, для нуля он равен нулю

Вы эту идею взяли откуда-то или сами придумали?

Тут и придумывать особо нечего.
Title: Re: Формула громкости
Post by: Jin X on June 08, 2020, 08:36:30
Повторюсь, я не работаю с dB, я считаю множитель, для нуля он равен нулю
А, ну то есть для 0% берёте ln(1), получается?
А для 100%? ln(e)?

Тут и придумывать особо нечего.
Я имею в виду, основана ли эта методика на каких-то законах звука?
Title: Re: Формула громкости
Post by: Artem on June 08, 2020, 15:58:32
А, ну то есть для 0% берёте ln(1), получается?
А для 100%? ln(e)?

для 0% берем 0. для 100% берем 1. Скейлим сигнал на этот коэффициент.

Я имею в виду, основана ли эта методика на каких-то законах звука?

Законах? Вы хотели сказать, исследованиях? Линейный регулятор сделан так же, как он сделан "везде". Логарифмический - использует формулу, которую принято использовать в графиках для логарифмических шкал. Тонкомпенсация основана на http://www.vegalab.ru/content/view/67/54/
Title: Re: Формула громкости
Post by: Jin X on June 09, 2020, 15:50:27
Тонкомпенсация основана на http://www.vegalab.ru/content/view/67/54/
Спасибо, это интересно.

Но с логарифмом я всё же немного попристаю, т.к. мне хочется разобраться в этом вопросе.
для 0% берем 0. для 100% берем 1. Скейлим сигнал на этот коэффициент.
Логарифмический - использует формулу, которую принято использовать в графиках для логарифмических шкал.
Как логарифмическая шкала может начинаться с нуля? Её можно начать со значения 1, 10 или 0.00001, при этом она будет существенно отличаться во всех трёх случаях (если наверху будет одно и то же число).
Там же длина отрезка пропорциональна логарифму отношения величин на концах: ln(max/min), а тут min = 0.
Этим она, по сути от шкалы децибелов не сильно отличается (разве что основанием e вместо 10).
Т.е. за 0% никак 0 не возьмёшь же.
Title: Re: Формула громкости
Post by: Artem on June 09, 2020, 16:03:25
этом она будет существенно отличаться во всех трёх случаях (если наверху будет одно и то же число).
Там же длина отрезка пропорциональна логарифму отношения величин на концах: ln(max/min), а тут min = 0.
Этим она, по сути от шкалы децибелов не сильно отличается (разве что основанием e вместо 10).
Т.е. за 0% никак 0 не возьмёшь же.

Никто не мешает сдвинуть график логарифма на 1 вбок, чтобы 0 транслировался в 0.
Title: Re: Формула громкости
Post by: Black_AVP_Bim on June 09, 2020, 16:28:35
Не суть важно по какому закону регулируется громкость: натуральный логарифм или десятичный, громкость мы устанавливаем на слух, а не по шкале вокруг ручки. Важно, чтоб она плавно (более медленно) нарастала на начальном участке в сравнении с серединой шкалы и выше.
В реальной аппаратуре никто над этими законами не задумывается, а просто применяют потенциометры группы "В".
Title: Re: Формула громкости
Post by: Jin X on June 10, 2020, 19:40:51
Никто не мешает сдвинуть график логарифма на 1 вбок, чтобы 0 транслировался в 0.
Ну то есть, по сути регулятор такой же, как по децибелам.
Ведь неважно какое там основание, график ln(x) можно немного сжать по горизонтали, и он превратится в lg(x): x дБ = 10^(x/20) = e^(x/20*ln(10)) = коэффициент сжатия амплитуды.
https://www.desmos.com/calculator/qdazsbntqd

Важно, чтоб она плавно (более медленно) нарастала на начальном участке в сравнении с серединой шкалы и выше.
Более медленно на слух?

По идее, логарифмическая шкала должна быть более удобной в плане регулировки громкости, чем квадратичная (которая по восприятию должна звучать почти как линейное изменение громкости). На такой (лог) шкале, когда хочется сделать потише, этот уровень тишины легче подстроить под желаемый уровень. Т.е. разница громкости между 10 и 30% будет во столько же раз, во сколько раз разница между 80 и 100%.
Title: Re: Формула громкости
Post by: Black_AVP_Bim on June 10, 2020, 20:41:27
Более медленно на слух?
От угла поворота или положения движка, ну и, как следствие, на слух.
(https://forum.datagor.ru/uploads/monthly_07_2011/post-7055-1312055244.jpg)

Немного теории можно здесь (https://datagor.ru/nachinajushhim/1810-harakteristika-rezistora-dlya-passivnogo-regulyatora-gromkosti.html) посмотреть, про сами резисторы можно не читать. На практике никакая точность в этой кривой не нужна, слушателю всё равно на какой отметке шкалы установится для него комфортная громкость, логарифмический регулятор в этом плане, ес-но, предпочтительней (на приведённой картинке красная кривая).
У меня, к примеру, усилитель вообще под столом стоит (для экономии места) и громкость регулирую на ощупь.
Title: Re: Формула громкости
Post by: VivianCels on December 10, 2024, 17:06:58
При линейной регуляции 50% это половина громкости, а при логарифмической это -50дБ?
Title: Re: Формула громкости
Post by: Artem on December 10, 2024, 21:02:20
При линейной регуляции 50% это половина громкости, а при логарифмической это -50дБ?

Нет, при логарифмической 50% становится ~8%.

А в дБ это как-то так:
 1% = ~ -40дБ
10% = ~ -20дБ
50% = ~ -6дБ
100 =    0дБ
Title: Re: Формула громкости
Post by: VivianCels on March 11, 2026, 09:47:15
50% = ~ -6дБ
Это проценты линейной громкости? В линейной громкости разница 6дБ это разница громкости в два раза?
Title: Re: Формула громкости
Post by: Soolo on March 11, 2026, 09:48:53
Это проценты линейной громкости? Разница 6дБ это разница громкости в два раза?
https://www.google.com/search?q=6+дБ (https://www.google.com/search?q=6+дБ)
Title: Re: Формула громкости
Post by: VivianCels on March 11, 2026, 09:56:53
https://www.google.com/search?q=6+дБ (https://www.google.com/search?q=6+дБ)
Спасибо, про напряжение и мощность я знаю, мне даже делали таблицу с точным рассчетом: https://cloud.mail.ru/public/c7Dt/nNRNYRuYd
Недавно услышал, что в два раза это 3дБ, и это ввело в ступор, всегда думал, что 6дБ.
Получается, что в линейной громкости 50% это -6дБ (в 2 раза тише), 25% это -12дБ (в 4 раза тише), 12% это ~-18дБ (в 8 раз тише)?
Title: Re: Формула громкости
Post by: Soolo on March 11, 2026, 10:03:32
Недавно услышал, что в два раза это 3дБ
Думаю, речь шла про мощность, там -3 дБ это уменьшение мощности в ~2 раза

Получается, что в линейной громкости 50% это -6дБ (в 2 раза тише), 25% это -12дБ (в 4 раза тише), 12% это ~-18дБ (в 8 раз тише)?
да
Title: Re: Формула громкости
Post by: VivianCels on March 11, 2026, 10:22:31
Думаю, речь шла про мощность, там -3 дБ это уменьшение мощности в ~2 раза
Там был пост про шумоизоляцию и были перепутаны дБ и дБА (это, вроде бы, громксоть, которую показывает шумометр с поправкой на восприятие ухом). Хорошо бы увидеть логарифмическую шкалу громкости. UPD Вот этот график по ссылке из темы: https://datagor.ru/uploads/posts/2011-10/1319361917_krivaya-rezistorapok.gif
Title: Re: Формула громкости
Post by: Soolo on March 11, 2026, 10:39:45
Хорошо бы увидеть логарифмическую шкалу громкости
Где? В АИМПе? В теме дан ответ на данный запрос
Title: Re: Формула громкости
Post by: Black_AVP_Bim on March 11, 2026, 13:55:31
Для перевода в dB существует простая формула:
F = 20 Lg (U / Um), где
Um - максимальное значение параметра или принимаемое за 0 dB,
U - текущее значение параметра,
Lg - десятичный логарифм.
Title: Re: Формула громкости
Post by: Soolo on March 11, 2026, 15:11:45
Вот этот график по ссылке из темы: https://datagor.ru/uploads/posts/2011-10/1319361917_krivaya-rezistorapok.gif

Ответ: в АИМПе есть логарифмический регулятор, включается в настройках
50%lin=8%log - на вашем графике так же

Ответы разработчика:
Логарифмический - использует формулу, которую принято использовать в графиках для логарифмических шкал
при логарифмической 50% становится ~8%.
Title: Re: Формула громкости
Post by: VivianCels on March 11, 2026, 20:20:24
50%lin=8%log
Тут, наверное, наоборот, 50лог=8лин

F = 20 Lg (U / Um), где
Um - максимальное значение параметра или принимаемое за 0 dB,
U - текущее значение параметра,
Lg - десятичный логарифм.
Спасибо за формулу, вроде, работает. Я правильно считаю? Сначала произвожу деление в скобках, потом делаю лог полученной суммы и потом результат умножаю на 20? К примеру 12.5/100 = 0.125 -> log = -0.903x20=18дБ