2017-03-21 6 views
0

La seule façon de le faire, j'ai trouvé est d'utiliser music21:Comment obtenir un nom d'instrument de piste MIDI avec python?

m = converter.parse(path) 
for m in m.parts: 
    print(m[0]) 

mais il est sortie est incorrect:

Piano 


Piano 

places vides est aussi un nom de l'instrument, il ne peut tout simplement pas le lire, mais le problème n'est pas dans le fichier, parce que je peux l'importer au tuxguitar correctement. De plus, music21 ne peut pas coller de gros fichiers midi et reste bloqué. J'ai essayé la bibliothèque mido, mais il n'y a aucun moyen d'obtenir l'instrument de piste, j'ai trouvé un attribute, mais je n'ai aucune idée de comment l'utiliser. Comment puis-je analyser les instruments de pistes MIDI avec Python?

Répondre

0

Pourquoi Mido n'a-t-il pas fonctionné?

from mido import MidiFile 
mid = MidiFile('song.mid') 
for i, track in enumerate(mid.tracks): 
    print('Track {}: {}'.format(i, track.name)) 
    for msg in track: 
     print(msg) 

L'attribut tracks est une liste de pistes. Chaque piste est une liste de messages et de méta-messages, avec l'attribut time de chaque message défini sur son delta time (en ticks).
Plus d'informations peut être trouvé here.

+0

Je dois obtenir un nom d'instrument (Piano, Sax etc.), pas les événements midi. Désolé, j'ai édité la question. – user7745819

+0

Je l'ai trouvé! votre code produit la valeur "programme" en plus des autres événements, c'est la valeur de l'instrument. – user7745819