Наиболее успешная система, вероятно, будет сочетать несколько методов. Я сомневаюсь, что вы найдете одну технику, которая хорошо работает для генерации мелодии, гармонии, ритма и басовой последовательности во всех жанрах музыки.
Марковские цепи , например, хорошо подходят для генерации мелодических и гармонических последовательностей. Этот метод требует анализа существующих песен для построения вероятностей цепного перехода. Настоящая красота цепей Маркова в том, что состояния могут быть любыми, какими вы хотите.
- Для генерации мелодии попробуйте номера нот относительно клавиш (например, если тональность C минор, C будет 0, D будет 1, D # будет 2 и так далее)
- Для создания гармонии попробуйте комбинацию номеров нот относительно клавиш для основного тона аккорда, типа аккорда (мажорный, минорный, уменьшенный, увеличенный и т. Д.) И инверсии аккорда (основной, первый или второй)
Нейронные сети хорошо подходят для предсказания временных рядов (прогнозирования), что означает, что они в равной степени подходят для «предсказания» музыкальной последовательности при обучении на основе существующих популярных мелодий / гармоний. Конечный результат будет аналогичен подходу с цепью Маркова. Я не могу придумать никаких преимуществ по сравнению с подходом с цепями Маркова, кроме уменьшения объема памяти.
Помимо высоты звука вам понадобится длительность, чтобы определить ритм генерируемых нот или аккордов. Вы можете включить эту информацию в состояния цепи Маркова или выходные данные нейронной сети, или вы можете сгенерировать ее отдельно и объединить независимые последовательности шагов и продолжительности.
Генетические алгоритмы могут использоваться для развития ритм-секций. Простая модель может использовать двоичную хромосому, в которой первые 32 бита представляют паттерн бочки, вторые 32 бита - малый барабан, третьи 32 бита - закрытый хай-хет и так далее. Обратной стороной в этом случае является то, что они требуют постоянной обратной связи от человека для оценки соответствия вновь возникших паттернов.
Экспертная система может быть использована для проверки последовательностей , генерируемых другими методами. База знаний для такой системы проверки, вероятно, может быть взята из любой хорошей книги или веб-сайта по теории музыки. Попробуйте сайт musictheory.net Риччи Адамса .