LINUX.ORG.RU

Логарифмическая шкала громкости

 


1

2

Добрый день. Подскажите, в QMediaPlayer (старые версии) используется уровень звука от 1 до 100. Как бы мне осуществить перевод этой шкалы в более привычный формат когда громкость в 100% осуществляется в два раза больше чем в 50%.

загляните в исходники alsa и amixer там есть код как они пересчитывают, файл называется volume_mapping, выглядит примерно вот так

ceil((vol*10000)/INT_MAX32)

Silerus ★★★★
()
Последнее исправление: Silerus (всего исправлений: 1)

Что такое громкость? Амплитуда 1 вольт в 2 раза больше чем 500 мВ. Я намекаю, что забота о восприятии слухом должна стоять за звуковым чипом, а никак не софтом и прочим.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

на самом деле все не так просто (я потому в исходники и отправил), vol хоть и громкость в децебелах, но она нормированная, за это в библиотеке алса отвечает отдельная функция, в каком виде выдает QMediaPlayer я знаю, возможно QMediaPlayer лезет в phonom, а тот дергает пульсу, а та альсу, потому как алса может выдавать и в ненормированном виде

Silerus ★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Громкость в человеческом понимании, я немного поизучал вопрос и выяснил, что для того что бы человек «ощущал» линейное изменение силы звука необходимо шкалу изменять не по линейному закону. А как-то хитро надо в другую шкалу переводить.

patriarh_kuril
() автор топика
Ответ на: комментарий от patriarh_kuril

Это ведь учтено где-то? Пусть не в железе, но хоть в софте? А ты хочешь исправить то, что может быть уже исправлено

Или у тебя есть результаты замеров твоего железа и софта, и там видно что необходимый нелинейный закон не достигается?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Вообще в новых версия QMediaPlayer сделали новую шкалу, а в старых необходимо переводить по некоторому закону.

patriarh_kuril
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.