Звуковая студия в PC


Виртуальные wt-синтезаторы - часть 4


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

Величина задержки может изменяться для разных процессоров и разных настроек виртуальных синтезаторов. Но, как правило, эта задержка не менее 0,5 с. Это небольшое на первый взгляд неудобство на практике приводит к невозможности игры на MIDI-клавиатуре в реальном времени. Неужели программистам трудно переделать виртуальный синтезатор так, чтобы не было этой задержки? Да, действительно трудно, хотя бы по той причине, что архитектура PC не рассчитана на синтез звука с помощью центрального процессора.

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

Как известно, звуковая карта для формирования звука с помощью ЦАП использует DMA (канал прямого доступа к памяти). Вывод звука осуществляется по следующей схеме. Процессор копирует блок звуковых данных (отсчетов) в определенное пространство памяти и сообщает контроллеру DMA и звуковой карте о том, что блок данных хранится по такому-то адресу и его нужно вывести через ЦАП с такой-то скоростью. После этого звуковая карта некоторое время (долю секунды) воспроизводит звук без участия процессора. В это время она напоминает магнитофон, в который вставили кассету и нажали кнопку Play. Когда “лента заканчивается”, звуковая карта сообщает процессору о том, что пора вставлять новую. За то время, которое процессор был свободен выполнения операций, связаных со звуком, он успевает выполнить массу других операций. А заполнить буфер памяти звуковыми данными и включить звуковую карту в режим воспроизведения — это для него сущий пустяк. Таким способом экономится 99 % процессорного времени (а значит и производительности компьютера). Но просто воспроизводить WAVE-файл посредством DMA — это одно, а еще и генерировать при этом звуковые отсчеты — это совсем другое.




Начало  Назад  Вперед