2017-06-26 1 views
0

J'utilise this python module (pour python 2) pour essayer d'accéder à un événement MIDI individuel. Jusqu'à présent j'aiComment puis-je référencer des événements MIDI individuels à l'aide du module python-midi?

import midi 
pattern = midi.read_midifile('Conquest of Paradise.mid') 
print pattern 

Cela imprime beaucoup d'événements midi. Mais len(pattern) renvoie la valeur 13 (ce qui est beaucoup moins). Comment puis-je parcourir sur pattern pour accéder à midi.NoteOnEvents? J'ai essayé de lire le code source mais je suppose que je ne connais pas assez de python.

EDIT: L'utilisateur CL a signalé que 13 fait référence à des pistes.
Je me dis que je peux parcourir le fichier MIDI comme ceci:

trackCount = len(pattern) 
eventCount = 0 

for i in range(trackCount): 
    for j in range(i): 
     print(pattern[i][j].name) 
     eventCount += 1 

print(eventCount) 

Mais maintenant, cela donne eventCount = 78, quand il est certainement beaucoup plus que 78. En outre de tous les noms imprimés, aucun d'entre eux sont NoteOnEvent ou NoteOffEvent.

+1

Je suppose que ce fichier a 13 pistes. –

+0

Juste passé par là et vous avez raison, merci. – roncook

Répondre

1

Vous itérez le motif de manière incorrecte dans la boucle interne, essayez ceci:

trackCount = len(pattern) 
eventCount = 0 

for i in range(trackCount): 
    for j in range(len(pattern[i])): 
     print(pattern[i][j].name) 
     eventCount += 1 

print(eventCount) 

Ou, mieux encore:

eventCount = 0 

for p in pattern: 
    for event in p: 
     print(event.name) 
     eventCount += 1 

print(eventCount)