Комментарии 34
О, прикольно. Когда-то сам писал подобную полифонию и штук 6 разных барабанчиков ещё к ней :) неплохо звучало для бипера.
А потом сопроцессор появился, AY или как его там...
Помню на КР580ВМ80А (Радио-86РК) спикер подключали к линии INTE (выходной сигнал разрешения прерываний) и генерировали звук последовательным исполнением инструкций EI/DI. Каждая инструкция занимала по одному байту и исполнялась за 4 такта, что позволяло гененировать достаточно высокие частоты или делать "полифонию".
Одним битом можно воспроизводить даже голос, используя сигма-дельта модуляцию (в игре Robin of the Wood например), а в современном мире он эволюционировал в формат DSD для компакт-дисков.
Осталось только вспомнить, какой объём оно занимает, и сразу становится ясной применимость оного. И это не говоря про частотный диапазон.
а что там ZX пытался произнести? мне было около 10, когда я в это пробовал играть, сам эффект был крут, но скрип вышел совсем непонятный. Вероятно, дело было ещё и в не совсем честном тактовом генераторе, возможно, отец тогда (он сам его спаял) ошибся в схеме и тактовая частота была где-то вдвое ниже референсной.
Z80 все-таки был слишком медленный для биперного звука. Даже для такого шедевра, как "Хронос" Тима Фоллина, нужно достаточно богатое воображение, чтобы все услышать. А вот на PC трекеры уже могли создавать вполне полноценную музыку.
Да, на 3.5 МГц его хватает впритык. На системах, где скорость повыше, типа 6-15 МГц на калькуляторах Texas Instruments, со звучанием получше.
Всё там было слышно и отложилось в памяти навсегда. И партия гитары, и фоновый синтезатор, и "ритм-секция" :)
Меня много лет заботит один вопрос. Обычный PC Speaker в х86 компьютере - это такой же бипер, со своим таймером.
Помню, что то ли в Windows 3.11, то ли в 95 был специальный драйвер, который превращал его в плохенькую звуковую карту. На тот момент, без нормального звука это был просто космос. И меня до сих пор мучает вопрос, какая математика того процесса была. Играл, на сколько я помню, вполне себе сносно (разобрать можно было). Даже не знаю где и как искать инфу.
Спикер с таймером подобен спикеру без таймера. Но с таймером. Как раз в этом и трюк: на PC Speaker можно одним каналом выдавать очень короткие импульсы-щелчки разной длительности, а другим генерировать регулярные прерывания, на которых запускать эти щелчки. Таким образом получается ШИМ, примерно аналогичный 6-битному ЦАП с частотой дискретизации 18 кГц. Эти значения исходят из тактовой частоты таймера, чтобы вышло кратно.
Спасибо большое! Стало немного понятнее. Я предполагал, что там получается ШИМ.
Про прерывания не очень понял, если не сложно развейте мысль.
Там полу-программный ШИМ. Канал может формировать одиночный импульс заданной продолжительности, но не может сам по себе запускать этот импульс. Для этого нужна периодическая процедура, она реализована через регулярное прерывание с заданной частотой, которое выдаёт другой канал таймера. Примерно 18 тысяч раз в секунду оно срабатывает, и его обработчик запускает импульс нужной длины.
Я подумал, это же тоже хорошая тема для статьи, цифровой звук на PC Speaker'е, там есть про что рассказать — не Спектрумами едиными.
Тоже помню драйвер PC Speaker для Windows 3.11. Не из дистрибутива ОС, а был где-то найден отдельно. В дистрибутиве такого не было.
Возможно даже, что это оно: https://archive.org/details/win31pcspeakerdriver
В DOS-вирусах частенько тоже что-то играло. Были даже отдельные сборники, где можно было посмотреть/послушать спецэффекты, выдранные из вирусов (без самих вирусов).
"Не трогай компьютер, болван" (ц)
Когда-то давно попалась мне одна программка, которая играла звуки на скрипере, к ней правда был только bolvan.snd с вон тем текстом. А математика там могла быть разная, ЕМНИП скрипер имел в БИОСе подпрограмму для задания частоты, на которой пищать, но под капотом там мог быть такой же "on-off" механизм для вывода, и дальше опять ШИМ и сэмплируй как умеешь.
Для полноты картины по истории биперной музыки в древние времена можно упомянуть отечественную книжку 1971 года с программой для транзисторной ЭВМ "Днепр"
https://publ.lib.ru/ARCHIVES/V/VASILENKO_Vladimir_Abramovich/_Vasilenko_V.A..html#0001
Я знаю, что мой вопрос ниже глупый и нубский, все таки не моя стихия, но прошу Вас помочь мне расжевать. Вопрос такой: можно ли эти звуки как-то улучшить звуки/музыку при помощи современного ПО/синтезаторов, если допустим я решил сделать ремейк игры или так и будет - "биликанье"? (Всегда звуками/музыкой занимались другие люди - спецы своего дела, когда я занимался играми. Лично моё мнение, каждый должен заниматься своим делом, в чем он спец).
Ха! А это тема, взять музон из Trantor или Mig29 и загрузить его в riffusion!
Правда за это теперь денег хотят ;-(
Да, можно улучшить исходное оригинальное звучание, освободив его от артефактов, которые в оригинале есть из-за компромиссов, недостаточной точности вычислений и тому подобного. Такие эксперименты проводились. Например, в этом примере с музыкой из игры Savage реконструирован алгоритм синтеза в MATLAB и проигрываются оригинальные данные. А в примере с музыкой из Agent X II оригинальный трек разложен на дорожки и сведён, как если бы это была нормальная аудиозапись.
Также можно взять оригинальные музыкальные данные и проиграть совершенно другим синтезатором. Сходу примеров не назову, но это может звучать хорошо. Ну или традиционный подход — просто заново написать и аранжировать музыку по оригинальной мелодии, есть бесчисленное количество кавер-версий на самые разные игровые мелодии.
Когда-то прямо очень давно я разобрал по нотам несколько мелодий из своих самых любимых игр - Zorro, Thanatos, Saboteur, Pentagram, Knight Lore, чтобы играть их на гитаре. Но по звучанию это было вообще не то( Я списывал это на свою криворукость, но - после узнал про такое понятие как "темперация", которая может быть натуральная, равномерная, не-равномерная типа пифагорейская или "хорошо темперированная" увековеченная товарищем Бахом, и что гитара в принципе не может играть ни в одной из них. Ещё позже узнал, что есть любители делить октаву не на 12 хроматических тонов - а на 19, 22, 24, 31 и даже 53. И некоторые из произведений таких товарищей действительно звучали чуть более интереснее обычного. А настоящим открытием оказалось, в одной из ваших статей, что и на 8-битных компьютерах тоже всё неровно с темперацией, что с равномерной, что с натуральной, и это сразу всё объяснило. А самое интересное - буквально месяц назад я нашёл способ вычисления частоты сигнала с точностью вплоть до 15-го знака после запятой через сдвиг фаз по аналогии с FM-радиовещанием. Решая, правда, совсем другую задачу, но тем не менее - получается, сейчас любую мелодию можно разобрать по частотам без всякого реверс-инженииринга с предельной точностью. И соответственно воспроизвести, как полагается. Жаль только, что товарищи из Steinberg так и не догадались в формат VST3 добавить возможность воспроизведения ноты по конкретной частоте, или хотя бы явное указание EDO.
Улучшить можно, но не всегда нужно. Некоторые вещи прекрасны в своей простоте. В случае 1-битной музыке не повредит разве что отфильтровать ВЧ шумы ещё на этапе синтеза и наложить импульсный отклик по типу гитарных комбиков и с лёгкой реверберацией.
Ну а если речь идёт о конкретной игре с конкретной музыкой - так назовите её.
Чего бы мне хотелось немного "улучшить" - Atari - Zybex, Spectrum - Rambo III
https://youtu.be/-mibfApzelk?si=if5fhHrM9CYow1C8 - здесь Рэмбо 3 22:10
https://youtu.be/q_0HzLg3IAI?si=8efyJ3H_qBy39fBy - Atari - Zybex, главный экран
Улучшить музыку - предложу тут современный "халявный" способ (но за деньги). Известный Suno имеет платную опцию "Cover". Когда-то попробовал применить её к записям музыки из игр ZX Spectrum и PC - и результат только порадовал. Вот плейлист удачных генераций: https://suno.com/playlist/873b3108-5306-4290-9dfe-fc897638e9c2
А вот FLAC версия, на случай если Suno субъективно достаточно качественно генерирует музыку:
https://disk.yandex.ru/d/07CXAkYbo4lilg
(и если тут разрешены ссылки на я.диск)
Половину статьи трудно воспринять из за обилия кода. Так глубоко в музыке мало кто ковырялся в то время, только специалисты. А меня очень поразила при первом запуске и до сих пор в шоке на спектруме от бипера музыка в игре " Rescue" а когда через магнитофонный динамик послушал я просто выпал. Как так качественно можно закодить электронную музыку в маленький бипер!! Мож кто исследование потом напишет по этой игре. Что там за музыкальные хаки были. Интересно !
В Rescue действительно очень хорошая мелодия. Технически там всё стандартно. Это подвид музыкального движка, который создал неизвестно точно кто, но примерно одновременно его стали применять Джонатан Смит (программист) и Кит Тинман (музыкант) из SpecialFX Software и Дэвид Уиттакер в играх разных компаний. Самый первый раз движок был задействован вероятно в первой части Dizzy, и предположительно первая его реализация была сделана кем-то ещё — в те времена все копировали друг у друга удачные решения. Два канала тона, 8-битные делители, сверхтонкие импульсы по переполнению с постепенным спадом ширины импульса, в одном канале импульсы чуть шире, прерывающая перкуссия. Я сам написал на этом движке пару десятков треков, а также сделал несколько улучшенных версий.
Биперные музыкальные движки на ассемблере Z80