Как моя лень создала нечто путное: написал программу, который превращает текст в готовые миди мотивы для создания треков в FL Studio или еще где.
Привет, vc.ru! На связи диванный продюсер, битмейкер-самоучка и по совместительству веб-разработчик.
Если вы хоть раз открывали FL Studio, то знаете эту боль. У тебя в голове родился гениальный текст. Ты садишься за комп, открываешь Piano Roll, и... начинается дурдом.
Ты сидишь часами, вытыкая мышкой каждую ноту под каждый долбаный слог. В слове ПРИВЕТ, слог «при-» покороче, слог «веееет» подлиннее.
В результате проклинаешь музыкальную теорию, теряешь вдохновение, закрываешь программу и идешь в магаз за веселящим.
На прошлой неделе моя лень достигла апогея. После очередных двух часов «тыканья мыши по сетке» ради четырех строчек припева, я психанул.
«Я ж программист или кто?» — подумал я. Короче, написал программу на PHP, которая делает всю грязную работу за меня.
В чём магия? (Технический кач на чистом PHP)
Концепт простой: пользователь пишет текст, а скрипт на бэкенде налету разбивает слова на слоги и упаковывает их в стандартный бинарный MIDI-файл (SMF 0/1). Но если просто нарезать слоги одинаковыми плашками, получится роботизированный марш. Музыка так не работает. Музыка должна качать.
Картинка верх проги
Поэтому я научил алгоритм нескольким годным вещам:
1. Распознавание человеческих ударений. Русский язык — коварная штука. Чтобы мелодия не звучала уныло, я сделал фичу: выделяешь ударную гласную ЗАГЛАВНОЙ БУКВОЙ (например, «Я тебЕ открОю тАйну»), и бэкенд автоматически растягивает этот слог ритмически, а также бахает ему максимальную громкость (Velocity). Безударные слоги при этом быстро «пролетают» на коротких 16-х долях.
2. Музыкальная математика. Каждая строчка текста жестко квантуется ровно в один музыкальный такт (384 тика). Сколько бы слогов там ни было, они идеально распределятся по сетке FL Studio, не ломая ритм.
3. Туда же я докинул Velocity Humanize (случайный разброс громкости, чтобы трек звучал «живо», а не как робот) и выбор ритмических стилей (от качающего поп-грува до быстрого трэп-потока).
4. Чтобы юзер мог оценить шедевр до скачивания, я прикрутил полифонический плеер на Web Audio API и отрисовку сетки Piano Roll на HTML5 Canvas. Меняешь текст — картинка перестраивается на лету. Нажимаешь «Play» — браузер сам синтезирует звук (мелодия синусоидой, басы — треугольной волной).
Картинка низ проги
Что в итоге?
При импорте сгенерированного MIDI-файла в FL Studio продюсер получает идеальный многоканальный скелет: зеленая дорожка вокальной мелодии (где каждый слог подписан текстом прямо на нотной сетке!) и синяя дорожка басовых аккордов, которые переключаются строго по тактам. Закидываешь туда свои синты, наваливаешь кастомные ударные со сбивками — и демо-версия трека готова за 10 минут вместо 5 часов.
И главное — 100% чистые авторские права, никаких ИИ-галлюцинаций и заблокированных треков на стримингах. Чистая математика.
В планах на днях: расширить бэкенд до генерации полноценной структуры трека (Интро — Куплет — Припев — Бридж — Аутро) с автоматическим разделением на 5 независимых MIDI-стем (Bass Line, Chords Pad, Arpeggiator, Counterpoint).
Как вам такой костыль для ленивых музыкантов? Жду вашего мнения в комментариях!