midi files parsen

Gast #3016805
Lesenswert?

Hallo Zusammen,

ich würde gerne auf einem MC Midi-Files abspielen. Dazu brauche ich 
einen Midiparser. Kennt jemand von euch ein gutes Projekt?

Im ersten Schritt würde ich gerne mittels eines fertigen Programmes auf 
dem PC Midi-Files untersuchen. Gibt es dazu geeignete Werkzeuge?

Vielen Dank im Voraus,
chris

Für Python habe ich etwas gefunden:
http://pypi.python.org/pypi/midiparser
Da finde ich allerdings keinen Download.
Gast #3016858
Lesenswert?

>http://pypi.python.org/pypi?:action=browse&c=361
>Da findest du sicher was.

Ich hatte den Eindruck, dass alle diese Sachen etwas "aufgeblasen" sind. 
Was ich suche ist einfach ein Programm, welches mir die Midibefehle wie 
z.B. 0x80 in Klartext "NotenOn" übersetzt und auf dem Bildschirm 
anzeigt.

Wahrscheinlich ist es am besten, ich schreibe mir das Ding selber.
#3016902
Lesenswert?

"aufgeblasen"... soll das Ding auf einem 486 laufen, oder was? 
Ansonsten, warum ist es relevant, ob die Bibliothek mehr Funktionen hat 
als du brauchst?

Das ist im Endeffekt der Grund, warum alles in der Computerwelt so 
schlecht funktioniert: statt existierende Projekte zu verwenden und bei 
Bedarf zu verbessern erfindet jeder immer das Rad neu.
Gast #3017228
Lesenswert?

>"aufgeblasen"... soll das Ding auf einem 486 laufen, oder was?
>Ansonsten, warum ist es relevant, ob die Bibliothek mehr Funktionen hat
>als du brauchst?
>Das ist im Endeffekt der Grund, warum alles in der Computerwelt so
>schlecht funktioniert:

Ein großes Problem in der "Computerwelt" ist, dass die meisten Programme 
"Alles" und "Nichts" können. Ständig muss man irgendwelche riesig Pakte 
Installieren, Abhängigkeite werden nicht erfüllt, es muss etwas 
nachträglich "Upgedate" werden oder das Programm ist zu kompliziert.
Gast #3026528
Lesenswert?

Um Midi Files besser analysieren zu können, versuche ich einen Midi-File 
Parser zu schreiben.
Hier die erste Version in Python. Es werden 3 Midi-Kommandos erkannt:

- NoteON
- NoteOff
- Midicontroller

1
import binascii
2
from struct import unpack
3

4
def toByte(value):
5
    x=unpack('%sB' % len(value), value)
6
    if len(x)>0:    
7
        return x[0]
8
    else: 
9
        return 0
10
    
11
def readFileAndPrint(filename):
12

13
    with open(filename, "rb") as inf:
14
        byte =inf.read(1)
15
        inf.seek(-1,1) # one byte back
16
        while byte != "":
17
            byte = inf.read(1)
18
            if toByte(byte)&0xF0==0x80:
19
                print
20
                print "NoteOff",
21
            if toByte(byte)&0xF0==0x90:
22
                print
23
                print "NoteOn",
24
            if toByte(byte)&0xF0==0xB0:
25
                print
26
                print "MidiController",
27
            print binascii.hexlify(byte),
28

29

30
readFileAndPrint("tune.mid")

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren