Je joue avec le projet de génération de musique de TensorFlow "Magenta".
Référence: [Laissez Sakanaction apprendre du projet de création artistique et musicale de TensorFlow "Magenta". ] (http://qiita.com/tackey/items/1295a0347a8b4cc30d46)
En tant que prétraitement, je souhaite convertir le fichier MIDI en fichier pour chaque instrument, je vais donc le diviser en utilisant pretty_midi.
Référence: documentation pretty_midi 0.2.6 Référence: Créer un fichier MIDI en Python en utilisant pretty_midi
L'environnement est Python 2.7 et le fichier MIDI est la logique X.
sample.py
import pretty_midi
#Lire le fichier MIDI
midi_data = pretty_midi.PrettyMIDI('hogehoge.MID')
#Liste des instruments de musique
midi_data.instruments
'''
[Instrument(program=80, is_drum=False, name="hoge"),
Instrument(program=4, is_drum=False, name="hoge"),
Instrument(program=0, is_drum=True, name="hoge"),
Instrument(program=16, is_drum=False, name="hoge"),
Instrument(program=52, is_drum=False, name="hoge"),
Instrument(program=71, is_drum=False, name="hoge"),
Instrument(program=4, is_drum=False, name="hoge"),
Instrument(program=29, is_drum=False, name="hoge"),
Instrument(program=30, is_drum=False, name="hoge"),
Instrument(program=51, is_drum=False, name="hoge"),
Instrument(program=33, is_drum=False, name="hoge"),
Instrument(program=27, is_drum=False, name="hoge"),
Instrument(program=81, is_drum=False, name="hoge")]
'''
#80e instrument(ReverseEngineering)Sortez et faites-en une instance
for instrument in midi_data.instruments:
if instrument.program == 80:
ins_80 = instrument
#Créer un objet Pretty MIDI pour une nouvelle création
rev_en_chord = pretty_midi.PrettyMIDI()
#Ajouter le numéro 80 à l'objet PrettyMIDI
rev_en_chord.instruments.append(ins_80)
#enregistrer
rev_en_chord.write('ins_80.mid')
Un fichier appelé ins_80.mid sera créé dans le même dossier.
sample2.py
import pretty_midi
import os
title = "aoi"
midi_data = pretty_midi.PrettyMIDI('sakanaction_'+ title +'.MID')
#Créer s'il n'y a pas de répertoire de sortie
if not os.path.isdir('output'):
os.mkdir(output)
#Créez un répertoire pour la chanson
if not os.path.isdir('output/' + str(title)):
os.mkdir('output/' + str(title))
#Sortez les instruments un par un et transformez-les en instances
for i in range(0,len(midi_data.instruments)):
instrument = midi_data.instruments[i]
program_num = midi_data.instruments[i].program
#Créer un objet Pretty MIDI pour une nouvelle création
rev_en_chord = pretty_midi.PrettyMIDI()
#Ajouter un instrument à l'objet PrettyMIDI
rev_en_chord.instruments.append(instrument)
#enregistrer
rev_en_chord.write('output/'+str(title) + '/' + str(title) +'_ins_' + str(program_num) + '.mid')
J'ai l'impression de pouvoir écrire le code plus magnifiquement. Sur la base des fichiers divisés, j'aimerais apprendre la musique individuellement pour chaque instrument.
Merci beaucoup.
Recommended Posts