Skip to content

maikju63/python-midi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

119 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👀👉exclusivité unblockaudio🔥 🤣🤭👉👀ça va te plaire à toi .... 🤣🤣🤣👀👉tu vas des trucs de fou avec ta korg esx ou emx 🤣🤭ça va pas plaire à tout le monde 👀👉✍️maik julien ⚠️✍️mj dit merci aux mecs qui l ont développé et partagé avec nous 👀👉🔥open sources # Python MIDI Documentation Python, malgré toute son incroyable capacité à sortir de la boîte, ne vous offre pas un moyen simple de manipuler des données MIDI. Il existe probablement une dizaine de packages Python différents qui atteignent une partie de cet objectif, mais il n'y a rien de totalement exhaustif. Ce kit d'outils vise à atteindre cet objectif. Plus précisément, il s'efforce de fournir un framework de haut niveau indépendant du matériel. Il offre une granularité d'objet raisonnable pour simplifier la manipulation, le séquençage, l'enregistrement et la lecture des flux MIDI. Une bonne gestion du temps est essentielle, et le framework événementiel fournit des hooks automatiques pour vous éviter, par exemple, de calculer les ticks par rapport à l'horloge système. ## Fonctionnalités - Classes de haut niveau représentant les événements MIDI individuels. - Conteneur multipiste permettant de gérer vos événements MIDI. - Carte de tempo assurant un suivi actif des changements de tempo au sein d'une piste. - Lecteur et écrivain permettant de lire et d'écrire vos pistes MIDI sur disque. ## Installation Nécessite Python 3.10+: pip install . ### Examiner un fichier MIDI Pour examiner le contenu d'un fichier MIDI, exécutez $ mididump mary.mid Cela affichera une représentation de « Mary had a Little Lamb » sous forme de code Python exécutable. ## Exemple d'utilisation ### Créer un fichier MIDI à partir de zéro Il est facile de créer une piste MIDI à partir de zéro. python import midi # Instancier un motif MIDI (contient une liste de pistes) pattern = midi.Pattern() # Instancier une piste MIDI (contient une liste d'événements MIDI) track = midi.Track() # Ajouter la piste au motif pattern.append(track) # Instancier un événement de note MIDI, l'ajouter à la piste on = midi.NoteOnEvent(tick=0, velocity=20, pitch=midi.note_value('G_3')) track.append(on) # Instancier un événement de note MIDI, l'ajouter à la piste off = midi.NoteOffEvent(tick=100, pitch=midi.note_value('G_3')) track.append(off) # Ajouter l'événement de fin de piste, l'ajouter à la piste eot = midi.EndOfTrackEvent(tick=1) track.append(eot) # Afficher le motif print(pattern) # Enregistrer le motif sur le disque midi.write_midifile("example.mid", pattern) Un fichier MIDI est représenté comme un ensemble hiérarchique d'objets. Au sommet se trouve un Pattern, qui contient une liste de Tracks, et une Track est une liste d'événements MIDI. La classe MIDI Pattern implémente l'interface MutableSequence (elle se comporte comme une liste – indexation, itération, ajout, découpage – mais n'est pas une sous-classe de liste). Les Patterns contiennent également des métadonnées MIDI globales : la résolution et le format MIDI. La classe MIDI Track implémente également l'interface MutableSequence. Elle ne possède pas de métadonnées spécifiques comme Pattern, mais fournit quelques fonctions utilitaires pour manipuler tous les événements d'une piste. Il existe 27 événements MIDI différents. Dans cet exemple, trois événements MIDI différents sont créés et ajoutés à la piste MIDI : - L'événement NoteOnEvent capture le début d'une note, comme un pianiste appuyant sur une touche. Le tick indique le moment où cet événement s'est produit, la hauteur correspond à la valeur de la note enfoncée et la vélocité représente la force avec laquelle la touche a été enfoncée. L'événement NoteOffEvent enregistre la fin d'une note, comme lorsqu'un pianiste retire son doigt d'une touche enfoncée. Le tick correspond au moment où cet événement se produit, la hauteur est la note relâchée, et la vélocité n'a pas d'équivalent concret et est généralement ignorée. Les événements NoteOnEvent de vélocité nulle sont équivalents aux événements NoteOffEvent. L'événement EndOfTrackEvent est un événement spécial qui indique au logiciel de séquençage MIDI la fin du morceau. Lors de la création de patterns avec plusieurs pistes, un seul événement EndOfTrackEvent est nécessaire pour l'ensemble du morceau. La plupart des logiciels MIDI refusent de charger un fichier MIDI s'il ne contient pas d'événement EndOfTrackEvent. Vous remarquerez peut-être que la valeur de tick de l'événement EndOfTrackEvent est de 1. Cela s'explique par le fait que le MIDI représente les ticks en temps relatif. Le décalage temporel réel de l'événement MidiTrackEvent est la somme de son tick et de tous les ticks des événements précédents. Dans cet exemple, l'événement EndOfTrackEvent se produirait à la 101e impulsion (0 + 100 + 1). #### Remarque : Qu'est-ce qu'une impulsion MIDI ? Le problème avec les impulsions est qu'elles ne donnent aucune information sur leur occurrence sans connaître deux autres éléments : la résolution et le tempo. Le code gère ces aspects pour vous ; il vous suffit donc de raisonner en millisecondes, ou impulsions, si le rythme vous importe. Une impulsion représente le niveau de résolution le plus fin d'une piste MIDI. Le tempo est toujours analogue aux battements par minute (BPM), qui correspondent aux noires par minute (QPM). La résolution est également connue

About

Python MIDI library

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 97.6%
  • SWIG 2.4%