Об этом проекте

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 также отмечается, что для эффективного использования рекомендуется знакомство с основами музыкальной теории.