На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Уровень оцифрованного звука
    Имеется
    1. комп - Intel®_Core™_i7-6700_CPU_@_3.40GHz
    2. встроенный звук - RealTek High Definition Audio
    3. микрофон - logitech usb headset h340


    Столкнулся с такой проблемой

    Прикреплённый файлПрикреплённый файл_____________________________________________________________________________________.png (6,84 Кбайт, скачиваний: 667)

    На картинке видно (зелёная стрелка) что уровень шума самого микрофона и блока обработки без какого либо сигнала не превышает 1 единицы
    Этот же уровень в 1 единицу виден и на второй картинке (небольшая тёмная полоска в начале серой шкалы в системных настройках звука (чёрная стрелка))

    Прикреплённый файлПрикреплённый файл________________________________________________.png (20,17 Кбайт, скачиваний: 646)

    Программа настроена так что не реагирует на сигнал менее 2 единиц и происходит останов когда уровень начинает превышать 1 единицу значения
    … так вот срабатывание это происходит когда уровень начинает выходить за красную черту (рис 2 красная стрелка)
    явно видно что это превышение по уровню не в 2 раза а в 5-6 раз а иногда и того больше.
    где тут собака зарыта - слишком не линейная шкала ацп встроенного звука? не на все сигналы срабатывает ацп? может кто нибудь что посоветует?
    Сообщение отредактировано: Ivan123 -
      Ivan123, я думаю, что тут такая история.

      16-битный звук имеет диапазон ≈ 96 дБ, 8-битный ≈ 48 дБ (условно, смотря что считать на нижнее значение).
      Т.е. 1 в 8-битном представлении – это 256 в 16-битном (ну или 128, смотря как округлять).
      Значение семпла = 1 в 8 битах – это -42.1 дБ, в 16 битах: -90.3 дБ.
      Значение семпла = 2 в 8 битах – это -36.1 дБ, в 16 битах: -84.3 дБ.
      Значение семпла = 3 в 8 битах – это -32.6 дБ, в 16 битах: -80.8 дБ.
      Значение семпла = 4 в 8 битах – это -30.1 дБ, в 16 битах: -78.3 дБ.

      Значение семпла = 126 в 8 битах – это -0.137 дБ, 32766 в 16 битах: -0.00053 дБ.
      Значение семпла = 127 в 8 битах – это -0.0676 дБ, 32767 в 16 битах: -0.000265 дБ.
      Значение семпла = 128 в 8 битах – это 0 дБ, 32768 в 16 битах тоже 0 дБ.

      Т.е. на малых значениях малое приращение даёт гораздо большее изменение уровня (6, 4, 2) в дБ, чем на больших (сотые, тысячные, 10-тыс. доли).
      Собственно, этим и объясняется популярность 32-битных IEEE-форматов (с плавающей запятой).

      Прикол в том, что значение 0 (ноль) – это минус бесконечность, поэтому за его принимают какое-то фиксированное значение.
      Что принято за ноль в измерительной шкале винды – х/з. Если, к примеру, 0 = -43 дБ, тогда 1 = -42, 2 = -36.

      В семплах мы получаем (снимаем с микрофона) уровень напряжения (переведённое в нужный диапазон - байт, слово, 24 бита и пр), а на шкале видим громкость (уровень звукового давления) в дБ.

      Добавлено
      Кроме того, я, конечно, не спец в том, как работают АЦП, но теоретически, если взять исходный аналоговый звук как вещественное значение (пусть тоже в диапазоне от 0 до 128 по модулю, а не от 0 до 1, для простоты), то значение 0.5 АПЦ может преобразовать как в 0, так и в 1. Другой АПЦ может преобразовать в 0, а в 1 только значения 1.0+, либо 0.8+. Т.е. то, что прога показывает 1 может быть на самом деле 0.5, тогда это -48 дБ (а не -42), а 2 может быть 1.5 или 2.499 (-38 .. -34 дБ). И если шкала в винде от -50 дБ, тогда мы видим:
      • 0 = -50 дБ
      • 1 = -48 дБ (+2)
      • 2 = -36 дБ (+12)

      Но скорее всего (что-то мне подсказывает), за ноль там принято -48 дБ.
      Шум микрофона ≈ -47..-45 дБ
      А 2 - это ≈ от -38 дБ.
      Справа – 0 дБ.
      Т.е. от -48 до -47 серая полоска – это ≈ 1/48 часть отрезка. А от -48 до -38 – это примерно 1/5 часть отрезка. Плюс-минус, конечно, мы же не знаем точно, что ноль – это -48, может, там -46 или -45. Да и красная полоска нарисована на глаз же.
      Как раз соответствует картинке примерно.

      Короче, лучше потестить не на 8 битах, а на 16 битах.
      Там и шум будет виден точнее. И порог срабатывания можно настроить точнее (и поиграть с ним).
        Вот я делал как-то консольную прогу (для себя) для перевода дробей в децибелы и наоборот. Для звука.
        Чтобы определить уровень для значения 1 в 8 битах, нужно ввести 1/128 (ибо диапазон -128..127), уровень 256 в 16 битах – 256/32768 (для данного примера результат будет тот же).
        Наоборот – ввести 48 или -48, получишь дробь.
        Может, пригодится кому :)

        Прикреплённый файлПрикреплённый файлdB.zip (28,56 Кбайт, скачиваний: 518)
          Можно посмотреть ещё в каком-нибудь редакторе уровень. Ну или вот я делал для тестов каких-то. Тут можно посмотреть уровень в дБ.
          Тут 16 бит используется.
          Прикреплённый файлПрикреплённый файлWaveMeter.zip (222,49 Кбайт, скачиваний: 483)
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0241 ]   [ 21 queries used ]   [ Generated: 28.03.24, 19:45 GMT ]