Какими способами можно получить звук на IBM PC?
1. Через встроенный громкоговоритель (PC Speaker):
используя в стандартном режиме подключенный к нему канал 2 системного таймера, который может генерировать прямоугольные колебания различной частоты. Таким образом можно получать простые тональные звуки заданной частоты и длительности, однако управление громкостью и тембром звука в этом способе невозможно.
используя прямое управление громкоговорителем через системный порт 61, подавая на него серию импульсов меняющейся частоты и скважности (соотношения длительности 1/0), Так можно получать различные звуковые эффекты: шум, модуляцию, изменение окраски тона. Далее, можно принять во внимание, что диффузор громкоговорителя обладает инерцией (способностью к интегрированию прямоугольного сигнала): например, при подаче уровня 1 диффузор начинает движение, при подаче уровня 0 - тормозится и через какое-то время начинает движение в обратную сторону; своевременно меняя уровни 0/1, можно заставить диффузор двигаться по любой траектории, иначе говоря - излучать звук любой частоты и окраски. Интегрирующим свойством обладает и схема усилителя громкоговорителя, которая обычно содержит фильтрующий конденсатор. Метод такого управления громкоговорителем называется широтноимпульсной модуляцией (ШИМ): частота колебаний диффузора определяется частотой следования импульсов, а амплитуда - их скважностью (шириной положительной части импульса).
Недостаток этого способа - существенное различие массы и упругости у диффузоров разных громкоговорителей - звук, довольно чистый на одном, может превратиться в подобие шума на другом; кроме этого, за счет более тонкого управления требуется гораздо большая скорость процессора, а звук получается намного тише, чем при использовании таймера.
используя нестандарные методы программирования канала 2 таймера: на генерацию импульсов различной длительности и скважности или серий импульсов сверхзвуковой частоты (метод частотной модуляции - ЧМ). В первом случае снова получается метод ШИМ, но со значительно сниженными затратами на переключение уровней и отслеживание времени, которые теперь возлагаются на сам таймер. Во втором случае звуковой сигнал получается путем усреднения высокочастотных колебаний в интегрирующей схеме громкоговорителя.
2. Через простой ЦАП:
подключаемый к параллельному (LPT) порту (Covox). На восьми выходных линиях данных (D0..D7) параллельного порта собирается взвешивающий сумматор - схема, суммирующая логические уровни 0/1 с весами 1, 2, 4, ..., 128, что дает для каждой из комбинаций восьми цифровых сигналов 0..255 линейно изменяющийся аналоговый сигнал с уровнем 0..X (максимальный уровень X зависит от параметров сумматора). Простейший сумматор делается на резисторах, более сложный - на микросхемах ЦАП (например 572ПА). При записи в регистр данных параллельного порта на выходе ЦАП устанавливается уровень, пропорциональный записанному значению, и сохраняется до записи следующего значения. Таким образом получается 8-разрядный преобразователь с частотой дискретизации до нескольких десятков килогерц. Добавив два регистра хранения и логику выбора, можно сделать стереоЦАП, коммутируя каналы с помощью служебных сигналов порта.
собираемый на вставляемой в разъем расширения плате. В этом случае достаточно просто получается 12и 16-разрядный ЦАП (моно или стерео). Попутно он может содержать таймер, генерирующий запросы прерывания, и/или логику поддержки прямого доступа к памяти (DMA), которая позволяет равномерно и без участия процессора передавать данные из памяти на преобразователь.
3. Через специальную звуковую карту:
используя ЦАП, который есть почти на всех картах. В этом случае карта программируется на вывод оцифрованного звука напрямую или через DMA, а подготовка оцифровки в памяти делается так же, как и при выводе на простой ЦАП.
используя синтезатор, который тоже есть почти на всех картах. Большинство карт оснащено простейшими 2или 4-операторными FM-синтезаторами; почти на всех современных картах установлены также WT-синтезаторы. При наличии обоих синтезаторов ими можно управлять одновременно, увеличивая набор тембров и число голосов; параллельно можно задействовать и ЦАП карты, через который удобно выводить различные звуковые эффекты.
4. При помощи внешнего синтезатора, управляемого от компьютера:
используя MIDI-порт, который имеется практически на всех звуковых картах. Выход MIDI Out (обычно при помощи MIDI-адаптера) соединяется со входом MIDI In синтезатора, и через порт подаются MIDI-команды синтезатору. Одновременно можно принимать MIDI-сообщения от синтезатора, подключив его MIDI Out к MIDI In звуковой карты.
используя стандартный последовательный порт, если в BIOS Setup есть возможность переключить его в режим MIDI-совместимости (тактовая частота, при которой возможно получение скорости 31.25 кбит/с). В этом случае понадобится самодельный адаптер для токовой петли.
используя специальные карты-адаптеры - например, Roland MPU-401.