[PYTHON] Extrahieren Sie nur den Klang eines bestimmten Instruments aus der MIDI-Datei und machen Sie es zu einer separaten Datei

Einführung

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.

Beispielcode 1 (Nehmen Sie ein Instrument heraus und machen Sie es zu einer Datei)

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.

Beispielcode 2 (alle Instrumente herausnehmen und in Dateien ablegen)

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')

Am Ende

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

Extrahieren Sie nur den Klang eines bestimmten Instruments aus der MIDI-Datei und machen Sie es zu einer separaten Datei
Auszug nur vollständig aus dem Ergebnis von Trinity
Verwenden Sie Pillow, um das Bild transparent zu machen und nur einen Teil davon zu überlagern
Geben Sie die Lautstärke unter Linux an und spielen Sie den Sound ab
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
(Memo) Bis Sie nur den gewünschten Teil von einer bestimmten Webseite extrahieren, konvertieren Sie ihn in eine Sphinx-Seite und drucken Sie ihn als PDF
[Python-Scraping] Geben Sie die URL und den Titel der Site mit einem bestimmten Schlüsselwort in eine Textdatei ein
Ich möchte Tag-Informationen (Titel und Künstler) einer Musikdatei (flac, wav) extrahieren.
Durchsuchen Sie das Verzeichnis und erstellen Sie eine Liste mit Verzeichnispfaden und Dateinamen
Finden Sie alle Muster, um eine bestimmte Zahl aus dem Satz zu extrahieren
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Tipps: [Python] Stellt ein Array nach dem Zufallsprinzip wieder her und extrahiert es aus einer Fasta-Datei
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
[Persönliches Memo] Holen Sie sich Daten im Web und machen Sie daraus einen DataFrame
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Erstellen Sie DNN-CRF mit Chainer und erkennen Sie den Akkordfortschritt der Musik
Machen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (4. Datenstruktur)
So speichern Sie die Feature-Point-Informationen des Bildes in einer Datei und verwenden sie zum Abgleichen
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Machen Sie aus einem Python-Programm einen Daemon und führen Sie es automatisch aus, wenn das Betriebssystem gestartet wird
Python - Lesen Sie Daten aus einer numerischen Datendatei und suchen Sie die multiple Regressionslinie.
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
Extrahieren Sie nur den Dateinamen mit Ausnahme des Verzeichnisses im Verzeichnis
Kopieren Sie die Liste in Python
Extrahieren Sie Dateien aus der RPM-Datei, ohne sie zu installieren
Berücksichtigung der Stärken und Schwächen von Python
Wenn Sie eine Methode in einer Ruby-Klasse definieren und dann eine Methode darin definieren, wird sie zu einer Methode der ursprünglichen Klasse.
Extrahieren Sie die Textinformationen in die MP3 / MP4-Datei und speichern Sie sie in der Textdatei (* .lrc) für Sony Walkman.
[Python3] Machen Sie einen Screenshot einer Webseite auf dem Server und schneiden Sie sie weiter zu
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
[Python] Ändern Sie die Textfarbe und Hintergrundfarbe eines bestimmten Schlüsselworts in der Druckausgabe
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
[Shell Art] Nur wenn es ein Vielfaches von 3 ist und eine Zahl mit 3 dumm wird
Python2 / numpy> Ersetzen Sie nur eine bestimmte Spalte in einer Datei durch Spaltendaten aus einer anderen Datei> numpy.c_
Lesen Sie die CSV-Datei mit dem Jupiter-Notizbuch und schreiben Sie die Grafik übereinander
Es scheint, dass sich das Modul von train_test_split von 0,20 ändert und die Verfallswarnung bei 0,18 angezeigt wird.
Erstellen Sie eine Liste mit Längen- und Breitengraden und konvertieren Sie die UTM-Koordinaten sofort → Dateiausgabe
So extrahieren Sie Daten in einer bestimmten Spalte in einem bestimmten Blatt in mehreren Excel-Dateien gleichzeitig und fügen Sie die Daten in jede Spalte in einer Zeile ein
PGM, das die Differenz des angegebenen rechteckigen Bereichs von der Kamera nimmt und den Ton glättet, wenn die Änderungsrate eine bestimmte Rate überschreitet
Ich möchte mit Python nur das Gesicht aus einem Personenbild ausschneiden und speichern ~ Gesichtserkennung und Zuschneiden mit face_recognition ~