Доработал свой HTML-скрипт конвертора.
Если раньше на конвертацию, больше всего ручную, уходили часы! То сейчас - менее одной минуты.
- Открываем любую мелодию в Vortex Tracker
- Экспортируем её в текстовый формат
- Загружаем в конвертор
- Получаем готовый RKR-файл
Правда, ещё предстоит разобраться с темпом и октавами в конверторе.
Вот, например, как звучит Арканоид: Music_Arkanoid.rkr.zip
Если углубляться и делать всё на высоком качественном уровне, необходимо учитывать орнаменты и семплы, где я вообще не в курсе на данный момент.
Но ведь Специалист не вырабатывает звук командами DI/EI?
Последний раз редактировалось Alikberov; 22.12.2023 в 18:12.
Может быть поможет конвертер и плеер DenisGrachev-а, там можно подсмотреть что делается с орнаментами и семплами -- https://github.com/DenisGrachev/vt2vi53
Больше игр нет
Собственно, если кому интересно, выкладываю исходный текст код MUSIC_3-PUBLIC.ASM.zip на ассемблере с некоторыми комментариями.
Каждая строчка прокомментирована с указанием количества тактов. Такты с точкой указывают на то, что команда стоит лишь для задержки.
В частности, указаны такты от инструкции EI до DI, которые формируют разную скважность генерирумого меандра, что позволяет достичь ШИМ-эффекта для модуляции амплитуды.
Код достаточно прост и состоит из однотипных фрагментов для озвучивания различного состава "голосов".
В отличии от "Музыкальной Системы", код не модифицирует сам себя, перезаписывая в циклы JMP/JNZ для обхода "молчащих" голосов, а прыгает в соответствующий цикл. Это позволит, в перспективе, запускать код прямо в ПЗУ.
Данный вариант кода поддерживает строгие 100 тактов на цикл практически везде, где только возможно, что гарантирует также и стабильный темп проигрывания. Счётчики работают на инкремент, чтобы высокие частоты соответствовали высоким значениям счёта.
CityAceE (23.12.2023), Oleg N. Cher (23.12.2023), svofski (23.12.2023)
Записал видео специально для просмотра с любого устройства:
И немного классики:
Последний раз редактировалось Alikberov; 24.12.2023 в 19:10.
CityAceE (24.12.2023), Oleg N. Cher (24.12.2023), zebest (25.12.2023)
Наткнулся на 1tracker, откуда узнал про Beepola и сделал для себя открытие!Дело в том, что неделями ранее я писал код на два голоса полифонии + сэмпл с любой формой. При этом, сэмпл воспроизводился как третий голос. Всё это вымотало мне много нервов, так число тактов на одну итерацию полифонии переваливало за 200!
- Из игры Savage. Оригинальный код разработан Jason C. Brooke и использовался в ряде игр компании Probe. Два тональных канала, длительость нот фиксирована, изменяемая скважность, слайды. Пять ударных инструментов, прерывающих звук. С помощью слайдов и комбинирования каналов можно получить дополнительные звуки ударных.
(Для сравнения, нынешный код укладывается тремя голосами ровно в 100 тактов!)
То есть, нужно снова написать весь код с нуля именно на два голоса, убрать из трека байт о длительности нот (сейчас каждая строчка паттерна имеет свой байт длительности).
Иначе говоря, при написании кода я поставил себе достаточно высокие требования. Хотя, для воспроизведения оригинальных треков Savage хватит и меньшего.
А учитывая разницу в частотах процессоров РАДИО-86РК и ZX-Spectrum, задача была слишком трудоёмкой для меня.
P.S.: В общем, как-то так...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кое-как добавил таймер (Счёт паттернов : Счёт строк), а также и заголовок файла, не нарушив качество воспроизведения.
Последний раз редактировалось Alikberov; 25.12.2023 в 21:00. Причина: Дополнил код
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)