# MIT о Music21: как анализировать музыку с помощью кода

Источник: https://www.youtube.com/watch?v=BZwdYmPS5f8
Канал: MIT OpenCourseWare
Опубликовано: 15.10.2025

---

## 🎹 Основы Music21: автоматизированный анализ музыки
[[JUMP:00:10]]

Для тех, кто изучает музыку с помощью компьютерных технологий, открываются широкие возможности автоматизации анализа и манипуляции партитурами. В рамках вводного занятия курса MIT OpenCourseWare преподаватель демонстрирует работу с библиотекой **music21** — мощным инструментарием для работы с музыкальными данными, который позволяет исследователям не просто «слушать» файлы, а буквально разбирать их на составные элементы, анализировать структуру и создавать собственные алгоритмы обработки.

### 🛠 Настройка среды разработки
[[JUMP:00:24]]

Для начала работы над проектом не обязательно устанавливать сложные программные пакеты локально. Преподаватель рекомендует использовать среду **Google Colab**, которая позволяет запускать Python-скрипты прямо в браузере.

Основные шаги подготовки:

1.  **Загрузка среды:** Переход по ссылке на проект в Google Colab.
2.  **Установка компонентов:** Скрипт автоматически скачивает последнюю версию **music21**, а также программное обеспечение **MuseScore**, необходимое для визуализации нотных станов.
3.  **Запуск:** В среде **Jupyter notebook** выполнение кода производится сочетанием клавиш `Shift + Enter`.

### 🎼 Работа с партитурами: от Баха до кода
[[JUMP:02:42]]

После настройки окружения важно правильно импортировать библиотеку `music21`. В учебных целях преподаватель использует короткий хорал И. С. Баха — **BWV 66.6**.

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

* **Загрузка:** Использование функции `corpus.parse()` для импорта партитуры из базы данных.
* **Визуализация:** Метод `.show()` позволяет вывести ноты на экран для визуального контроля.
* **Иерархическая структура:** Важно понимать, что компьютер «видит» музыку не как набор звуков, а как иерархию: `Партитура -> Партии -> Такты -> Ноты`.
* **Работа с индексами:** В программировании принята индексация с нуля (например, `parts[0]` для первой партии), в то время как музыкальные термины (например, номера тактов) сохраняют привычную нумерацию.

### 🔍 Аналитические инструменты и «тест на здравый смысл»
[[JUMP:06:02]]

Библиотека позволяет проводить глубокий анализ, но преподаватель подчеркивает критическую важность «теста на здравый смысл» (smell test) — всегда нужно проверять, насколько результат, выданный машиной, соответствует действительности.

Ключевые функции анализа:

* **Определение тональности:** Метод `.analyze('key')` позволяет автоматически вычислить тональность как целого произведения, так и его фрагментов.
* **Рекурсивный поиск:** Так как ноты спрятаны внутри тактов, которые, в свою очередь, находятся внутри партий, используется метод `.recurse()`. Он «открывает» все контейнеры, пока не доберется до уровня отдельных нот, что позволяет корректно подсчитать их общее количество (например, 165 нот в хорале Баха).
* **Chordify:** Метод для преобразования полифонической партитуры в последовательность аккордов.

### 🎓 Методика обучения в MIT OpenCourseWare
[[JUMP:09:49]]

Особенность данного курса заключается в постепенном «открытии» функционала. Многие встроенные алгоритмы **music21** (например, определение тональности или создание аккордов) по умолчанию считаются «заблокированными».

Студенты должны сначала самостоятельно разработать алгоритм решения задачи в рамках задания. Только после этого им «разблокируют» профессиональную версию функции из библиотеки, чтобы они могли сравнить свой подход с эталонным. Преподаватель также настоятельно рекомендует онлайн-слушателям искать единомышленников для совместной работы, так как именно обмен опытом с другими студентами составляет существенную часть академического процесса в MIT.