Биперные истории

Уже больше десяти лет я плотно занимаюсь темой биперной однобитной музыки на ZX Spectrum и других платформах — все эти движки, трекеры, треки, альбомы и прочие плагины. Всё это время меня постоянно не спрашивают, как же я докатился до жизни такой в эпоху могучих TS, TSFM, NeoGS, мегабайтов и мегагерцев. Но вам всё равно придётся это узнать, потому что это прошлое, в котором мне интересно покопаться и напомнить о нём самому себе, а знакомство с чужой историей нередко позволяет читателям освежить в памяти и их собственные первые впечатления.

Как вы знаете, технологический прогресс докатился до России с большой задержкой, но внезапно и сразу. В течении нескольких лет пустоту в области домашней вычислительной и развлекательной техники стремительно заполнили платформы сразу нескольких поколений, и какое-то время они успешно сосуществовали вместе — вплоть до таких крайностей, как ZX и PlayStation 1 или Dreamcast, одновременно присутствовавших в жизни одного отдельно взятого человека.

Для меня видеоигры начались в конце 80-х с советских игровых автоматов (Городки, Перехватчик, Питон, Конёк-Горбунок) и с одиночного визита в компьютерный игровой салон при магазине, где вроде бы были БК-шки. Через некоторое время был ZX Spectrum у родственников, и вероятно первое воспоминание о том, как я обратил особое внимание на звук в играх, были мелодии в Ms. Pacman и впечатливший в то время голос в Death Star Interceptor. Но тогда это был мимолётный интерес и первое знакомство. Настоящее же увлечение видеоиграми возникло у меня всё-таки с приходом в наши дома всем известного серого слонёнка, в 1993-94 годах. Мой видеоигровой опыт существенно обогатился знакомством с десятками лучших 8-битных игр, а также краткой встречей с клоном Atari 2600. Тогда же я стал чаще обращать внимание на музыку в играх, или она начала чаще обращать моё внимание на себя.

ZX Spectrum снова пришёл в мою жизнь вероятно весной 1994 года, теперь уже как инструмент для реализации возникшего неуёмного желания создавать игры своими силами — я не знал, что компьютеры бывают разные, и мне просто нужен был любой компьютер. Тогда же я плотно познакомился с его игровой библиотекой и музыкой в играх. Конечно, после знакомства с работами лучших японских и европейских игровых композиторов, использующих куда более продвинутую аппаратную основу, биперная музыка звучала крайне примитивно даже для не самого искушённого уха. Но в её примитивности и резкости было нечто самобытное, и по своему привлекательное, а талант людей, по сути творивших историю игровых саундтреков, обращал на себя внимание даже через рамки столь ограниченного формата. Наверное, это сродни знакомству с ранней рок-музыкой того, кто впервые увлёкся ей на гораздо более позднем этапе эволюции жанра — нечто грубое, неидеальное, но талантливое и заложившее сами основы.

Моё основное знакомство с биперной музыкой, последствия которого я могу отследить в нынешних работах, в основном происходило в 1994-1996 годы. В 1997 я ненадолго обзавёлся Pentagon'ом, который быстро пришёл в негодность, но его AY чип был успешно имплантирован в мой 48-ой с дисководом, и AY-музыка захватила мой интерес на последующее десятилетие, оставляя лишь небольшое место для бипера.

Во время раннего знакомства с программированием на ZX Spectrum в 1994-95 годах у меня дома не было телевизора, и чтобы осваивать программирование я ходил с позаимствованной на время Дельта-С по разным друзьям. А чтобы не терять время, дома я вслепую набирал программки, и конечно, единственным каналом обратной связи был бипер — я набирал мелодии и изобретал звуковые эффекты с помощью оператора BEEP и разнообразных циклов.

Примерно в 1996 году я начал изучать программирование в машинных кодах для ZX, имея под рукой только книжку МРБ о компьютере Радио 86РК и процессоре КР580ВМ80. Тогда я не сильно понимал, что процессоры могут быть разными, и на мою удачу ВМ80 был бинарно совместим с Z80, поэтому информации из книжки оказалось достаточно, чтобы писать свои первые простейшие процедуры в машинном коде, набирая их через POKE и DATA в Бейсике. Вероятно травмирующий опыт программирования без телевизора наложил свой отпечаток, и многие мои первые программы на ассемблере делали что-то с бипером. Например, записывали и воспроизводили оцифровки, или создавали эффект эхо, одновременно записывая и воспроизводя данные через кольцевой буфер в памяти.

