Создание процедурной музыки -prt.4: извлечение функций

Чем больше я узнаю о машинном обучении, тем больше понимаю, что алгоритмы - не самая сложная часть. Если вы не планируете академическую деятельность, все основные алгоритмы уже реализованы на нескольких языках и в библиотеках. Самое сложное - либо получить, либо создать хорошие наборы данных. Для создания хороших наборов данных вам потребуется уметь извлекать ключевые метрики (функции), которые можно использовать для прогнозирования или классификации. В контексте музыки я думаю, что есть 5 основных категорий функций, которые можно использовать для машинного обучения.

  1. Гармония и аккорды (одновременная высота тона)
  2. Ритм
  3. Тон / Тембр
  4. Частота (эквалайзер)
  5. Мелодия (высота)
  6. Состав Состав

Для каждого используемого аудиосэмпла (существующего ранее или созданного с помощью midi и синтезаторов) функции 1–4 будут автоматически извлечены и использованы механизмом машинного обучения для определения совместимости с другими синтезаторами и слоями сэмплов.

ГАРМОНИЯ

Любой, кто имеет базовые музыкальные знания, знает, что в любой момент в тональной музыке одновременно может быть одна или несколько высот. Любые две уникальные высоты звука (ноты), сыгранные одновременно, считаются интервалами. Аккордами считаются три или более уникальных высоты звука. Аккорды меня больше всего интересуют. В сочетании с известной тональностью аккорды могут определять, какие ноты будут звучать (по крайней мере) правильно для определенного периода времени. Извлекая все высоты тона такта (в моем случае 4 ритмических импульса), можно продумать комбинации и определить все возможные аккорды, которые будут безопасно гармонировать с текущими нотами. Чтобы понять, какие аккорды будут гармонировать с какими нотами, требуется промежуточное понимание западной тональной гармонии. Это отдельная дисциплина, выходящая за рамки данной статьи. Существует огромное количество книг и веб-сайтов, если вы хотите получить более глубокое понимание https://en.wikipedia.org/wiki/Harmony

РИТМ

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

TONE / TIMBRE

Тембр, на мой взгляд, сложнее всего классифицировать. Причина, по которой вам нужно классифицировать тембр, заключается в том, что идентичные музыкальные фразы будут хорошо звучать на одном инструменте, но на других. Например, ряд идентичных нот, которые я хорошо звучу на саксофоне, но ужасно на банджо. Я не очень далеко продвинулся в автоматизированной классификации тембров и пока полагаюсь на ручную классификацию. В ближайшем будущем я проведу несколько экспериментов с операцией "Mel Frequency Cepstral Coefficient".

СОСТАВ

Композиция - еще одна сложная характеристика. Достаточно сложно создавать короткие музыкальные фразы, не говоря уже о том, чтобы эти фразы намеренно повторялись как музыкальные темы. Чтобы справиться с этим, моя текущая стратегия состоит в том, чтобы задавать структуру на раннем этапе создания песни. Например, структура может выглядеть так: вступление / куплет / куплет / мост / припев / куплет / куплет / мост / припев / соло / завершение. Каждый из типов структуры будет иметь уникальные атрибуты. Например, «припев», вероятно, будет повторяться без особых вариаций, или «вступление» будет менее агрессивным, чем куплет и так далее. Последовательности аккордов, выбранные в каждом из типов структуры, скорее всего, будут повторно использоваться на протяжении всей песни.

ЧАСТОТА

Частота также является чрезвычайно важной характеристикой, необходимой для определения совместимости. Я собирал средние значения из 32 параметрических эквалайзеров для каждого такта (4 удара). Это нужно, чтобы избежать ситуации, когда частоты сталкиваются. Примером этого может быть одновременное использование трех басовых линий, что, скорее всего, будет звучать очень приглушенно и мутно.

МЕЛОДИЯ

Я не собираюсь много говорить о мелодиях, потому что на самом деле я не знаю, как эффективно их извлекать. Учитывая структуру, у меня есть идеи, как создавать мелодии, но не извлекать их из существующих аудиосигналов. Мне еще предстоит увидеть убедительное программное обеспечение, которое бы успешно справилось с этим.

Пожалуйста, послушайте последний вывод моей системы здесь:

Http://signalsandsorcery.com/

Спасибо!