Бипер
Бипер (Beeper) — стандартное устройство вывода звука, присутствующее на всех моделях ZX Spectrum и его клонах. Представляет собой внутренний динамик, управляемый битом D4 порта #FE. Важной функцией бипера было подтверждение нажатия клавиш при работе в Sinclair BASIC, так как низкое качество клавиатуры не обеспечивало тактильной обратной связи.
До появления ZX Spectrum 128K, в котором был добавлен трёхканальный синтезатор звука AY-3-8910, разработчики программного обеспечения, и в особенности игр, использовали бипер для воспроизведения звуковых эффектов и музыки. Существовали музыкальные редакторы для создания биперной музыки - в частности, Wham, Orfeus Music Assembler и Music Synth 48K. Среди музыкантов, создававших биперную музыку, можно отметить Тима Фоллина (Tim Follin), писавшего 5-канальную музыку для собственного плеера (в последней версии плеера также добавлены ударные на AY).
В некоторых играх музыка воспроизводилась через бипер и AY-3-8910 одновременно. Так, в игре Chase H.Q. в режиме 48K в качестве музыки в меню и в конечной заставке звучит барабанный ритм на бипере, а в 128K версии вместе с ним звучит мелодия на AY. В играх, использующих последнюю версию 5-канального плеера Тима Фоллина AY используется для воспроизведения малого барабана. В игре Arc of Yesod оба устройства воспроизводят ударные и мелодию.
В России бипер не имел большой популярности. В некоторых играх, в частности, написанных в конце 1980-х и начале 1990-х годов, использовалась биперная музыка, написанная в Wham. В книге Как написать игру на Бейсике издательства Питер (1995) было описано использование музыки, созданной в Wham. Начиная с распространения компьютеров с микросхемой синтезатора звука AY-3-8910 и музыкального редактора Sound Tracker, биперная музыка практически перестала встречаться в отечественных программах. Только в середине-конце 2000-х годов возник некоторый интерес к созданию биперной музыки, как обладающей специфическим ретро-звучанием. Наиболее активным биперным музыкантом этого периода является Mister Beep, написавшим несколько композиций с помощью различных редакторов, включая альбом биперной музыки Monophonic Generator. Alone Coder использовал биперную музыку и собственный движок для неё в игре Канализация (2006), а также написал редактор 5-канальной биперной музыки с интерфейсом типа трекер - Beep Tracker (2009). GriV использовал бипер в Diafilm (2008) для вывода речи.
Использование импульсной модуляции позволяет воспроизводить на бипере оцифрованный звук со средним качеством.
Как и в случае с цифровой музыкой, воспроизведение звука на бипере требует выдерживания очень точных таймингов, что требует использования большей части вычислительных ресурсов процессора. Как правило, программы для воспроизведения биперной музыки рассчитаны на определённую скорость работы компьютера. Если скорость работы компьютера отличается от требуемой, например, в турбо-режиме, звук будет воспроизводиться с искажениями. Так как необходимые задержки в программе выполняются в виде последовательности разных команд, выполняющихся за определённое время, для решения этой проблемы в программе должно присутствовать несколько разных версий плеера.
AY Emulator поддерживает бипер и может проигрывать биперную музыку, извлечённую из игр (в формате *.ay, содержащем оригинальные код и данные).
Особенности оригинального ZX Spectrum
На оригинальном ZX Spectrum к младшим 16 КБ ОЗУ одновременно обращаются процессор и видеоконтроллер, с приоритетом у видеоконтроллера. При этом работа процессора неравномерно замедляется. По этой причине код плееров биперной музыки обычно размещался в старших 32 КБ ОЗУ, а использование биперной музыки с кодом синтеза звука, размещённым в ОЗУ, невозможно на ZX Spectrum 16K.
Схема управления динамиком, реализованная оригинальной в ULA, представляет собой нелинейный ЦАП - помимо бита D4 на уровень выходного напряжения также влияет бит D3. Теоретически это позволяет получить 4 уровня сигнала, однако в существующих программах эта особенность не использовалась. В большинстве клонов ZX Spectrum схема управления динамиком имеет отличающуюся реализацию и подобная возможность на них отсутствует.
Способы воспроизведения музыки
Синтез звука для воспроизведения музыки на бипере может выполняться несколькими принципиально разными способами. Все способы синтеза требуют размещения кода синтеза в памяти без торможения и отключения прерываний.
Простейший способ заключается в снятии и установке бита динамика через равные промежутки времени. Таким образом генерируются чистые тона с сигналом квадратной формы. Подпрограмма, воспроизводящая звук таким образом, присутствует в ПЗУ (используется оператором BEEP в Sinclair BASIC). На ZX Spectrum 16K использование этой процедуры является единственным способом генерации чистых тонов. Многоголосая (обычно не более двух) музыка может воспроизводиться даже с помощью простейшего способа синтеза посредством арпеджио — быстрой смены нот. Этот способ обычно использовался в очень старых играх, в том числе и для воспроизведения музыки в процессе игры или анимации на экране, в частности в Boulder Dash (1984, одноголосая музыка на титульном экране) и в Jet Set Willy (1984, одноголосая музыка в игре). Одна из поздних игр, использующих этот способ синтеза - Thanatos (1986, двухголосая музыка, при этом игра также поддерживает AY-3-8910 и имеет музыкальное сопровождение для него).
Два и более одновременно звучащих канала можно реализовать путём чередования их выводов в порт бипера внутри периода дискретизации (выше 16 кГц во избежание появления свиста). Этот способ синтеза использовался в музыкальном редакторе Wham! The Music Box (1985) и в некоторых играх, например Barbarian (1988) и Savage (1988, более сложный плеер с ударными и разными тембрами).
Другим способом смешивания каналов является сложение и вывод бита по порогу. Этот способ применялся в игре Robin of the Wood (1985).
Наиболее распространённым способом синтеза звука для многоголосой музыки на ZX Spectrum является генерация узких импульсов по переполнению счётчиков-таймеров (у каждого канала свой счётчик). Использование разной ширины импульсов позволяет управлять тембром или громкостью отдельных каналов. Среди наиболее известных плееров, использующих этот метод - плеер в играх Codemasters (автор музыки обычно David Whittaker), плеер Special FX (автор плеера Jonathan Smith) и 5-канальный плеер Тима Фоллина.
В испанских играх, в частности, в играх компании Topo Soft, и в некоторых английских играх, в частности в Athena (1987) и Flying Shark (1987), использовался метод синтеза с наложением двух каналов по XOR, позволяющий получать различные тембры путём сдвига фаз и получения биений. Такие плееры имели всего один канал тона, но в испанских играх также присутствовал канал ударных.
Одним из самых удачных плееров биперной музыки на ZX Spectrum является плеер в игре Dark Fusion (1988). Он воспроизводит два (три?) канала тона и канал реалистично звучащих ударных, при этом имеет чистое звучание. Автором плеера, вероятно, является John O'Brien, также работавший над игрой Chase H.Q., где биперные ударные имеют такое-же звучание, как в Dark Fusion. В обзоре игры, опубликованном в Sinclair User #80, музыка была ошибочно названа 128K.
Почти во всех существующих биперных плеерах ударные прерывают звучание всех остальных каналов. Исключением являются плееры в игре Канализация и в редакторе Beep Tracker (автор плееров Alone Coder).
Ссылки
- Сайт Mister Beep - описания редакторов, биперная музыка
- Z80 music site - биперная музыка в формате MP3
- Форум zx.pk.ru - сравнение различных типов кодеков, использующих бипер