Звук и музыка из компьютера Мы все уже привыкли к тому, что современный персональный компьютер может издавать весьма разнообразные звуки. Вначале они могли только гудеть и пищать на разные лады, затем появились программы, произносящие вполне отчетливые слова и играющие отдаленное подобие музыки, слушаемой через водосточную трубу; компьютерные игры довольно быстро научились даже при помощи встроенного громкоговорителя издавать что-то вроде выстрелов и взрывов. А теперь повсеместное распространение недорогих звуковых карт позволило воспроизводить с их помощью любые теоретически возможные звуки. Однако в большинстве случаев мы с вами слышим только те звуки, которые были, как говорится, заложены при разработке той или иной программы, а между тем многим хочется гораздо большего. Все это вполне возможно - при наличии требуемых аппаратных средств и/или программ, а главное - знаний о способах извлечения нужных звуков из такого вроде бы немузыкального устройства, как компьютер. Вначале - краткая история развития звуковых возможностей компьютеров. Многие из вас наверняка восприняли вынесенную в эпиграф фразу, как ироническую шутку, хотя на самом деле это - чистейшая правда. Представим себе батарейку, которая через регулятор (для удобства - прямолинейный, а не круглый) подключена к динамику акустической системы. При перемещении регулятора диффузор динамика будет аналогично перемещаться между своим нейтральным положением и точкой максимального отклонения, в точности повторяя движения ползунка и изменение электрического тока в цепи. В таком случае говорят, что имеет место аналоговая передача звука, которая используется почти во всей звуковой аппаратуре. Таким образом, перемещая ползунок с нужной скоростью, мы можем заставить динамик издать любой нужный нам звук - вся проблема только в скорости перемещения ползунка. В компьютерах, как известно, используется цифровой принцип передачи информации: электрические сигналы могут принимать только два состояния - 0 и 1, что соответствует минимальному и максимальному уровням напряжения. Графики электрических сигналов при этом даже отдаленно не напоминают, например, график изменения яркости картинки на мониторе или траекторию перемещения мыши, поскольку аналоговые сигналы закодированы в цифровых. Подключив динамик к выходу цифровой схемы, мы можем привести его диффузор только в одно из двух возможных положений; если теперь переключать цифровой сигнал со звуковой частотой - мы услышим знакомое гудение или писк разной высоты. Именно так и было реализовано управление встроенным динамиком в самых первых персональных компьютерах, таким же оно осталось и в их современных моделях - программа либо программирует генератор импульсов на их повторение с нужной частотой, либо сама переключает цифровой сигнал на динамике. Изменяя частоту следования импульсов, можно повышать или понижать тон звука, однако более приятных звуков таким способом извлечь невозможно. Такой способ управления называется частотной модуляцией (ЧМ). Однако кое-что все-таки можно сделать, вспомнив, что диффузор динамика имеет инерцию и из-за нее не может перемещаться со скоростью, сравнимой со скоростью изменения цифровых сигналов в компьютере. Если подать на него цифровой сигнал из равномерно меняющихся 0 и 1 с частотой более 20 килогерц - диффузор будет излучать неслышимый ультразвук, сила которого будет очень быстро падать с ростом частоты, и уже на нескольких десятках килогерц диффузор практически перестанет двигаться. Однако если изменение между 0 и 1 будет неравномерным , то диффузор уже не сможет оставаться на месте, однако и не будет колебаться в точном соответствии с цифровым сигналом. Можно сказать, что удержание одного из уровней на выходе схемы ускоряет движение диффузора в выбранном направлении, а смена уровня на противоположный - тормозит его, а при удержании нового уровня в течение длительного времени диффузор начнет двигаться в противоположном направлении. Этот способ управления называется широтно-импульсной модуляцией (ШИМ). Таким образом, если достаточно искусно переключать цифровые уровни на схеме управления динамиком, то в принципе из него можно получить произвольные и чистые звуки. Однако на практике это возможно лишь при условии точного знания момента инерции диффузора, параметров усилителя мощности и очень высокой (в идеале - бесконечной) точности управления сменой уровней. Поэтому описанный метод получил довольно ограниченное применение - для имитации выстрелов и взрывов в играх, простейшего синтеза речи или воспроизведения очень низкокачественной музыки. Наиболее естественным способом "подружить" цифровой компьютер с его "рваной" импульсной системой передачи информации, и непрерывный реальный мир является использование преобразователей аналоговых сигналов в цифровые и обратно, которые и называются аналогово-цифровыми и цифро-аналоговыми преобразователями - АЦП и ЦАП . Первый получает непрерывный аналоговый сигнал и постоянно выдает поток цифровых сигналов, второй действует наоборот. При этом говорят, что АЦП кодирует аналоговый сигнал, а ЦАП - декодирует его. В англоязычной литературе используются обозначения ADC и DAC , а также codec (coder/decoder). Для преобразования в цифровой код аналоговый сигнал приходится подвергать дискретизации - разбиению на фиксированные участки во времени и на ряд фиксированных величин - по уровню. Каждый элементарный участок сигнала кодируется одним числом, величина которого пропорциональна среднему уровню сигнала на этом участке; такое число называется отсчетом . Числа появляются на выходе АЦП синхронно с изменением сигнала на входе; точность преобразования будет тем выше, чем выше частота следования отсчетов и чем больше используется фиксированных значений уровня. Частота следования отсчетов называется частотой дискретизации , а диапазон значений отсчета определяется разрядностью его двоичного представления. Выбор частоты дискретизации важен в первую очередь для передачи частотного диапазона сигнала - при слишком низкой частоте звук становится глухим и неразборчивым. Чаще всего для хорошей передачи звука достаточно частоты, вдвое большей максимальной частоты исходного сигнала, хотя для достижения высокого качества используется трех-пятикратное превышение. А разрядность влияет прежде всего на количество искажений и шумов, вносимых в звук - при недостаточной точности отсчетов звук становится резким и неприятным, как внутри металлической трубы. В популярных сейчас бытовых проигрывателях компакт-дисков используется частота дискретизации 44.1 кГц и отсчеты в 16 двоичных разрядов (65536 фиксированных уровней). В цифровых телефонных линиях применяется 8-разрядная (256 уровней) оцифровка на 8 кГц, а в студийных системах обработки звука - 24-разрядная (16777216 уровней) с частотой 96 кГц. Понятно, что с ростом частоты дискретизации и разрядности отсчета растет и объем данных, занимаемый звуком. Например, один компакт-диск вмещает 74 минуты стереозвучания, однако при записи на нем звука в монофоническом телефонном формате время непрерывного звучания составит более суток. Самый простой ЦАП делается при помощи так называемой резистивной матрицы, когда все разряды двоичного числа, представляющего отсчет, через резисторы с различным сопротивлением сводятся в одну точку, причем сопротивление резисторов падает с ростом старшинства разрядов двоичного числа. Таким образом, изменение старшего разряда из 0 в 1 и наоборот будет вносить в линию максимальное изменение напряжения, а то же самое в младшем разряде - минимальное, и в случае 8 разрядов разница составит в точности 256 раз. При последовательном переборе всех чисел от 0 до 255 сигнал на выходе будет ступенчато изменяться от нуля до максимума - в 256 раз более плавно, чем простой цифровой переход от 0 к 1. Лет десять назад на компьютерах IBM PC подобные 8-разрядные ЦАП делались при помощи параллельного порта принтера, имеющего как раз 8 линий данных, а при использовании дополнительных линий управления - и более качественный 12-разрядный. Выводя из программы в порт отсчеты с нужной скоростью, можно получить достаточно чистый звук, сравнимый по качеству с телефоном или дешевым магнитофоном. Сейчас выпускается широчайший ассортимент звуковых адаптеров, или карт, для всех видов персональных компьютеров, а во многих моделях они являются компонентом системной платы. Современный звуковой адаптер содержит 16-разрядные стереофонические ЦАП и АЦП, работающие на частоте 5..48 кГц, которые передают и получают цифровой звук по каналам прямого доступа к памяти (DMA), без прямого участия программ, которым остается только вовремя забирать готовый оцифрованный фрагмент с АЦП, или подавать очередной цифровой фрагмент на ЦАП. Многие адаптеры могут записывать и воспроизводить звук одновременно, и программа при должном быстродействии может синхронно воспроизводить записанный звук в уже обработанном виде. Обработка цифрового звука - отдельная и весьма обширная область, которая, по сути, сводится к выполнению над числами-отсчетами тех же математических операций, которые в аналоговых устройствах выполняются электронными схемами. Например, усилению или ослаблению соответствует умножение или деление отсчетов, смешиванию двух сигналов - попарное сложение их отсчетов, фазовому сдвигу - задержка одних отсчетов относительно других. Единственная проблема состоит в том, что для выполнения сложных преобразований вроде фильтрования или модуляции требуется очень большое число элементарных числовых операций, которое рядовой компьютер не в состоянии делать синхронно с поступающим сигналом (как говорят - в реальном времени ). В таких случаях либо применяются специальные цифровые сигнальные процессоры (DSP), либо обработка проводится основным процессором, но после предварительной записи звука в память или на жесткий диск, с воспроизведением оттуда после окончания обработки. Эта так называемая нелинейная обработка занимает больше времени и не позволяет тут же слышать результат, однако никак не ограничена по сложности и глубине воздействия на звук. Частным случаем обработки является простой монтаж фонограмм, с которым постоянно сталкиваются операторы самых различных звуковых студий. То, что на обычном магнитофоне делается за минуты, часы и дни путем многократной перезаписи с ленты на ленту, даже на самом простом компьютере занимает считанные секунды или часы, благодаря полному визуальному контролю и точности вплоть до одного цифрового отсчета (при 44.1 кГц - 23 мкс). Однако компьютер способен не только сохранить и воспроизвести однажды записанный в него звук, даже после цифровой обработки - он может создавать совершенно новые звуки при помощи аппаратного или программного синтеза . Простейший метод синтеза состоит в генерации серии отсчетов и циклическом их воспроизведении, в результате чего получается периодический (тональный) звуковой сигнал. Например, при воспроизведении значений функции sin (x), вычисленных с некоторым шагом в границах периода, получается чистый синусоидальный звуковой сигнал с мягким звучанием и четкой музыкальной высотой; при усложнении вычислительной функции звуковые колебания будут повторять ее график - с точностью до параметров оцифровки и погрешностей ЦАП. График можно и нарисовать прямо на экране при помощи мыши; при этом плавному графику будут соответствовать более мягкие, глухие звуки, а крутому - более резкие, яркие и звонкие. Если взять какой-либо физический процесс, приводящий к появлению звука - разряд молнии, шум ветра или колебания скрипичных струн - то всегда можно разработать достаточно точную математическую модель этого явления, которая сведется к системе уравнений. Решая эти уравнения, можно получить график звуковых колебаний, возникающих в этом процессе, и затем воспроизвести их. Подобным образом был получен предполагаемый звук московского Царь-Колокола при помощи только его наружных измерений и структурного анализа сплава. Этот метод физического моделирования - самый точный для имитации реальных звуков, однако он же - самый трудоемкий и длительный. Другой, более простой, метод синтеза состоит в генерации синусоидального сигнала, частота которого управляется другими генераторами таких же сигналов - это разновидность частотной модуляции (англ. FM ). В результате получается сигнал весьма сложной структуры, тембр которого может меняться в чрезвычайно широких пределах. При достаточном количестве управляющих друг другом генераторов (так называемых операторов ) и точном подборе их параметров можно не только синтезировать необычные звуки, но и достаточно точно имитировать звуки природы и музыкальных инструментов. Однако на практике количество операторов не превышает десяти, и разумное управление даже таким небольшим их числом сильно затруднено. В большинстве звуковых адаптеров есть аппаратный FM-синтезатор с двумя или четырьмя операторами, при помощи которого можно синтезировать различные шумы, стуки и звоны, однако для имитации музыкальных инструментов он в силу своей простоты совершенно непригоден. Наиболее распространенный сейчас метод синтеза музыкальных звуков - таблично-волновой (wave table - WT ). Он заключается в записи характерных фрагментов звучания реальных инструментов - начального и среднего по времени всего звучания ноты - и использования их для синтеза всех прочих звуков, издаваемых этими инструментами. Записанные фрагменты образуют основной тембр инструмента, а различные приемы обработки в реальном времени - изменение частоты, амплитуды, добавление гармоник или их фильтрация - придают тембру оттенки и динамику, свойственные различным приемам игры. Для повышения достоверности имитации берется больше образцов (англ. samples) звучания и выполняется больше работы по их обработке во время синтеза; в простейшем случае таблично-волновой метод вырождается в так называемый самплерный , при котором звучание инструмента записывается и воспроизводится целиком от начала до конца. В качестве образцов звучаний в таблично-волновом и самплерном методах могут использоваться и результаты других методов синтеза или обработки. Например, многие модные сейчас "электронные" звучания получены путем сложной обработки различных ударных звуков, звука падения капель и даже скрежета ржавого железа. Путем намеренного огрубления, внесения искажений и дополнительных призвуков изначально мягкие звуки делаются более резкими и пронзительными (яркий пример - дистошн или овердрайв для гитары), а изначально звонкие и яркие - смягчаются и выравниваются. При помощи даже сравнительно простых операций вроде суммирования сигналов с фазовым сдвигом можно получать совершенно не похожие на оригиналы звуки. В последнее время все большее число звуковых адаптеров оснащается таблично-волновыми синтезаторами, возможности которых приближаются к профессиональным синтезаторам, используемым на музыкальной сцене. Все они содержат заранее заданный стандартный набор звуков мелодических и ударных инструментов, что позволяет им более-менее похоже исполнять одни и те же музыкальные произведения в нотной форме, а некоторые вдобавок позволяют использовать дополнительные - готовые или самостоятельно созданные - наборы звуков. Все синтезаторы предоставляют возможности по управлению артикуляцией, амплитудной и частотной модуляцией звучания, а наиболее развитые позволяют "на ходу" в широких пределах менять спектр звука, создавать эффекты реверберации, хорового звучания, вращения звука и т.п. Управляются компьютерные синтезаторы, как и их "старшие братья", при помощи специального музыкального цифрового интерфейса MIDI. Внутри компьютера он представляет собой просто расширение нотной системы записи музыки с дополнительными командами для управления ее исполнением; вдобавок к этому большинство звуковых адаптеров содержит внешний MIDI-интерфейс, к которому можно подключить любое количество клавишных или модульных музыкальных синтезаторов, блоков обработки звука, датчиков, систем освещения и т.п. Компьютер в этом случае выступает в роли "мозгового центра", управляющего всем этим электронным зверинцем - как дома или на дискотеке, так и в профессиональной музыкальной, театральной студии или в концертном зале. В этих областях персональные компьютеры обосновались так же давно и прочно, как в лабораториях математиков и физиков; но самое главное состоит в том, что многие вещи, которые еще недавно были возможны лишь на очень сложной и дорогой аппаратуре, становятся доступны каждому, у кого есть современный персональный компьютер со звуковым адаптером - даже самым простым и дешевым. Достаточно научиться его правильно применять - и для вас уже не будет ничего принципиально невозможного в мире звука.