Позже, когда я уже писал игры на ассемблере, и снабжал их честно позаимствованной из чужих игр и демок AY-музыкой, я переизобрёл велосипед в виде ШИМ, чтобы получить несколько уровней громкости на бипере, и на основе этой идеи придумывал различные продвинутые звуковые эффекты до самого 2000-го года, когда роль моего инструмента для творчества перешла от ZX к IBM PC.

Продолжение истории вы уже знаете — во второй половине 2000-х Mister BEEP разбередил мои старые раны и заставил реализовать скрытые странные, невообразимые желания. Это оказалось заразным, ещё несколько смельчаков решились на каминг-аут, и в итоге мы имеем тысячи биперных треков от десятков композиторов со всего мира, многие из которых даже не представляют, что такое ZX Spectrum, а также обязательный получасовой сеанс ушного кровопускания почти на каждом демопати на протяжении десятилетия.

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

Ping Pong

Первый биперный трек, обративший на себя моё внимание и впечатливший, несмотря на плотное знакомство с намного более продвинутой музыкой на Денди. Уже здесь можно заметить истоки моих биперных движков серии Phaser. В этой мелодии было множество эффектов, она звучала очень иначе и, наверное, свежо, по сравнению с типичными работами японских композиторов. А в конце был громкий белый шум, призванный имитировать рёв толпы — почему-то в то время меня это особенно впечатлило.

Thanatos (Flying Dragon)

Крайне простая с технической точки зрения музыка, похожая на звучание оператора BEEP, играющего два голоса с чередованием. Несмотря на это, мелодия прекрасна, она имеет настроение и задаёт атмосферу игры, и я думаю, в то время это показало мне, что вовсе не обязательно иметь продвинутую технологию, чтобы создавать полноценное искусство. Первые шаги в преодолении комплекса, что игрушечный синтезатор или дешёвая гитара не годятся для создания некоей настоящей музыки, а фломастерами нельзя нарисовать настоящую картину.

Stardust и Score 3020

В этих двух играх работает испанский аналог движка Flip Flop Джоната Смита, который использовался в Ping Pong. Я не смотрел в его код, и не знаю, добавили ли испанцы новых фишек, но использовали они его точно более изощрённым образом, извлекая ещё более необычные звуки и добавляя множество небольших деталей в аранжировки. В особенности это слышно в музыке из Score 3020, полной мелизмов и прикольно звучащих совершенно синтетических ударных (мне особенно нравится рабочий барабан). Stardust в то время также впечатлил продолжительностью звучания трека, сильно превышавший типичный для игр на Денди минутный цикл. Эти две мелодии усилили мой интерес к такому звучанию, и именно его я пытался воссоздать и улучшить, создавая движок Phaser1.

Beyond the Ice Palace

Вероятно, это была первая игра, в которой я услышал звучание движка, очень схожего по коду с FuzzClick Джонатана Смита — до сих пор неизвестно, кто же создал его первым, и почему они так похожи. А может быть, первым был Dizzy, но в этой игре мелодия была более выразительной и запоминающейся, и этим она обратила на себя моё внимание. Думаю, именно это звучание ассоциируется у меня с музыкой на 48K в первую очередь.

Transmuter

Хотя в этой игре толком нет музыки, в основном короткие джинглы, она использует необычный, возможно даже уникальный движок. Я бы описал этот звук как 'кристальный'. В ней также были эффекты арпеджио и вибрато, что не часто встречалось в биперной музыке тех лет, но уже было хорошо мне знакомо по работам европейских композиторов на Денди. Почему-то мне очень запомнилось это звучание, и с тех пор, как я впервые услышал его в 1995 году, я часто вспоминаю о нём, когда работаю над очередным биперным движком или треком.

Agent X и Chronos

Два обязательных для упоминания экземпляра. Я не буду петь дифирамбы музыкальному гению Тима Фоллина. Откровенно говоря, именно музыкальная составляющая его творчества на ZX Spectrum никогда мне не нравилась по настоящему — в отличие от его совершенно замечательных и по звучанию и по композиции работ на NES. Поэтому музыка Фоллина не стала источником моего вдохновения как композитора. Но он сильно повлиял на меня иным, менее очевидным способом — утверждением в бегущей строке Agent X, что данный шум пылесоса на самом деле содержит аж пять каналов звука, что бы это ни значило, и что надо полагать, что это круто. Это послужило мне демонстрацией того, что можно достичь многого, используя только малое, и в некотором смысле это познакомило меня с духом демосцены, подготовило к знакомству с этим явлением и последующему увлечению им. Ну и познакомило с хайпом, заодно.

