НОВОСТИ Лайфхак для битов

Alvaros
Онлайн
Регистрация
14.05.16
Сообщения
21.452
Реакции
101
Репутация
204
Дзень добрый, комрады.

Решил я как-то упростить себе часть музыкальной жизни, а именно автоматизировать выбор сэмплов для музыки (или, скорее, для «битов»).

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



Чтобы быстрее получить результат, упростим наши требовани к музыке:
Будем строить наш трэк из трёх компонентов:
— Перкуссия
— Бас
— Мелодия

И будем сравнивать компоненты по двум параметрам:
— Тональность
— Темп

В целом, с этими «правилами» музыка уже будет достаточно гармоничной.




Что нам нужно, чтобы всё работало? Исходники — разные сэмплы для каждого из трёх компонентов. И программа, которая будет эти исходники рандомно комбинировать и показывать результат.

Алгоритм такой:
— Выбираем рандомное число от 50 до 180 (темп; вполне могут быть другие границы, по хорошему, нужно задать минимальный и максимальный темпы имеющихся аудио сэмплов)

— Далее выбираем рандомную букву от A до G (тональность)
— С вероятностью 40% добавляем к букве # (более мелкая подстройка тональности)
— С вероятностью в 50% добавляем к тональности букву m (определяем, если тональность будет минорная — грустная, или останется мажорной — весёлой)

— И потом парсим уже подготовленные файлы (перкуссия, бас и мелодия у нас лежат в корне по папкам drums, bass и melody)
**Здесь я воспользовался хитростью, темп и тональность сэпмла указывается в названии файла, но, на деле, это один из лучших незатратных способов передать данные о сэмпле в код.

— Для удобства я добавил три кнопки:
— Save — если комбинация понравилась, можно сохранить все дорожки раздельно в папку и потом уже использовать в DAW или где угодно
— Next/Prev — чтобы передвигаться по истории сгенерированных «комбинаций»

Из-за имеющегося опыта, в плане кода я остановился на связке Kotlin+Swing (для UI)+JSyn (для воспроизведения аудио).

На выходе у нас получается простенькое окно со всей нужной информацией:
g6iic7bjniqbcv-gmqpltith-xe.png

ophzr3njld8mikun3lm1xx0zwcq.png


Пример работы программы:




Из улучшений, запланированных и незапланированных, вполне можно добавить более умный выбор темпа (не рандом между А и Б, а пройти по всем папкам и динамически выбрать рамки). Ещё можно использовать не три дорожки, а больше. На FX, на эффекты. Можно сделать генерацию миди мелодий, скармливать «инструментам», накладывать какие-то тоже рандомно выбранные фильтры и эффекты — и в итоге у нас получится практически бесконечное процедурное радио.

tzgsg7h6szensuluzz4hv8ftlcq.png




Исходники программы:

Структура директории:
root
— data
— — drums
— — bass
— — melody
— Kaleidophone.jar
— Kaleidophone.exe

Всем спасибо за внимание!
Жду и надеюсь на идеи и комментарии.
Хорошего дня!
 
Сверху Снизу