Этой весной выпустил свой новый альбом биперной музыки для ZX Spectrum 48K — Ear Shaver. Послушать без дополнительных прелюдий можно в прикреплённом видео или на разнообразных музыкальных площадках.
Отвступление
Теперь нужно пояснить, что вы только что видели и слышали.
В начале 1980-х годов компьютеры только начали шагать по планете и заходить в каждый дом. Чтобы завоевать массовый рынок, производители пытались максимально удешевить их. Одной из наиболее успешных попыток сделать это в то время стал разработанный в Англии компьютер ZX Spectrum. Он сыграл заметную роль в популяризации компьютеров как в своей родной стране, так и в странах восточного блока — его конструкция была настолько проста, что её можно было повторить на доступных там деталях. Обратной стороной простоты были слабые технические характеристики, особенно в области графики и звука, но за счёт таланта программистов даже на таком примитивном компьютере можно было делать довольно интересные вещи.
Самой слабой стороной компьютера были его звуковые возможности — он мог только включать и выключать ток на встроенном динамике, формируя щелчок. Любые более сложные звуки достигались за счёт хорошо продуманного и точно рассчитанного по времени выполнения кода. Несмортя на это, уже в середине 1980-х разработчики игр вполне успешно пытались воспроизводить многоголосые мелодии, стараясьне отставать от более продвинутых компьютеров, типа американского Commodore 64, имевшего на борту очень неплохой аппаратный звуковой синтезатор.
Компьютеры быстро развивались, ZX Spectrum стал историей гораздо раньше, чем технология воспроизведения звука в рамках столь ограниченных возможностей исчерпала свой потенциал. В 2000-х годах энтузиасты ретро-компьютеров, исследуя технологии прошлого, вспомнили о ней, начали пробовать применять современные знания и техники программирования, прокачивая мастерство и получая на всё том же примитивном железе всё более интересное и разнообразное звучание. Причины этой деятельности и в ответе на вопрос 'что, если...', и в ограничениях, подстёгивающих креативность, и в исследовании необычной звуковой палитры.
Я один из упомянутых энтузиастов, и этот релиз — очередная попытка раздвинуть границы возможного в столь узкоспециальной хардкорно-гиковской теме. По сути, это также мой первый большой музыкальный проект именно для ZX Spectrum, предыдущие подобные релизы или были компиляциями разрозненных треков, или предназначались для других платформ, с другими техническими особенностями, то есть раздвигали немного другие границы. На этот же раз я целенаправленно делал сразу много треков в более-менее общем звуке и концепции, именно для этого компьютера. Да, этот треск и гудение в видео в определённых кругах принято считать музыкой, предположительно неплохо звучащей — лучше, чем можно было ожидать от маленькой восьмибитной коробочки без специальных звуковых чипов внутри.
Не планировал писать очередной 'making of', но начал делать некоторые заметки для релизных текстов, лично для себя, и как-то само написалось — привычка страшная сила. Думаю, подобные тексты являются достаточно интересной демонстрацией, какими путями люди приходят к таким достаточно странным увлечениям, и как выглядит их хобби изнутри. Также я руководствуюсь тем, что чтение подобных текстов когда-то мотивировало меня на различные действия, и, возможно, мои тексты также могут тем или иным образом помочь кому-то с творческой реализацией.
Истоки
Сначала были Спектрум, Денди, первые игры, музыка в них, оператор BEEP, мелодия в Ping Pong, редактор Wham, и многие другие детали, которые я опущу для краткости.
Более предметно история создания альбома начинается с игры Earth Shaker, которую я впервые увидел в 1996 году. Помимо того, что эта игра замечательна сама по себе, для меня она в принципе стала эталоном Boulder Dash подобных игр, она обладала немалым по меркам платформы количеством музыкальных вставок, по одной на каждый новый уровень, с интересными мелодиями и совершенно уникальным звучанием, а также большим количеством разнообразных крутых звуковых эффектов, чем обратила на себя внимание и запомнилась на многие годы.
Далее были Сега с её синтезаторным роком в Battletoads, Comix Zone, Fire Shark, M.U.S.H.A и других играх, хэви метал, музыка с живыми гитарами в играх для 3DO и PS1, эйсид хаус и транс, MTV, уход от Спектрума и возвращение к нему, много панк-рока, ренессанс биперной музыки начала 2010-х.
Ear Shaver
В 2012 году я начал проект 1tracker. Это универсальный музыкальный редактор, главным образом задуманный, чтобы подхватить знамя предыдущего подобного проекта Beepola, к тому времени заброшенного его автором, охватить и сделать доступными для более-менее комфортного использования современными музыкантами звуковые движки для ZX Spectrum 48K, как из игр прошлого, так и вновь создаваемые. В том же году небезызвестный Oleg Origin (см. игры Zosya Entertainment на Yandex Retro Games Battle) дизассемблировал код звукового движка из Earth Shaker, а в 2013 году я добавил его поддержку в 1tracker.
Уникальной особенностью движка является алгоритм смешивания двух тональных каналов, которые взаимно модулируют друг друга, добавляя множество обертонов. Чистые одиночные ноты можно получать только игрой двух каналов в унисон или через октаву. Это вынуждает писать музыку особым образом, подбирая наиболее благозвучные модуляции. В чём-то это сродни игре на перегруженной гитаре: хотя физика процесса отличается, но одновременное взятие двух чистых нот также порождает зависящие от их частот гармоники. Я давно являюсь энтузиастом синт-рока — музыки, использующей эстетику и жанровые элементы различных видов рока и метала, но исполняемой не на гитарах, а на различных синтезаторах, и синтез звука в Earth Shaker отлично отвечает на мой творческий запрос в области подходящего для этого стиля звучания. В 2015 году я даже сделал VSTi-синтезатор (oversynth в комплектем 1bitstudio), воспроизводящий этот алгоритм, чтобы сделать этот звук доступным для использования в современных цифровых студиях.
В 2017 году у меня дошли руки до написания первого оригинального трека на движке Earth Shaker — Headbanger. Работа с оригинальным движком очень понравилась, но его возможностей показалось маловато. Главным образом мне не хватало более интересных ударных, ведь в оригинальном движке они реализованы через вызов подпрограммы BEEP с двумя разными высотами тона. Так в планах на будущее появилось создание альтернативной версии движка с более продвинутыми ударными, вероятно сэмплированными.
Этот план был реализован в 2018 году в виде движка Ear Shaver. Название было выбрано по созвучности с названием игры, и как шутка по поводу характерного резкого звучания с множеством интермодуляционных гармоник. Он повторял звучание Earth Shaker, но имел полностью оригинальный код, главным отличием которого было использование 16-битных счётчиков вместо 8-битных из оригинала, что дало более точный контроль над высотой нот. Были реализованы и простые сэмплированные ударные, а так как основной цикл получился похожим на мой оригинальный движок Tritone образца 2011 года, я до кучи добавил и такой режим звучания, причём он бесшовно переключался каждую строку — использовались те же самые счётчики.
После этого новоиспечённый движок лёг на полку, дожидаться момента, когда у меня дойдут руки сочинить что-нибудь с его использованием. На тот момент я не осознал свершившийся идеологический прорыв. До этого utz, главный мегамозг в мире современной биперной музыки, уже экспериментировал с многорежимными движками, позволявшими переключаться между различными алгоритмами синтеза на лету, но это не было реализовано настолько прозрачно и удобно для музыканта, как по наитию вышло в Ear Shaver, где всегда есть два одинаковых тональных канала с одинаковым простым набором параметров, и достаточно только указать желаемый тип звучания для выбранной строки.
Ear Shaver EX
В начале 2022 года я начал подумывать, что пора бы уже сделать хоть какой-нибудь трек на новом движке четырёхлетней давности. Я начал делать различные музыкальные наброски, число которых за месяц дошло до двух десятков, в качестве материала для одного или нескольких будущих треков. Это были очень короткие отрывки, в которых я пробовал разные музыкальные идеи и разное звучание. Однако, это ещё не было работой над альбомом — на тот момент я занимался другим музыкальным проектом, не для Спектрума, который впоследствии встал на паузу.
В процессе экспериментов я занялся и усовершенствованием движка. Сначала был найден простой способ добавить ещё немного гибкости в уже сложившуюся концепцию через управление начальной фазой нот (важно для разделения нот одной высоты без пауз между ними), а потом ко мне наконец-то пришло понимание концептуальной ценности движка — не как одного метода синтеза, а как способа совмещения нескольких различных методов синтеза в одном треке.
Тут же был задуман целый ворох улучшений, и в конце марта 2022 года все они вылились в новый движок — Ear Shaver EX. В нём было добавлено несколько новых алгоритмов синтеза звука, общее число которых достигло семи, а также был реализован полностью новый код для проигрывания сэмплированных ударных, позволяющий ограниченно управлять их громкостью, глухостью (подобие очень примитивного LP-фильтра) и смещением начала сэмпла, что дало возможность создавать очень динамичные ударные партии из малого количества исходных сэмплов. Нужно заметить, что в отличие от utz, постоянно реализующего невиданные, сложнейшие вещи для бипера, конкурировать с которыми давно уже решительно невозможно, я пошёл иным путём, и просто собрал лучшее из уже зарекомендовавших себя простых классических решений. То есть это не технологический прорыв, а удачный сплав лучших достижений прошлого, а значит, всё ещё не максимум того, что можно выжать из бипера.
Работа над альбомом
Постепенно развивая начальные наброски из одного-двух паттернов в более длинные фрагменты, с риффами и первыми мелодиями, в какой-то момент я понял, что материала накопилось достаточно, и возникла идея делать из него альбом, сразу много треков исключительно на этом движке. Так как вышеупомянутый другой музыкальный проект шёл туго, я решил, что уж с биперным альбомом смогу закончить быстрее — делов-то, по паре дней на трек! — и решил отдать приоритет ему.
Изначально было решено, что альбом будет называться так же, как и движок, а его концепцией было исследование и демонстрация потенциала движка. Художественной подоплеки не предполагалось, кроме общего звучания, в основном максимально громкого и резкого, имитирующего тяжёлую гитарную музыку. Дело начало двигаться, и у меня были оптимистичные планы закончить осенью 2022 года. Но случился Back To The PET и другие проекты, и новой датой стало начало нового 2023 года.
План-минимум для альбома включал 8 треков по паре минут, а по возможности — столько, сколько влезет в 48K память, если, конечно, наберётся столько годных идей. К декабрю у меня было готово всего три трека (Alphabeard, Perfect Shitstorm, Noise In My Head), звучание которых виделось мне весьма впечатляющим и где-то даже прорывным, и я решил не тянуть с их показом общественности. В срочном порядке дописал до кучи Traffic Lights, выбрал и выставил два трека на январский Di Halt Lite 2023, где они не заняли призовых мест, уступив более впечатляющим и прорывно звучащим трекам от utz, Tufty и AER.
На этот момент я подумал, что оставшийся заготовленный материал несколько однообразен — так как я делал наброски более-менее одних и тех же задумок, и приходил к более-менее похожему звучанию и структуре композиций. После того, как я уже реализовал часть этих набросков, оставшиеся имели шанс получиться слишком похожими на завершённые ранее треки, и я решил добавить в движок ещё какие-нибудь новые возможности, чтобы найти новые идеи и разнообразить звучание.
Новые возможности, однако, ещё не были придуманы, но когда я сел за код с мыслью, что нужно бы что-нибудь сделать, они возникли совершенно спонтанно. Во-первых, был найден не найденный за предыдущие десять лет ещё один простой и очевидный способ смешивания каналов для Phaser-подобного движка, дающий иную гармоническую окраску как по сравнению с Earth Shaker, так и с Phaser — этот метод был назван CrossPhase (позже я также сделал на основе этой идеи движок Phaser4), и придуман простой способ фазовой модуляции двух каналов с 16-битными счётчиками — метод ModPhase. Таким образом движок Ear Shaver EX обрёл свою окончательную форму.
Было набросано ещё около пяти набросков, а новое звучание повсеместно проникло и в старые заготовки, и в новые треки. Далее работа шла туго, почти каждый следующий трек давался всё тяжелее и делался всё дольше — я хотел держать планку и по возможности не повторяться в идеях. Мало-помалу были дописаны Facemelter (конец января), Kinda Loud (начало февраля), Burning Bright (март), и Spinning Bits (начало апреля).
Минимум из восьми треков был готов, но я всё же решил следовать плану-максимуму — вместить как можно больше треков в одну загрузку для 48K. Для этого пришлось ещё немного доработать движок, чтобы музыкальные данные хранились более компактно (для уменьшения размера буфера распаковки) и лучше сжимались. На протяжении апреля были дописаны Adventure Time, Balls Of Steel и Ear Shaver.
По трекам
Небольшая тривия по некоторым трекам:
Adventure Time — название изначально подразумевало выражение ‘искать приключений на задницу’, но было упрощено за отсутствием возможности перевода на английский язык, который мог бы максимально точно передать все оттенки этой идиомы. Не имеет отношения к одноимённому популярному мультику, но я его знаю и видел несколько серий.
Alphabeard — типичная псевдо-арабская мелодика, к которой я обращаюсь наверное в каждом крупном релизе, потому что мне нравится эта окраска, но много разных треков в ней не сделаешь. Думаю, изначально этот интерес навеян Принцом Персии. Название подразумевает некоего вымышленного персонажа, похожего на Гигачада.
Ear Shaver — изначально я не планировал включать в альбом одноимённый трек, чтобы его отсутствие было фишкой, поэтому набросок до самого конца именовался Hard Labour, но в самый последний момент я решил, что его звучание и мелодические фразы подсказывают именно название альбома.
Spinning Bits — самый странный трек. Старался сделать мелодию максимально непредсказуемой и отступающей от традиционных гамм, поэтому трек почти хроматический, в нём нет всего одной ноты из всей хроматической гаммы. Многие уже называют его среди любимых треков на альбоме и слышат в нём отсылки к творчеству Гэри Ньюмана, с которым я не знаком.
Facemelter — название отсылает к знаменитой сцене из первого Индианы Джонса. На этапе набросков имел самое интересное звучание (эта часть в итоге стала интро), но долго не мог придумать продолжение, пока не придумал продолжение. По жанру получился какой-то стоунер рок, чем я доволен.
Balls Of Steel — очевидная для всех любителей бипера отсылка к титульному треку из игры Ping Pong, который я впервые услышал летом 1994 года, и это стало причиной моего последующего интереса к биперной музыке — несмотря на то, что тогда я уже был знаком со многими лучшими мелодиями на Денди. Я долго не мог определиться, хочу ли я делать близкий к оригиналу кавер, или свою собственную мелодию с похожими элементами, в результате в моём треке есть только узнаваемый начальный рифф и ритмический рисунок в качестве хомажа, в целом же это оригинальная композиция.
Kinda Loud — я делал многие наброски на седьмом под-движке (вариант Squeeker), обладающем очень громким и гнусавым тембром, и набросок мелодии вроде бы звучал хорошо, но очень громко, а в любом другом звуке становился довольно невзрачным. Я решил сделать это фишкой. Название отсылает к строке из песни Тараканов ‘если это слишком тихо для тебя, значит ты ещё не очень старый’. Получившаяся мелодия по настроению напоминает мне один из любимых 8-битных игровых треков, Riverside из игры Mighty Final Fight.
Noise In My Head — я уже несколько лет являюсь счастливым обладателем постоянного звона в ушах (если вы не слышали, по разным оценкам, 10-25% всех людей живут с таковым), и частота этого звона очень близка к частоте артефактов, слышимых в эмуляторах в биперных движках с чередованием каналов. Из-за этого мне иногда бывает трудно понять, то ли это свистит в самом треке (в данном треке при воспроизведении в Unreal Speccy много таких артефактов ресемплинга), то ли у меня в ушах. Отсюда и название.
Подготовка к релизу
Итого получилось 83 килобайта несжатых данных, упакованных с помощью apultra (оказался наиболее выгодным в данном случае) в 28 килобайт, и ещё 10.5 килобайт под буфер для распаковки самого большого трека. Свободной памяти осталось около пары килобайт в разных местах памяти, тогда как средний трек в сжатом виде занимает 2.5-3 килобайта. Возможно с ещё одной небольшой переделкой формата потенциальный 12-ый трек и влез бы, но у меня уже не осталось явно пригодных к работе заготовок, а имеющиеся треки при прослушивании не вызвали ощущения, что чего-то не хватает, да и просто хотелось поскорее закончить изрядно затянувшийся проект.
Написание оболочки альбома было начато сильно заранее, ещё когда было готово несколько первых треков, чтобы можно было заранее оценить расход памяти. Поэтому с завершением финального трека я очень быстро определил треклист по уже устоявшейся схеме ‘мощный хит — средние треки по нарастанию бодрости — странное отступление в середине — мощные боевики — лиричные треки как в концовке какой-нибудь игры’.
Оставалось только записать звук и видео. Казалось бы, что может быть проще, тут и статье конец, но...
Железные Спектрумы
Ещё в январе 2023 я также решил реализовать задумку с записью аудио и видео версий для релиза с реального Спектрума. Для этого, чтобы это сделать, нужен реальный Спектрум. У меня такового не было с начала 2000-х — свой Квант-БК я когда-то отдал товарищу, посчитав, что с современными мощными PC и эмуляторами он мне уже не нужен. Под рукой были продвинутые Sprinter и ZX Evolution, но я посчитал их недостаточно интересным для показа на видео (они выглядят как обычный современный PC с обычным монитором). Разумеется, самый надёжный и аутентичный вариант — взять оригинальную модель, но их почти нет в продаже, а цены весьма больно кусаются. Поэтому я решил купить советский клон попроще и подешевле. Так началась трёхмесячная эпопея, полная боли и страданий, закончившаяся в итоге полным фиаско.
Первый Спектрум был куплен на известной интернет-барахолке, которую нельзя называть, потому что вдруг это скрытая реклама (но это Авито), с доставкой из другого города за 3100. Это был Ленинград 48К то ли кооперативной, то ли любительской сборки, в типичном для них гранёном корпусе типа 'гробик' с 40-кнопочной клавиатурой из калькуляторных кнопок, однако, внезапно радикально сине-голубого цвета, и совершенно без каких-либо проводов для подключения. Последнее я не посчитал большой проблемой — уж что-что, а паять провода к своим спектрумам каждый спектрумист умеет с младенчества. Владелец заявил, что это его личный компьютер, и хотя он его давно не включал, он точно рабочий. Как оказалось позже, формально это так и было, но по факту он оказался не реагирующим на внешние раздражители кирпичом.
Во-первых, у него был реализован совершенно нестандартный видеовыход. Половина деталей аналоговой части отсутствовала, включая (ныне дорогостоящую и раритетную) транзисторную микросборку 1НТ251, оставшиеся детали все до единой имели не те номиналы и даже не тот тип (диод вместо резистора и.т.п.), а плата была основательно изрезана и переделана. Это касалось не только видеовыхода, на плате есть огромное количество доработок, в назначении большей части которых я до сих пор не разобрался. Пришлось искать отсутствующие детали и переделывать в сток, что не без труда, но заработало.
Тут же выяснилось наличие ‘во-вторых’: хотя компьютер включался и показывал заветную заставку, он никак не реагировал на клавиши. Поиск причины и безуспешная замена некоторых микросхем (входных мультиплексоров) вывели на чудесную неисправность: кнопки клавиатуры каким-то образом приобрели ненулевое сопротивление в разомкнутом состоянии (от килоом до сотен килоом), что не проявлялось при прозвонке в собранном состоянии. Пришлось сколхозить ужасно отвратительную, но работоспособную клавиатуру из тактовых кнопок, размещённых под колпачками оригинальных клавиш. На этом я решил, что проблемы решены, но, забегая вперёд, когда дело дошло до загрузки программы и записи, оказалось, что и это ещё не всё.
В процессе борьбы с синим Ленинградом, которая растянулась на два месяца и содержала несколько периодов полного опускания рук, на том же неназываемом Авито был приобретён ещё один Ленинград, точно такой же по конструкции и виду, но в более классическом чёрном пластиковом корпусе, за 3200. Совершенно точно гарантированно рабочий, со всеми проводами — продавец прислал видео с демонстрацией прекрасной работы.
Совершенно точно гарантированно рабочий чёрный Ленинград не заработал. Я полез внутрь, попутно обнаружив, что провода разъёмов держатся на последней жилке каждый, а звук и вовсе не выведен наружу (поэтому даже ничего не щёлкало при нажатии клавиш) — это было быстро исправлено. Выяснилось, что на плате отсутствуют какие-либо доработки, и мой ЭЛТ телевизор из начала 2000-х не хочет дружить с печально известным нестандартным видеосигналом. Возникшую идею попытаться доработать видеовыход, однако, почти сразу пришлось отбросить. Плата оказалась откровенно гнилая, вероятно балконного хранения, дорожки зеленились и весело отлетали при касании их паяльником. Ковырять это дело далее это я не решился.
Вскоре от коллеги был получен ещё один, третий Спектрум, его личный Contact 64, радикально доработанный до 128K+Beta+AY, однако, в несколько чумазом и несобранном состоянии. Думаю, это лучший вариант, и он бы заработал, но до приведения его в порядок на момент записи у меня банально не дошли руки, так как всё время ушло на Ленинграды.
Также стоял вопрос загрузки программы в Спектрум через аудиовход. Для этих целей можно было использовать много чего, от реального магнитофона до мобильного телефона, но так как я планировал съёмку видео, был выбран необычный и визуально интересный вариант: я приспособил для этого дела портативный DIY-девайс ESPboy авторства Романа Соколова (который задонатил мне несколько штук разных версий), портировав туда TZXduino и добавив поддержку обновления файлов по WiFi. Это вообще-то само по себе уже проект, который был сделан мимоходом за пару дней в рамках общей работы над альбомом.
Запись
Первая попытка записи была предпринята с синим Ленинградом. Новое ‘во-первых’ свело на нет идею записи альбома на видео. Во время изменений цвета бордюра, например, на загрузочных полосках, растр на этих строках съезжал на несколько пикселей, что давало дичайшие искажения картинки, и это выглядело совершенно непрезентабельно. Эта проблема описана в литературе и требует переделки видеовыхода с добавлением новых трёх микросхем. Новое ‘во-вторых’ отмело и идею записи звука: альбом звучал совершенно неправильно, а через некоторое время и вовсе зависал и сбрасывался. Была не та скорость и высота звука, я так полагаю, из-за какого-то нестандартного торможения процессора сигналом WAIT, скорее всего связанного с портом #FE — при этом игра Jet Pac, например, работала корректно. Данная проблема в литературе не описана, копать же схему для устранения этих проблем я не захотел, так как это могло занять неопределённое время, недели и месяцы.
Была сделана и вторая попытка. Я решил пожертвовать аутентичностью, и попробовать записать видеоролик хотя бы с помощью ZX Evolution. Увы, годом ранее я заменил свой старый SVGA монитор, который поддерживал нестандартную (начинаю замечать в этом некий паттерн) развёртку Evo, и сейчас выяснилось, что приобретённый ему на замену классный мультимедийный Sony тех же годов выпуска такой сигнал принять уже не может. Искать ещё один монитор или придумывать очередные провода к телевизору желания не возникло. В конце концов, визуально с точно таким же успехом можно было снять любой PC с эмулятором.
Поняв, что решить проблему записи с реального железа я быстро не смогу, а релиз и так отставал от первоначальных планов на четыре месяца, я сдался, и снова записал звук и видео с эмулятора. Может быть со временем доведу до ума один из Спектрумов (лучший претендент — Contact), и сделаю альтернативную запись.
Релиз
Далее была обычная рутина с рендерами, конверсиями и релизом на обычных и прочих площадках: Bandcamp, Soundcloud, Youtube, VK. Опытный товарищ посоветовал зайти на стриминговые площадки через агрегатора, и хотя я думаю, что это движение максимально бестолковое для столь нишевого релиза, не имеющего какого-либо продвижения, сделать это было достаточно просто, поэтому я всё же опубликовал альбом и там — сейчас его можно найти на всяких Spotify, iTunes и Яндекс Музыках. Также есть не очень уверенный план подготовить маленький тираж физической CD-версии, в случае реализации которого имеется вероятность заполучить экземпляр по сходной нескромной цене лично из моих рук на ближайших около-Московских демосценовых и ретроигровых мероприятиях.