Savage — Part Three

Звучание этого трека заставило меня воспринимать биперную музыку более серьёзно, потому что качество её звучания в то время ощущалось мной на уровне Денди. В нём была хорошо слышная полифония и мощные, пробивные и глубокие ударные, минимальность и схематичность которых обычно является типичным слабом местом в биперном звуке. Также, думаю, на восприятие повлияло наличие нескольких скважностей с достаточно чистым звуком, что отличалось как от обычного чистого квадрата, свойственного оператору BEEP и движку Wham, так и от неопределённого зудения в полифонических движках Джонатана Смита и Тима Фоллина, и в целом звучало ближе к NES, с её тремя скважностями.

Galaxy Force

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

Mig-29 и Super Bike TransAm

Эта музыка сразу же впечатлила меня своими очень мощными, громкими ударными. Вероятно, это был первый раз, когда я услышал оцифрованные сэмплы ударных на ZX Spectrum, по крайней мере в полноценно звучащей музыке. Биперные сэмплы ударных также звучат в Chase H.Q., но сами по себе, без каналов тона. Звуковой движок в этих играх также обладал совершенно особым, легко узнаваемым характером звучания каналов тона, полным обертонов, которые звучали приятно для моего уха, и это звучание хорошо мне запомнилось. Впоследствии я долго пытался воссоздать этот звук для ударных, и мне удалось это сделать в моём VST tndrums (один из пресетов).

Earth Shaker

Ещё одна уникальная краска в звуковой палитре бипера, пожалуй наиболее необычная и яркая их всех. Музыка в этой игре звучит совершенно самобытно, как бы с полифонией, но до предела насыщенной обертонами — чем-то похоже на игру аккордами на перегруженной гитаре. Почему-то эти искажения звучат очень привлекательно для моего слуха. Помимо необычного звукового движка, в игре хорошая, приятная музыка, множество очень разноплановых коротких фрагментов. Я бы сказал, она звучит как конкурс категории 15-секундных MP3 с рекордным количеством победителей. Во многом классности звучания зарисовок помогает шаффл, прыгающий темп, который часто можно услышать в ранней демосценовой музыке на Amiga, и который автоматически улучшает любую аранжировку вдвое. Запоминающееся звучание впоследствии вдохновило меня на создание движка Ear Shaver, со схожим звуком и рядом дополнительных наворотов, а также на создание VST oversynth, воссоздающего характерные искажения музыкальных интервалов.

Firefly и Midnight Resistance

Три особые для меня мелодии из немалого количества хорошей музыки, сочинённой Кейтом Тинманом для движка FuzzClick Джонатана Смита. Мне нравились оба трека из Firefly, и я часто их переслушивал, но особенно мне нравилась биперная версия титульной мелодии в Midnight Resistance. В ней соединилось многое — и талант японского композитора, автора оригинальной музыки на аркаде, и минимальная аранжировка Тинмана, оставившая самую суть, и характерное звучание FuzzClick. Я переслушивал этот трек множество раз, наверное больше, чем любой другой. Это и стало причиной частого использования движка FuzzClick для моих собственных работ 2010-х годов, и вдохновило на создание аналогичного движка BuzzKick, добавляющего к уже отлично сбалансированной реализации тональных каналов поддержку сэмплированных ударных, решающих проблему слишком слабого и условного звучания ударной секции.

Full Throttle 2

Довольно малоизвестная игра и музыка из неё на уникальном движке. Это как бы одноканальный Flip Flop на стероидах, очень интересная одноканальная аранжировка, создающая ощущение многоканальной музыки при очень чистом, разнообразном звучании. Ещё один камень в историческом фундаменте для Phaser1.

Dark Fusion

Закончу перечисление на, вероятно, наивысшем достижении биперной мысли конца 80-х, лучшем биперном треке времён активной коммерческой жизни ZX Spectrum 48K. Я впервые услышал этот трек уже будучи долгое время увлечённым многоканальной музыкой для AY-чипа. И этот трек, как мне казалось тогда, звучал на уровне, если даже не более интересно. В нём было всё — полифония, слайды, мощный бас, и оцифрованные ударные, которые звучали даже реалистичнее и мощнее типичных ударных на AY. Для меня то было ещё одним доказательством, что биперная музыка — не просто устаревшая примитивная технология, но самодостаточный формат звучания, особая звуковая краска, которая не хуже и не лучше, но просто иная, отличная от других, и ценная именно этим.

