Об этом проекте
Musicpy — это язык музыкального программирования, реализованный как библиотека Python. Его цель — позволить пользователям писать музыку с помощью краткого, удобочитаемого синтаксиса, построенного на музыкальной теории и алгоритмах; он полностью совместим с Python, поэтому обычный код Python может с ним взаимодействовать.
Основные возможности
- Представление нот, аккордов, мелодий, ритмов и громкости с помощью компактного синтаксиса.
- Выполнение музыкально-теоретических операций и разработка логики алгоритмической композиции.
- Экспорт структур musicpy в MIDI-файлы и загрузка MIDI-файлов обратно в структуры данных musicpy для дальнейшей обработки.
- Чтение и запись файлов MusicXML при установке опциональных зависимостей musicxml.
- Непосредственное воспроизведение музыки с помощью функции play, которая может блокировать выполнение до завершения воспроизведения при wait=True.
- Включает модуль daw (опциональные зависимости) для работы со саундфонтами.
Структуры данных
- note, chord и scale — базовые классы.
- Класс note сравним с целыми числами и может использоваться как int.
- Класс chord ведёт себя как множество нот и может рассматриваться как множество целых чисел, вектор или матрица при объединении аккордовых последовательностей.
- Эти классы поддерживают арифметическое использование, которое автор связывает с линейной алгеброй и дискретной математикой, а также с экспериментальными стилями, такими как сериализм, алеаторика и минимализм.
Установка и заметки о платформах
- Требуется Python 3.7 или новее; установка через pip install musicpy.
- Опциональные дополнения: pip install musicpy[musicxml], pip install musicpy[daw] или оба вместе.
- Работает на Windows, macOS и Linux.
- В Linux pygame должен быть старше 2.0.3, чтобы функция play работала корректно, и требуется freepats (например, sudo apt-get install freepats в Ubuntu).
- Если звук не слышен, установка wait=True в play может помочь, так как некоторые IDE не ждут завершения воспроизведения.
- В Linux или macOS зависимость модуля daw sf2_loader требует дополнительных шагов настройки.
Документация и инструменты
- Подробные руководства находятся в вики проекта и на Read the Docs; вики обновляется вместе с новыми релизами.
- PDF- и Markdown-копия вики предлагается для скачивания.
- Отдельный проект musicpy_editor предоставляет редактор с компиляцией и выполнением в реальном времени и некоторым синтаксическим сахаром.
Пример
Короткий пример показывает нейлоновую струнную гитару, играющую ломаные аккорды поверх последовательности, построенной из аккордовых выражений, объединённых с операторами, а затем переданной в play с bpm и номером инструмента.
Предыстория
Автор начал разработку musicpy в октябре 2019 года и продолжает часто её обновлять. Заявленная мотивация — представить, как музыка конструируется с точки зрения музыкальной теории, а не только хранить ноты и темп, и дать композиционному ИИ интерфейс музыкальной теории вместо опоры исключительно на глубокое обучение и большие наборы данных. В README также отмечается, что для эффективного использования рекомендуется знакомство с основами музыкальной теории.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.