2016-12-08 8 views
1

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

1

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 
+0

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

+0

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

0

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.