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.
#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 #3024042
Lesenswert?

Die frage ist einfach... gibts was für ein mikrocontroller mit wenig 
Speicher oder nicht ?... hat er es doch geschrieben!

hast du schon in Programmersheaven angeschaut ?...

Ich habe mich damit vor vielen Jahren befasst und hatte irgend eine 
Beschreibung gefunden... mals sehen ob ich es wieder finde...
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")
Gast #3026530
Lesenswert?

Das angehängte Midi-File ergibt folgendes Ergebnis:

...
NoteOn 90 48 2c 1e
NoteOff 80 4a 40
NoteOff 81 66
...
MidiController b0 40 7f 7c
...

Mit ist unklar, wie die Zeitinformationen für das Abspielen der Noten 
implemtiert sind. Liegen diese im MidiController-Kommando?
Angehängte Dateien:

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