Beepolyator - конвертим биперы из миди

Добрый день.

Последние несколько месяцев я писал, и вот, наконец выкладываю в открытый доступ программу — Beeopolyator
Биполятор — это программа конвертер, которая переводит любую музыку формата midi в музыку на биперном движке zx16 (16 каналов)

Программа умеет делать:

  • Загружать midi и конвертировать в формат zx16
  • Разделять музыку на инструменты и задавать отдельные настройки для каждого
  • Обрабатывать питчи
  • Имитировать ударники

  • Впихивать музыку в заданный объём памяти
  • Настраивать скорость, обрезку мелодии
  • Сжимать музыку, отыскивая одинаковые паттерны
  • Может что-то забыл...

Вот интерфейс программы:



Рассмотрим его:

  • Поле слева — список инструментов миди файла и их количество нот/максимальная полифония
  • Поле справа — настройка звучания каждого инструмента в отконвертированном файле
  • Открыть, конвертировать — понятно, рабочие кнопки
  • Скорость — выпадающий список значений скорости. Значения определяют шаг по миди файлу.
    Программа сама при загрузке определяет наиболее подходящую скорость, но вы можете поменять
  • Транспонирование — Можно сделать мелодию выше/ниже
  • Преодоление переполнения — флажок, если установить который,
    будет большая полифония, но большее потребление памяти

  • Смещение выборки — ползунок, применяющийся в случаях когда ноты стоят не ровно и скачат или
    пропадают в отконвертированном файле
  • Барабаны, только барабаны — Настройка конвертирования барабанов. Их можно отключить или оставить
    только их
  • Константы на выходе — как будут обозначаться байты в выходном асмовом листинге
  • Памяти доступно — объём памяти, в который нужно впихнуть музыку

  • Начать с такта — с какого такта начать конвертировать. Служит для убирания паузы в начале миди трека


Рассмотрим поподробнее поле справа — обработка инструментов. В нём производится настройка звучания каждого инструмента.
  • Использовать — галочка, означающая использование этого инструмента. Если её снять, то этот
    инструмент не будет использован в
  • Тест — Прослушать звучание инструмента в оригинале. Это помогает при конвертировании
  • Справка — справка по циферкам в настройке голоса
  • Выпадающий список — в нём находятся пресеты для биперных инструментов
  • Добавить — добавить инструмент в список
  • Текстовое поле — ввод информации о голосах

Вообще, процесс конвертирования в этой проге — это сопоставить инструменты из миди биперным инструментам. Так что же такое биперные инструменты?
Биперные инструменты состаят из голосов. Каждый голос имеет свои настройки и зависит от основного тона.
Вот пример — в миди файле нота C-1.
А инструмент такой: (На русском языке)
1-ый голос — основной тон, держать всё время
2-ой голос — на октаву выше, держать 2 позиции
3-ий голос — на две октавы выше, держать 1 позицию.

На языке движка это записывается вот так:
  • 0.0.0.0.0
  • 12.0.0.0.2
  • 24.0.0.0.1

И будет играть так — сразу заиграет 3 канала — C-1, C-2, C-3. Через 1 «тик» будет C-1 и C-2, и ещё через один будет только основной тон играть — C-1

Рассмотрим что значит каждая циферка —
  1. — Смещение в полутонах от основного тона (ноты в миди файле). Может быть как положительным так и отрицательным

  2. — Минимальный уровень громкости для игры голоса. В миди файле есть понятие громкости. В бипере — нет,
    поэтому я ввёл такую систему. То есть, если тут написано 100, а нота с громкостью 50, то голос не будет запущен.
  3. — Байт слайда. Движок поддерживает такие звуки, как бы иии-ууу

  4. — Задержка перед игранием голоса. Голос начнёт играть не сразу, а через введённое время
  5. — Время игры голоса. Служит для угромчения вначале. 0 — играть вечно.

Но основные параметры — первый и последний. Смещение и время игры.

Алгоритм конвертирования такой:
Нажимаем «открыть» и выбираем миди файл, долго не думая, нажимаем конвертировать, он конвертируется, закроем вылезшее окошко, оно нам пока не нужно.
Смотрим на список инструментов, нажимаем на них, и задаём им соответстваия из выпадающего списка биперных инструментов или создаём инструмент сами. Ненужные инструменты отключаем. Нажимаем «Конвертировать» и слушаем. Если что не так, меняем, опять конвертируем и так до достижения нужного результата.

