À propos du projet

Musicpy est un langage de programmation musicale implémenté sous forme de bibliothèque Python. Son objectif est de permettre aux utilisateurs d'écrire de la musique avec une syntaxe concise et lisible par l'humain, fondée sur la théorie musicale et les algorithmes, et il est entièrement compatible avec Python, de sorte que du code Python ordinaire peut interagir avec lui. Capacités principales - Représenter les notes, accords, mélodies, rythmes et volumes avec une syntaxe compacte. - Effectuer des opérations de théorie musicale et concevoir une logique de composition algorithmique. - Exporter les structures musicpy vers des fichiers MIDI, et charger des fichiers MIDI dans les structures de données musicpy pour un traitement ultérieur. - Lire et écrire des fichiers MusicXML lorsque les dépendances optionnelles musicxml sont installées. - Jouer de la musique directement, avec une fonction play qui peut bloquer jusqu'à la fin de la lecture via wait=True. - Inclure un module daw (dépendances optionnelles) pour travailler avec des soundfonts. Structures de données - note, chord et scale sont les classes de base. - La classe note est congruente aux entiers et peut être utilisée comme un int. - La classe chord se comporte comme un ensemble de notes, et peut être traitée comme un ensemble d'entiers, un vecteur ou une matrice lorsque des progressions d'accords sont combinées. - Ces classes prennent en charge l'usage arithmétique, que l'auteur relie à l'algèbre linéaire et aux mathématiques discrètes, ainsi qu'à des styles expérimentaux tels que le sérialisme, la musique aléatoire et le minimalisme. Installation et notes sur les plateformes - Nécessite Python 3.7 ou plus récent ; installation avec pip install musicpy. - Extras optionnels : pip install musicpy[musicxml], pip install musicpy[daw], ou les deux ensemble. - Fonctionne sur Windows, macOS et Linux. - Sous Linux, pygame doit être antérieur à 2.0.3 pour que la fonction play fonctionne correctement, et freepats est nécessaire (par exemple sudo apt-get install freepats sur Ubuntu). - Si aucun son n'est entendu, définir wait=True dans play peut aider car certains IDE n'attendent pas la fin de la lecture. - Sous Linux ou macOS, la dépendance du module daw sf2_loader nécessite des étapes de configuration supplémentaires. Documentation et outils - Des tutoriels détaillés se trouvent dans le wiki du projet et sur Read the Docs ; le wiki est mis à jour en même temps que les nouvelles versions. - Une copie PDF et Markdown du wiki est proposée au téléchargement. - Un projet distinct musicpy_editor fournit un éditeur avec compilation et exécution en temps réel et un peu de sucre syntaxique. Exemple Un court exemple montre une guitare à cordes en nylon jouant des accords brisés sur une progression, construits à partir d'expressions d'accords combinées avec des opérateurs puis passés à play avec un bpm et un numéro d'instrument. Contexte L'auteur a commencé à développer musicpy en octobre 2019 et continue de le mettre à jour fréquemment. Une motivation déclarée est de représenter la manière dont la musique est construite du point de vue de la théorie musicale plutôt que de seulement stocker des notes et un tempo, et de donner à une IA de composition une interface de théorie musicale au lieu de s'appuyer uniquement sur l'apprentissage profond et de grands ensembles de données. Le README note également qu'une familiarité avec la théorie musicale de base est recommandée pour une utilisation efficace.