12 комментариев

avatar
Ничего себе, получается, что я закодил свой первый биперный движок раньше тебя, году в 1994 или в 1995.

Выбор любимых треков вещь очень индивидуальная, трудно обсуждать её в деталях. Но мне было очень интересно узнать, что ты пришёл на спектрум через денди и это в какой-то степени определило твои вкусы и приоритеты. Ты как бы мерял всё что видел в терминах денди и поэтому, даже в этом посте, неоднократно за бипер извиняешься (чисто для примера, «биперная музыка звучала крайне примитивно даже для не самого искушённого уха»). Может быть в силу того, что я довольно долго просидел на 48К машине (примерно года 4 или 5), я впитал бипер совершенно органически, до такой степени, что почти всю подряд АУ музыку 1990х я агрессивно не любил (а АУ музыку 1980х просто воспринимал как «блямканье»). Отчасти это можно попробовать объяснить музыкой, которую я слушал вне спектрума — в то время я слушал много инди-рока, и звук АУ был просто агрессивно в этом смысле неправильным, раздражающе «игрушечным» (в то время как фэйд-ауты на скважности, типичные для бипера, имеют примерно те же самые тембры что перегруженая гитара, так что «роковый» звук треков Фоллина не случайное совпадение).

Но мне кажется, тут есть ещё одно измерение. Я бы сравнил АУ с чем-то типа графического сопроцессора у популярных консолей 1980х. Они, конечно, помогают центральному процессору с отрисовкой графики и расширяют диапазон того, что можно вообще показать. Но ещё они предоставляют достаточно ограниченный набор инструментов и, в итоге, впихивают то, что все делают, в достаточно узкие рамки, сужая в итоге разнообразность визуальных или звуковых эффектов. Демосцене в каком-то смысле повезло с АУ, т.к. демосцена придумала радикально новый способ использования АУ, благодаря реинтерпретации смысла огибающей. Фактически, демосцена открыла в АУ новый канал.

А бипер, развивая эту же мысль, это способ звукоизвлечения очень натуральный для спектрума. Это просто центральный процессор которому доверено делать всё что угодно, и хотя он не самый мощный, он как раз достаточно мощен для того, чтобы сделать плюс минус всё что требуется. Отсутствие графического сопроцессора в играх привело к сравнительно худшему качеству картинки, но это также привело к появлению 3д и изометрических игр, жанров которые на консоли того времени пробиться почти не смогли. Точно также, бипер, если его воспринимать как отсутствие музыкального сопроцессора, — это именно что свободная стихия, где твои возможности действительно не ограничены форматом железа. Поэтому мы и имеем невероятное разнообразие звуков и текстур, всё в наших руках.

Вот эта свобода и есть то, что заставляет меня возвращаться к биперу снова и снова.
avatar
Да, определённо раньше. В 1994-1995 я только осваивал Бейсик, и никакого системного софта у меня просто не было. В 1996 стал использовать MCODER2, стал писать первые процедурки в машкоде, потом добыл ZEUS, Gens. А полностью на ассемблере начал писать программы в 1997.

Я не то, чтобы извиняюсь, но иронизирую над проблемой восприятия. Это касается не только бипера, но любого чиптюна. Если вдруг меня спрашивают про занятия музыкой, мне очень трудно объяснить, что и почему я делаю, и почему оно звучит так необычно, не как из радио. Многие определяют этот диапазон звучания как 'что-то игрушечное', кому-то трудно воспринять это как музыку в принципе. С другой стороны, я в принципе не отношусь к чему-либо излишне серьёзно (музыка-игры-демки-разработка), несмотря на то, что это типа как мои основные занятия в жизни.

Согласен, главное качество звуковых чипов — унификация звучания, по крайней мере значительное снижение диапазона возможностей по звучанию, в обмен на облегчение жизни процессору. И у большинства чипов есть некоторые скрытые фишки, которые со временем были найдены, изучены, и существенно расширили потенциал. Огибающая у AY, коротко-периодический шум у SN76489, DPCM сэмплы тональных инструментов на NES, и так далее.

Также разделяю мысли, что бипер наиболее идеологически натуральное звуковое устройство для Спектрума, и наиболее интересное со стороны творческой свободы.
avatar
удивлён, что не запомнился и не впечатлил Saboteur-2
мимо-то он точно пройти не мог
avatar
Поскольку я очень любил бипер, а слушать бипер на реале можно только загружая софт, что медленно даже с дисководом, я делал себе сборник своей самой любимой выдранной биперной музыки. Возможно тебе будет приятно узнать, что Saboteur 2 у меня там был выдран. Но в остальном, скажу честно, у меня там наверное больше несовпадений со списком Shiru, чем совпадений. Просто не выберешь TOP 10 или ТОП 20 чтобы угодить всем.
avatar
Но в остальном, скажу честно, у меня там наверное больше несовпадений со списком Shiru, чем совпадений.