Вот и весь алгоритм, но есть хитрости, которые я понял в процессе работы с конвертером:
  • Лучше всего быстрые хеви-метал композиции. У них небольшое количество инструментов, с небольшими аккордами.
    И звук перегруженной гитары похож на звук бипера. Конверты получаются не такими тяжелыми, но бодрыми
  • Всякие Strings и мягкие пэды надо сразу убирать, они всё портят своей полифонией.
  • Барабаны играют не очень хорошо, мало музык находится чтоб они хорошо подходили. Но если сильно охота, то
    можно следовать следующему алгоритму:
    1.Отключаем Hi-Hat-ы и прочие тихоиграйки
    2.Находим 2 барабаны с самым большим количеством нот (первое число в списке инструментов)
    3.Оставляем только их (без Hi-Hat-ов). Обычно это Bass drum и Snare
    4.Слушаем и действуем по ситуации
  • Всегда смотрите на максимальную полифонию инструмента (второе число). Оно показывает максимально взятый
    аккорд этим инструментом. То есть, если там 5, а вы поставили этому инструменту 3 голоса, то будет 15 голосов в сумме, а движок только 16 поддерживает. Это значит, что, возможно эти ноты не все влезут и следующим нотам будет ставиться некуда. К тому же, большие инструменты потребляют много памяти.
  • Если пропускаются ноты, подвигайте ползунок «смещение выборки». Можно сразу на середину, помогает
Чтобы запустить отконвертированную музыку, надо соеденить выходной music.asm с исходником движка. В папке asm есть ассемблер и сам движок, но этот ассемблер плохо работает на новых виндах, поэтому, если кто-то перепишет всё на sjasm, буду признателен.
Если же у вас 32-х разрядная версия виндоус, можете перетащить все файлы из папки asm в папку с прогой и после нажатия «конвертировать» запустить compile.bat и всё ассемблируется и запустится.
Пока всё. Потом расскажу ещё.
А вот сам конвертер:
yadi.sk/d/gCco5aeNi2xzq
А вот примеры отконвертированных музык:
yadi.sk/d/jgJXOxr8hwbfb
yadi.sk/d/P0NbDimjhwXKg
Хочу выразить благодарность Михаилу Перцовскому за тестирование и подкидывание идей.

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

avatar
Если найдёте баги и глюки — пишите, спешил, может накакосячил
avatar
пока — просто обалдеть затея :)
  • VBI
  • +1
avatar
Насколько сабж использовался в реальных демосценовых условиях? Работы на компо на нем делались или вошли в какие-то проды может быть?
avatar
Музыка Cascade с дихальта, Beeper cigar с 3bm и в деме Mapped Show
avatar
mus.TRD — охренеть!
avatar
Прелесть. Был бы дядя Ян жив, он бы тебе Нобелевскую премию вручил.

Теперь ZX16 не хватает только конвертера xm-в-tap.
avatar
Конвертер из xm есть, он на биперном форуме, который сейчас недоступен
avatar
Старый биперный форум закрыт. Запущен новый, но с чистого листа: randomflux.info/1bit/
avatar
Другой появился вместо него.
avatar
ХОТЕТЬ!!11! Жаль, что старый форум закрылся — киньте ссылку :)
avatar
Пожелания:
1) После сопоставления инструмента с биперным инструментом запоминаются параметры (цифры), если вернуться обратно на этот инструмент — выводятся сохраненные цифры в поле инструмента, но не его название. Неудобно…
2) Тестовое прослушивание биперных инструментов возможно реализовать? Хотя бы предустановленных...?
3) Хотелось бы сохранение проекта — путь/имя midi, сопоставленные пары инструментов…
avatar
Для затравки: случайно получилось, по наитию «Save the Robots»
avatar
Быстрый вопрос: а почему было принято решение так жёстко связаться с конкретным движком? из-за числа каналов? Мне просто кажется, что некий промежуточный формат мог бы быть полезен, чтобы добавить возможность подбора ещё и движка, который бы давал наиболее подходящий звук.
avatar
ZX16 поддерживает мнго каналов, а для миди это важно, так как там частые аккорды. И можно менять звучание, делая инструменты в несколько голосов.
avatar
Пора на пати стадии для музыки запрашивать? :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.