J'utilise la bibliothèque Music21 et je veux entendre chaque piste dans l'instrument où elle doit être jouée à partir de mon notebook Jupyter (IPython).
Je parviens à produire de la musique sur différentes pistes dans un fichier midi et à la lire avec timidity, mais je ne parviens pas à entendre d'autres pistes que le piano (midiProgram = 0) à partir du lecteur IPython.
Je suis actuellement sur Ubuntu 18.04 et j'utilise music21 v5.7.0. J'ai également été en mesure de reproduire ce problème sur mon système Mac.
J'ai essayé d'écrire un flux dans un fichier midi et de l'afficher dans le carnet de notes, mais je ne peux entendre que les instruments ajustés dans le fichier midi généré.
from music21 import *
core_corp = corpus.corpora.CoreCorpus()
bach_piece = core_corp.search('bwv120.8-a')[0].parse()
bach_piece.show("midi")
for el in bach_piece.recurse():
if 'Instrument' in el.classes:
el.activeSite.replace(el, instrument.Trumpet())
bach_piece.show("midi")
Je m'attends à entendre tous les sons de trompette dans le deuxième appel show(), mais je n'entends toujours que du piano. Cependant, lorsque j'ouvre le fichier midi généré à l'aide de timidity, je les entends tous comme des trompettes.
En fouillant dans le code source, je pense que cela a quelque chose à voir avec le midiPlayer qui est généré par le javascript ou dans le décodage du fichier midi encodé en base64, mais je n'ai pas d'expertise en la matière.
Toute aide serait grandement appréciée, ma solution actuelle consiste à utiliser
!timidity <path to file>
Dans mon carnet, au cas où quelqu'un d'autre aurait ce problème.