Je suis en train de traiter une grande partie des fichiers midi créés pour des chansons pop existantes en utilisant music21. Alors que le canal 10 est réservé aux percussions, les pistes mélodiques sont réparties sur différents canaux, je me demandais donc s'il y avait un moyen efficace de choisir la piste mélodique principale (chant). Je pense qu'une façon de le faire est de choisir une piste composée de notes simples plutôt que d'harmoniques qui se chevauchent (accords), et celle qui joue tout au long de la chanson, mais existe-t-il un autre moyen efficace?music21: sélection de la piste mélodique
Répondre
En fonction du codage de vos fichiers, vous pouvez essayer de les filtrer en fonction du nom de chaque partie. Cela ressemblerait à quelque chose comme ceci:
import music21
from music21 import *
piece = converter.parse("full_path_to_piece.midi")
for part in piece.parts:
print(part[0].bestName()) # replace this print statement with a relevant if statement
Le format SMF n'a aucune restriction sur la manière dont les événements sont organisés en pistes. Il est courant d'avoir une piste par canal, mais il est également possible d'avoir plusieurs canaux dans une piste, ou plusieurs pistes avec des événements pour le même canal.
L'organisation des pistes est entièrement déterminée par l'homme. Il est peu probable que vous puissiez écrire du code capable de déterminer correctement le fonctionnement d'un cerveau aléatoire. Tout ce que vous avez à faire sont des conventions (par exemple, mélodie est susceptible d'être dans la première piste (s), ou a une certaine structure), mais vous devez savoir si ces conventions sont réellement utilisées dans les fichiers que vous est la manipulation.
Thanx! BestName fait-il référence aux noms de plages définis par l'utilisateur ou correspond-il automatiquement au nom du patch de son? Aussi, quel est le cas lorsque bestName renvoie None? – ytrewq
Selon les docs sur bestName(), il dit qu'il fait ceci "Trouver un nom viable, en regardant d'abord l'instrument, puis la partie, puis les abréviations." Je suppose qu'il retournerait None si aucune de ces choses ne portait un nom dans le fichier original. Voici la documentation: http://web.mit.edu/music21/doc/moduleReference/moduleInstrument.html?highlight=bestname#music21.instrument.Instrument.bestName – Alex