Seite 1 von 1

Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 00:20
von downandout
Hallo!

Betriebssystem: Windows 8
Python: 3.4

Ich möchte ein ein MIDI - File in ein Wav - File verwandeln.

Hier erzeuge ich mein .mid File:

Code: Alles auswählen

from MIDI import *


my_opus = [
    96, 
    [   # track 0:
        ['patch_change', 2, 1, 8],   # and these are the events...
        ['note_on',   0, 3, 67, 200],
        ['note_off', 50, 3, 67, 0],
        ['note_on',   0, 2, 71, 100],
        ['note_off', 96, 2, 71, 0],
        ['note_on',   0, 9, 76, 96],
        ['note_off', 96, 9, 76, 0],
    ],   # end of track 0
]
'''
dtime = Spielzeit des Tons
channel = Instrument
note = wie Tabelle
velocity = Lautstärke
'''
f = open('file.mid','wb')
f.write(opus2midi(my_opus)) 
 
my_midi = opus2midi(my_opus)

# Source = http://www.pjb.com.au/midi/free/MIDI.py
Dieses möchte ich anschließend in ein .wav Datei konvertieren, welche Möglichkeiten habe ich da?

Ich könnte beispielsweise midisox Libary verwenden: http://www.pjb.com.au/midi/midisox.html
Das ist leider Command-Line basierend und eher für Linux entworfen. Ich weiß auch nicht wie ich das erfolgreich integrieren könnte.

Fluidsynth sollte angeblich auch funktionieren, scheitert aber daran, dass ich Fluidsynth im PATH nicht finde.
http://devonbryant.github.io/blog/2013/ ... th-python/
Anleitung dazu, auch für Windows:
http://sourceforge.net/p/fluidsynth/wik ... WithCMake/
$ pwd
fluidsynth-x.y.z
$ mkdir build
$ cd build
$ cmake ..
Weiters weiß ich nicht was ich nach erfolgreichem build mit cmake, code dazu oben, mit dem build anstellen, sollte bzw. sehe ich keine Veränderung.

Habe das hier schon durchgestöbert: https://wiki.python.org/moin/PythonInMusic

Ich habe zwar die Möglichkeit direkt das Midi File abzuhören und in wav zu speichern, dass dauert aber leider zu lange.
Gibt es ein gutes Modul, dass mir das möglich macht?
Wäre für Hilfe dankbar!

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 11:24
von BlackJack
@downandout: Du müsstest halt schauen wo die *.exe am Ende liegt und die irgendwo hin kopieren wo Dein Programm sie dann finden/ausführen kann.

TiMidity++ und WildMIDI wären sonst noch zwei Alternativen zu Fluidsynth.

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 17:53
von downandout
Danke für die Antwort!

Kann es sein das ich hier einen Build für Visual Studio bekomme, weil ich es installiert habe? Wie soll/bzw. kann ich das überhaupt mit Python nutzen?
Bild

Werd mir TiMidity++ und WildMIDI mal ansehen!

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 18:28
von BlackJack
@downandout: Wie sollst Du was mit Python nutzen? Fluidsynth ist ein Kommandozeilenprogramm. Das kann man von Python aus aufrufen. Mit Hilfe des `subprocess`-Moduls.

Keine Ahnung was Du mit „Build für Visual Studio” meinst.

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 18:47
von nezzcarth
BlackJack hat geschrieben:Fluidsynth ist ein Kommandozeilenprogramm. Das kann man von Python aus aufrufen. Mit Hilfe des `subprocess`-Moduls.
Allerdings gibt es auch ein Modul das zumindest unter python2 läuft und wenn ich das richtig verstehe angeblich auch unter Windows funktionieren soll, wenn die entsprechende dll vorhanden ist.

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 19:36
von BlackJack
@nezzcarth: Mit dem Modul kann man nur programmatisch den Synthesizer ansteuern aber keine MIDI-Dateien abspielen oder umwandeln.

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 21:23
von nezzcarth
@BlackJack: Du hast recht. Da war ich zu voreilig, entschuldigt :(

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 22:46
von downandout
Stimmt ein Kommandozeilenprogramm ist unpraktisch... Am liebsten hätte ich ein reines Python Programm, dass das beherrscht!

Gar nicht so einfach zu finden, bin auch noch relativ neu mit Python...

Re: Audio Konvertierung midi to wav

Verfasst: Mittwoch 11. März 2015, 23:27
von BlackJack
@downandout: Ein reines Python-Programm dürfte es nicht geben, dafür ist Python nicht die geeignete Sprache und es gibt ja bereits Lösungen.