Ich spiele mit TensorFlows Musikgenerierungsprojekt "Magenta".
Referenz: [Lassen Sie Sakanaction von TensorFlows Kunst- und Musikgenerierungsprojekt "Magenta" lernen. ]] (http://qiita.com/tackey/items/1295a0347a8b4cc30d46)
Als Vorverarbeitung möchte ich die MIDI-Datei für jedes Instrument in eine Datei konvertieren, daher werde ich sie mit pretty_midi aufteilen.
Referenz: hübsche_midi 0.2.6 Dokumentation Referenz: Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Die Umgebung ist Python 2.7 und die MIDI-Datei ist logisch X.
sample.py
import pretty_midi
#MIDI-Datei lesen
midi_data = pretty_midi.PrettyMIDI('hogehoge.MID')
#Liste der Musikinstrumente
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")]
'''
#80. Instrument(ReverseEngineering)Nehmen Sie es heraus und machen Sie es zu einer Instanz
for instrument in midi_data.instruments:
if instrument.program == 80:
ins_80 = instrument
#Erstellen Sie ein hübsches MIDI-Objekt für die neue Erstellung
rev_en_chord = pretty_midi.PrettyMIDI()
#Fügen Sie dem PrettyMIDI-Objekt die Nummer 80 hinzu
rev_en_chord.instruments.append(ins_80)
#sparen
rev_en_chord.write('ins_80.mid')
Eine Datei mit dem Namen ins_80.mid wird im selben Ordner erstellt.
sample2.py
import pretty_midi
import os
title = "aoi"
midi_data = pretty_midi.PrettyMIDI('sakanaction_'+ title +'.MID')
#Erstellen, wenn kein Ausgabeverzeichnis vorhanden ist
if not os.path.isdir('output'):
os.mkdir(output)
#Erstellen Sie ein Verzeichnis für das Lied
if not os.path.isdir('output/' + str(title)):
os.mkdir('output/' + str(title))
#Nehmen Sie die Instrumente einzeln heraus und machen Sie sie zu Instanzen
for i in range(0,len(midi_data.instruments)):
instrument = midi_data.instruments[i]
program_num = midi_data.instruments[i].program
#Erstellen Sie ein hübsches MIDI-Objekt für die neue Erstellung
rev_en_chord = pretty_midi.PrettyMIDI()
#Fügen Sie dem PrettyMIDI-Objekt ein Instrument hinzu
rev_en_chord.instruments.append(instrument)
#sparen
rev_en_chord.write('output/'+str(title) + '/' + str(title) +'_ins_' + str(program_num) + '.mid')
Ich habe das Gefühl, dass ich den Code schöner schreiben kann. Aufgrund der geteilten Dateien möchte ich Musik für jedes Instrument einzeln lernen.
Vielen Dank.
Recommended Posts