Почему слышно «ультразвук»?

Добрый день, хабралюди. Занимаемся программированием системного таймера, а точнее программированием таймера на проигрывание мелодии. После экспериментов с управляющими словами, решили воспроизвести ультразвук. Задали соответственную частоту и в результате услышали, щелчки. Вопрос: что же это такое?

Ссылка на исходники
  • Вопрос задан
  • 7116 просмотров
Решения вопроса 1
@SHeJay Автор вопроса
Запускали в DosBox. Вопрос уже снят, сегодня преподаватель нам все объяснил. Щелчки — это неправильная настройка программы, их не должно быть при подаче ультразвука. Мы должны слышать управляющую частоту. Так как при подаче ультразвука на один канал, там получается логическая 1 и начинается воспроизведение. Как-то так.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Stdit
@Stdit
Системный динамик не способен генерировать правильный синусоидальный сигнал, а прямоугольный ультразвуковой сигнал скорее всего сливается в один большой прямоугольный импульс, начало и конец которого слышит ухо.
Ответ написан
@JDima
Откуда уверенность, что задействованные ЦАП и динамик способны воспроизвести ультразвуковые частоты?
Ответ написан
Комментировать
KEKSOV
@KEKSOV
Возможно, Вы просто молоды и не страдаете ухудшением слуха Presbycusis, так что у вас просто широкий слуховой диапазон.

На этой страничке можно «провериться»…
Ответ написан
@SHeJay Автор вопроса
Системный динамик не способен генерировать правильный синусоидальный сигнал, а прямоугольный ультразвуковой сигнал скорее всего сливается в один большой прямоугольный импульс, начало и конец которого слышит ухо.

Почему системный таймер не может генерировать правильный синусоидальный сигнал?
Ответ написан
@elgordo
Для начала, вы под какой ОС всё это дело запускаете? Если это не голый DOS, а хотя бы уже Windows 95, то нормально это работать не будет, т.к. приложения DOS запускаются под виртуальной машиной быстродействие которой в разы ниже обычного компа.

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

Вообще, сколько я в молодости писал под DOS, очень трудно что либо получить нормальное в плане звука из системного динамика, не запрещая прерывания. Возможно, у вас банально не хватает быстродействия. Попробуйте запустить программу на другом компьютере?

А щелчки ещё могут означать, что у вас какой-то таймер переполняется и его значение становится 0, что для двухбайтового счётчика эквивалентно 65536 и он один раз работает с низкой частотой, что и даёт щелчок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы