Майкл Катберт и Майкл Гуд: «Как программировать музыку?»

MIT OpenCourseWare 1,4 тыс. 1 ч 3 мин 2 мин 15.10.2025
Главное

Инструменты анализа музыки: кодирование и голосоведение 0:00

На 15-м занятии курса MIT OpenCourseWare Майкл Катберт подводит итоги работы с классами эквивалентности и обсуждает новые концепции: от программной обработки музыкальных данных до принципов голосоведения. В дискуссии также принял участие приглашенный эксперт Майкл Гуд, создатель стандарта MusicXML, который поделился опытом разработки музыкальных стандартов и карьеры на стыке музыки и технологий.

🧩 Итоги по классам эквивалентности 0:27

Майкл Катберт напоминает, что понимание того, когда две ноты считаются «одинаковыми», критически важно для анализа. Студенты выделили основные категории:

Профессор обратил внимание на частую ошибку в программах студентов: неправильную обработку граничных нот, таких как «си-диез» (B#), которые звучат как «до» (C), но требуют корректного учета октав при вычислении интервалов.

🎼 Корпуса данных и роль MusicXML 8:35

Студенты представили найденные ими музыкальные электронные базы данных:

Приглашенный гость Майкл Гуд отметил, что для создания жизнеспособного стандарта представления музыки (каким стал MusicXML) необходимо наличие сообщества пользователей и поддержка со стороны ключевых приложений (например, Finale или Sibelius). По мнению Гуда, сейчас для разработчиков важнее «решать крутые задачи» на базе существующих инструментов, а не изобретать новые форматы с нуля.

🎶 Голосоведение и алгоритмы 34:38

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

В качестве примера он приводит «строгий контрапункт» (species counterpoint):

💻 Технический практикум: библиотека music21 41:46

Вторая часть занятия посвящена работе с модулем interval в библиотеке music21. Основные команды и подходы:

  1. Создание интервалов:
    • Создание через строку: interval.Interval('P5').
    • Создание из двух нот: interval.Interval(pitch1, pitch2).
  2. Свойства интервалов:
    • .name — имя.
    • .semitones — количество полутонов.
    • .simpleName — упрощенное имя для составных интервалов.
  3. Транспозиция:
    • Метод transposePitch(interval, inPlace=True) позволяет изменять высоту ноты.
    • Важно помнить, что транспозиция «на месте» меняет объект.
  4. Специфика music21:
    • Библиотека учитывает музыкальную теорию: например, уменьшенная септима считается диссонансом, несмотря на то, что звучит как большая секста.
    • Использование целых чисел (например, 4) для создания интервалов позволяет программе «догадываться» о диатонике, если контекст не задан жестко.
💬 Цитаты

«Чтобы развить стандарт для представления музыки, нужно, чтобы его использовали несколько человек и чтобы его поддерживали инструменты.»

Майкл Гуд 26:33

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

Майкл Гуд 32:10
👥 Спикеры
📚 Упомянутые книги
🔗 Упомянутые сайты и проекты
📖 Термины
MusicXML
Стандарт цифрового формата для обмена нотной информацией между программами.
Cantus firmus
Фиксированная мелодия, служащая основой для написания контрапункта.
Голосоведение
Принципы движения нескольких одновременных мелодических линий в музыкальной композиции.
music21
Библиотека на языке Python для компьютерного анализа и обработки музыкальных данных.
📊 Цифры
🗓 Хронология
  1. 1979 Майкл Гуд закончил MIT и написал диплом по кодированию музыки.
  2. 2000 Майкл Гуд начал работать над MusicXML.
  3. Январь 2026 Майкл Гуд вышел на пенсию.
⚖️ Другая сторона
Искусственный интеллект music21 MusicXML Michael Cuthbert Michael Good species counterpoint