Русский
Русский
English
Статистика
Реклама

Практическое использование автогенерации музыки

На сайте регулярно появляются статьи про автогенерацию музыки или об авто-аккомпанименте. Некоторые в качестве результата воспроизводят невнятное бибикание, у некоторых получается писать вполне человеческую музыку.

В данной статье описывается реализация авто-аккомпанимента для аккордовых прогрессий.

Идея

Сделать возможность подобрать и прослушать звучание аккордов в разных стилях. Работать все должно просто, желательно поменьше кнопок и пунктов меню.

Реализация

Как выглядит веб-версия можно посмотреть здесь:

Как видно, кнопок достаточно много, но гораздо меньше чем у подобных программ.

Сделано всё на JavaScript, поэтому хорошо работает как в браузере, так и в Android-приложениее собранном с Cordova.

Автогенерация

Автогенерации музыки несколько сотен лет (см. https://ru.wikipedia.org/wiki/Музыкальная_игра_в_кости ). Обычно используются наборы паттернов (рифов или музыкальных фраз) которые транспонируют под выбранные тональности.

Для воспроизведения используются 4 стандартные в современной музыке линии:

  • Drums - барабаны, задают ритм

  • Bass - басовая линия

  • Lead - мелодия или рифы

  • Pad - долгие звуки (контрапункт) для окраски аккордов

Подготовка паттернов это достаточно сложная задача. Они должны храниться в виде ступеней лада для удобного транспонирования. Для каждой линии подготовлено по нескольку десятков паттернов с разными инструментами.

Кроме того, есть особые требования к рифам - они должны хорошо играть в разных вариациях. Например нет никаких технических препятствий для добавления гитарных рифов из Metallica, но они слищком специфичный и в большинстве прогрессий будут звучать плохо.

Каждый паттерн должен звучать и не плохо и не хорошо. Так, средне, не туда, ни сюда. Иначе в одних прогрессия он будет звучать хорошо, а к другим не подойдет совсем.

Звук

Сервис для музыки должен хорошо воспроизводить музыку, что естественно.

В программе использовался набор сэмплов https://github.com/surikov/webaudiofont . Он содержит сотни инструментов, есть 10-ти полосный эквалайзер, ревербератор, динамический компрессор. Всё работает из JavaScript в любом браузере и не требовательно к ресурсам.

При первом старте может играть с лагами т.к. инструментов относительно много и они кешируются несколько почти минуту.

UX/UI

На главном окне всего 4 кнопки по которым можно менять генерируемые паттерны в прогрессии. Тапнуть - выбрать случайный паттерн, повернуть - выбрать какой-то конкретный фрагмент.

Слайдером можно выбрать одну из готовых прогрессий.

По кнопке с шестеренкой можно открыть окно с настройками (громкость, темп, редактирвоание отдельных аккордов и т.п.):

Выглядит всё достаточно лаконично, но не в ущерб функциональности.

Импорт

По кнопке [Аа] можно вставить собственную прогрессию. Например скопировать из учебника или со страницы сайта.

Однозначного стандарта на запись аккордов нет, придется парсить различные варианты. Примеры записи

  • AmBdimCDmEmFG

  • vi - IV - I - V

Кроме того, в примерах аккордовых прогрессий могут использоваться различный спец.символы.

Экспорт

Как и в большинстве музыкальных программ, поддерживается экспорт в файл MIDI.

В нижней панели есть кнопка для отправки редактируемой прогрессии в Твиттер, ВКонтакте и тп

Для корректного отображения превью поддерживается протоколы Open Graph и Twitter Cards.

Результат

Веб-версию можно запустить здесь - https://zvoog.app/RockDice/main.html

Приложение для Android доступно здесь - https://play.google.com/store/apps/details?id=rockdice.chord.progression

PS

Если есть какие-то вопросы по генерации или Web Audio API - можно спрашивать в комментариях.

Источник: habr.com
К списку статей
Опубликовано: 12.04.2021 10:16:29
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Javascript

Разработка под android

Звук

Музыка

Web audio api

Cordova

Audio

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru