Шкала громкости в DirectShow
Модераторы: Duncon, Hawk, Romeo, Eugie
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Мне надо сделать регулятор громкости от 0% до 100%.
Однако DirectShow как-то странно ее считает:
"Full volume is 0, and –10,000 is silence; the scale is logarithmic. Multiply the desired decibel level by 100 (for example –10,000 = –100 dB). "
Если кто-то разбирается в теории звука, напишите мне формулу, в которую можно подставлять значение от 0 до 100, а на выходе иметь значение для DirectShow.
Однако DirectShow как-то странно ее считает:
"Full volume is 0, and –10,000 is silence; the scale is logarithmic. Multiply the desired decibel level by 100 (for example –10,000 = –100 dB). "
Если кто-то разбирается в теории звука, напишите мне формулу, в которую можно подставлять значение от 0 до 100, а на выходе иметь значение для DirectShow.
2B OR NOT(2B) = FF
Absurd, это математика, а не теория звука
Ну и английский. Формула простая: хочешь на выходе звук в 10Дб вводи 100*10 =1000. Хочешь 50Дб - вводи 5000. А из теории звука появилась фраза про логарифмическую шкалу. Обычная формула
А = k*Log(B). B - исходная единица измерения, А - конечная. В нашем случае А - децибелы. Яркость звёзд по аналогичной формуле считается.

А = k*Log(B). B - исходная единица измерения, А - конечная. В нашем случае А - децибелы. Яркость звёзд по аналогичной формуле считается.
Даже самый дурацкий замысел можно воплотить мастерски
Absurd, линейность или нелинейность децибел к твоему вопросу не относится
Тебе Directshow предоставляет возможность менять громкость звука от 0 до 100Дб с шагом 0.01. По какой-то причине это происходит в целых числах. Таким образом, если ты передашь функции 1, то звук будет иметь громкость 0.01Дб. Если передать 100, то выходная громкость будет 1Дб и если передать 100*100, то громкость будет 100Дб. С точностью до знака.
.

Спорный вопрос. Если я правильно понимаю, то логарифмы для того и применяли, чтобы оценивать разницу "на", а не разницу "в". Т.е. если на фоне комнаты в 30Дб ты не услышишь ни 5Дб ни 10Дб то вряд ли ты скажешь, что одно громче другого в 2 разаТо есть 5Дб на слух в два раза тише, чем 10Дб ?

Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Хуже. Он предоставляет возможность прибавлять к звуку от -100.0 Дб до -0.0 Дб.Тебе Directshow предоставляет возможность менять громкость звука от 0 до 100Дб с шагом 0.01
Если я передам -1, то звук станет тише на 0.01Дб
Из свойств логарифмов имеем, что логарифм произведения равен сумме логарифмов множителей.
Допустим мне надо уменьшить амплитуду в 100 раз:
log10(0.01 * Ampl) = log10(0.01) + log10(Ampl) = log10(Ampl) - 2.0
Итого надо вычесть два децибелла. Чего - то маловато.
2B OR NOT(2B) = FF
Absurd, ты 2 Бела вычитаешь 

Даже самый дурацкий замысел можно воплотить мастерски
Absurd, в Белах - да. В децибелах коэффициент k=10.
Т.е. Бел - это изменение амплитуды в 10 раз. В 100 раз - 2Бела или 20 децибел.
Т.е. Бел - это изменение амплитуды в 10 раз. В 100 раз - 2Бела или 20 децибел.
Даже самый дурацкий замысел можно воплотить мастерски