Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Программирование звука > Утилита для преобразования величин отношения громкости звука


Автор: Jin X 07.06.20, 13:39
Написал на Delphi консольную прогу для конвертации различных величин отношения громкости звука. Первая версия была создана ещё 3 года назад, и сейчас она дополнена множеством возможностей.

Какие величины она поддерживает?
  1. Децибелы (дБ).
  2. Соотношения амплитуд (по умолчанию) и мощностей (при использовании опции -P).
  3. Соотношения громкостей звука в субъективном восприятии (назовём это "соотношением ГСВ" для краткости; основано на том, что громкость субъективно удваивается каждые 10 дБ, но этот параметр можно изменять).

При запуске без параметров ввод осуществляется в режиме диалога (выбор режима: типа величины исходного значения и/или самого значения). Здесь можно ввести тип перевода "D", "R" или "L" для перевода соответственно из дБ, соотношения амплитуд или соотношения ГСВ, а затем исходное значение. Либо сразу исходное значение исходя из следующих правил:
  • Если введено просто число (целое или вещественное, например, "-6" или "10.5"), преобразование производится из дБ.
  • Если введена дробь X/Y (например, "1/2", "10/3", "4/1" и т.п.), преобразование производится из соотношения амплитуд.
  • Если после числа или дроби указан символ 'x' или '%' (например, "25%" или "1/3x"), преобразование производится из соотношения ГСВ (1x = 100%).

Результатом будет вывод заданной величины, а также эквивалентных значений в двух других единицах измерения.

При использовании командной строки можно задать опции -D, -R или -L для аналогичных режимов и/или задать значение в том же формате:
  • SVRC 10 или SVRC -D 10 - преобразование из дБ.
  • SVRC 1/2 или SVRC -R 1/2 или SVRC -R 0.5 - преобразование из соотношения амплитуд.
  • SVRC 25% или SVRC -L 25% или SVRC -L 0.25 или SVRC -L 1/4 - преобразование из соотношения ГСВ.

Результаты преобразования величин при запуске вышеуказанных команд (переведённые на русский язык):
  • 10 дБ = соотношению амплитуд 3.16227766016838/1 (1/0.316227766016838) = громкости 2x (200%) в субъективном восприятии.
  • соотношение амплитуд 1/2 (0.5) = -6.02059991327962 дБ = громкости 0.658812580012656x (65.8812580012656%) в субъективном восприятии.
  • 25% (0.25x) громкости в субъективном восприятии = -20 дБ = соотношению амплитуд 0.1 (1/10).

Перевожу на русский (соответственно для каждого из приведённых примеров):
  • При увеличении уровня громкости на 10 дБ амплитуда (значения отсчётов, семплов) увеличивается в ≈ 3.16 раза, что субъективно воспринимается как увеличение громкости в 2 раза.
  • При уменьшении амплитуды в 2 раза, уровень громкости уменьшается на 6 дБ, что по ощущениям соответствует ≈ 66% от исходной громкости.
  • Чтобы уменьшить громкость в 4 раза, необходимо уменьшить уровень громкости на 20 дБ, т.е. уменьшить амплитуду в 10 раз.

Если вы хотите использовать соотношения не амплитуд (напряжений, расстояний – силовых величин), а мощностей (энергетических величин), можно задать опцию -P.

Если вы хотите изменить соответствие удвоения ГСВ и децибелов с 10 дБ на другое значение, можете использовать опцию -XDn, где n – величина в дБ (например, -XD20). Также можно задать эту величину в виде степени используемой формулы: -X3 (см. помощь).

Для вывода помощи по возможным опциям (на английском языке), а также для просмотра формул(!) используйте опцию -? (или -P -? для вывода формул для мощностей, а не амплитуд).

Кроме перечисленного выше можно указывать точность вывода значений (-F с субопциями), задавать тихий режим (-Q с субопциями), отключать лого (-NL), включить режим паузы после вывода результатов (-W).

Любая из опций может начинаться со слеша (/) вместо дефиса (-).

Надеюсь, это программа будет вам полезна ;)

svrc_1.36.zip (, : 427)

Автор: Jin X 08.06.20, 21:04
Очень хорошо, что предыдущую версию скачали всего пару раз, потому что я сделал новую, v1.35 (прикреплена в первом сообщении) :)

Изменения следующие:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    [-] Пофиксен баг, связанный с неправильным переводом дБ ↔ отношение громкости по восприятию при задании параметра -X.
    [*] Функции перевода вынесены (с изменениями имён и содержания) в отдельный модуль SoundVolumeConverter.pas.
    [*] Изменено дурацкое название "sound volume ratio in subjective perception [SVSP ratio]" на более приличное "loudness ratio (in subjective perception)".

Автор: Jin X 09.06.20, 22:25
И снова апдейт! v1.36 :whistle:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    [*] Опция -S переименована в -L (т.к. скачиваний мало, я решил забить на обратную совместимость).
    [+] Добавлена опция -NL (не выводить логотип и копирайт).
    [*] Немного изменена работа опции -Q (теперь можно указывать любое сочетание субопций), некоторые из её субопций переименованы (V → S, S → L, вторая R → I), добавлена субопция U (не показывать единицы измерения).
    [*] Немного изменён модуль SoundVolumeConverter.pas (перегруженные функции переименованы в *_Exp и *_DLdB для более чёткого понимания единиц измерения доп. параметров, значение по умолчанию многих параметров PowerRatio отключено, больше функций помечены как inline). Про обратную совместимость см. выше :)

p.s. Первое сообщение обновлено, архивы старых версий удалены.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)