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
Рассмотрим что значит каждая циферка —
- — Смещение в полутонах от основного тона (ноты в миди файле). Может быть как положительным так и отрицательным
- — Минимальный уровень громкости для игры голоса. В миди файле есть понятие громкости. В бипере — нет,
поэтому я ввёл такую систему. То есть, если тут написано 100, а нота с громкостью 50, то голос не будет запущен. - — Байт слайда. Движок поддерживает такие звуки, как бы иии-ууу
- — Задержка перед игранием голоса. Голос начнёт играть не сразу, а через введённое время
- — Время игры голоса. Служит для угромчения вначале. 0 — играть вечно.
Но основные параметры — первый и последний. Смещение и время игры.
Алгоритм конвертирования такой:
Нажимаем «открыть» и выбираем миди файл, долго не думая, нажимаем конвертировать, он конвертируется, закроем вылезшее окошко, оно нам пока не нужно.
Смотрим на список инструментов, нажимаем на них, и задаём им соответстваия из выпадающего списка биперных инструментов или создаём инструмент сами. Ненужные инструменты отключаем. Нажимаем «Конвертировать» и слушаем. Если что не так, меняем, опять конвертируем и так до достижения нужного результата.
Вот и весь алгоритм, но есть хитрости, которые я понял в процессе работы с конвертером:
- Лучше всего быстрые хеви-метал композиции. У них небольшое количество инструментов, с небольшими аккордами.
И звук перегруженной гитары похож на звук бипера. Конверты получаются не такими тяжелыми, но бодрыми - Всякие Strings и мягкие пэды надо сразу убирать, они всё портят своей полифонией.
- Барабаны играют не очень хорошо, мало музык находится чтоб они хорошо подходили. Но если сильно охота, то
можно следовать следующему алгоритму:
1.Отключаем Hi-Hat-ы и прочие тихоиграйки
2.Находим 2 барабаны с самым большим количеством нот (первое число в списке инструментов)
3.Оставляем только их (без Hi-Hat-ов). Обычно это Bass drum и Snare
4.Слушаем и действуем по ситуации
- Всегда смотрите на максимальную полифонию инструмента (второе число). Оно показывает максимально взятый
аккорд этим инструментом. То есть, если там 5, а вы поставили этому инструменту 3 голоса, то будет 15 голосов в сумме, а движок только 16 поддерживает. Это значит, что, возможно эти ноты не все влезут и следующим нотам будет ставиться некуда. К тому же, большие инструменты потребляют много памяти. - Если пропускаются ноты, подвигайте ползунок «смещение выборки». Можно сразу на середину, помогает
Если же у вас 32-х разрядная версия виндоус, можете перетащить все файлы из папки asm в папку с прогой и после нажатия «конвертировать» запустить compile.bat и всё ассемблируется и запустится.
Пока всё. Потом расскажу ещё.
А вот сам конвертер:
yadi.sk/d/gCco5aeNi2xzqА вот примеры отконвертированных музык:
yadi.sk/d/jgJXOxr8hwbfb
yadi.sk/d/P0NbDimjhwXKg
Хочу выразить благодарность Михаилу Перцовскому за тестирование и подкидывание идей.
15 комментариев
какосячилТеперь ZX16 не хватает только конвертера xm-в-tap.
1) После сопоставления инструмента с биперным инструментом запоминаются параметры (цифры), если вернуться обратно на этот инструмент — выводятся сохраненные цифры в поле инструмента, но не его название. Неудобно…
2) Тестовое прослушивание биперных инструментов возможно реализовать? Хотя бы предустановленных...?
3) Хотелось бы сохранение проекта — путь/имя midi, сопоставленные пары инструментов…