Cybernoid 2 присутствует? :)
avatar
Вот список треке в старом сборнике, кот я делал в 1994: SAVAGE 1, SAVAGE 2, SAVAGE 3, MiG-29, GOLDEN AXE, CHRONOS, RAMPARTS, SOLDIER OF FORTUNE, FAIRLIGHT, SABOTEUR 2, FOX FIGHTS BACK, GRYZOR, RACE AGAINST TIME.

В 2013 я переделал этот сборник, существенно расширив его. Но Cybernoid 2 у меня всё равно не попал. И даже если бы я брал что-то на этом движке, я бы 100% взял титульный трек из Stormlord.
avatar
Мимо он не прошёл, был на кассете с Ping-Poing и Thanatos. И я действительно вспоминал обоих Saboteur'ов, когда делал список, но всё же не включил. Но да, там тоже очень интересное звучание и сама музыка.
avatar
просто интересно, чтобы ты сказал о других классических биперах, как-то: cybernoid-2, last ninja, robin of the wood, sooty and sweep, hate, renegade, soldier of fortune, flying shark… для необразованного меня в те года все движки делились на два типа: «вхам» и «не-вхам» (и этот второй еще на две разновидности: «тихие» и «громкие»)))
avatar
Никогда не вникал в эту тему, но стало интересно. А как смешивают каналы? Складывают через and, ксорят, или чередуют, выделяя некий квант времени на проигрывание каждого?
avatar
Есть много подходов. Вот прямо из головы несколько:
* Можно выводить звук каждого канала тонкими иголками (тонкими = намного уже периода цикла дискретизации). Тогда громкость можно изобразить меняя ширину иголки. Так были устроены движки Фоллина, и это довольно популярный подход.
* Так как иголки сравнительно узкие, а периоды нот сравнительно длинные, большую часть времени ничего выводить не нужно. Поэтому можно сделать иголки пошире, например шириной в период дискретизации, или даже в несколько. Это идея довольно редкая, но так устроен, например, Octode XL.
* Можно думать об этом как о чём-то вроде ШИМ. Тогда можно просто сделать движок как что-то типа ШИМ движка, и кормить ему сэмплы, как в обычном цифровом движке. utz делал несколько современных движков по такому принципу, и наверное не он один (но я не вспомню сейчас их названия).
* Можно выводить текущее состояние каждого канала звука раз в цикл дискретизации. Типа, 2 канала выдают прямоугольники, каждый со своим периодом, тогда выводим в звуковом цикле поочерёдно состояние каждого из каналов. Так работают Wham the Music Box, Savage, из новых движков Tritone, ну и многие др., это чуть ли не самая «модная» стратегия.
* Можно смешивать подход с иголками и подход с прямоугольниками. Это тоже довольно редкая идея, но Squeeker устроен как раз так. Плюс такой идеи в том, что прямоугольники лучше воспроизводят басы, а иголки дают более разнообразное звучание.
Вроде ничего фундаментального я не забыл, но пишу второпях. Надеюсь, что Shiru дополнит/поправит, если что.
avatar
Забыл ответить точнее на твои варианты. Движков через AND или XOR я не знаю (AND звучит как неважная идея, XOR может и заработать, не пробовал). Идея с чередованием — предпоследняя в моём списке, так делают многие старые движки, да и новые тоже. Недостаток этой идеи: трудно сделать много каналов, т.к. часто делаем out, причём такая схема требует высокой частоты дискретизации (из-за частого переключения порта, мы производим больше высокочастотных помех). Из-за этого, например, движок Wham так сильно свистит.

Squeeker смешивает звуки по OR, что может звучать странно, но работает неплохо. Мой Octode XL как бы складывает каналы вместе и использует сумму как итоговую скважность (фактически, PWM).

Было бы интересно сделать биперный движок на PDM. К сожалению, не знаю как синтезировать PDM с нужной скоростью.
avatar
Спасибо за такой подробный и развернутый ответ!
Кодить что-то своё наврядли буду, просто было интересно )
Про PDM даже мысли в голову не приходили. По идее следующий шаг после PWM — это реализовать дельта-сигма модуляцию!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.