Forum: Mikrocontroller und Digitale Elektronik midi files parsen


von chris (Gast)


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.

von Sven B. (scummos)


Lesenswert?

Ja, pymidi ist anscheinend tot, aber hier gibt's ne ganze Menge anderer 
Python-Libs, die das evtl. können: 
http://pypi.python.org/pypi?:action=browse&c=361
Da findest du sicher was.

Grüße,
Sven

von chris (Gast)


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.

von Mark L. (m2k10) Benutzerseite


Lesenswert?

Hier könnte was für dich dabei sein:
http://www.gnmidi.com/gnfreeen.htm

Ist halt alte DOS-Software, aber MIDI ist ja auch nicht gerade das 
neueste Format ;-)

Grüße
Mark

von Sven B. (scummos)


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.

von chris (Gast)


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.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Das Problem mit den Paketen nachinstallieren haste aber nur bei Linux 
und selbst da wird das autoatisch per aptget erledigt.

von chris (Gast)


Lesenswert?

Hier im MC-Netz gibt es ja tatsächlich einen Artikel über 
AVR-Syntehsizer:
http://www.mikrocontroller.net/articles/AVR-Synthesizer

Bleibt nur die Frage: Wie werden die Mididaten konvertiert?

von Jonas B. (jibi)


Lesenswert?

Das Midi-Format ist sowas von einfach zu interpretieren, vorallem da 
Daten und Befehlybytes direkt zu unterscheiden sind, das kostet keinen 
Gehirnschmalz sondern nur Freizeit.

Lernt mal was!

Gruß

von chris (Gast)


Lesenswert?

>sondern nur Freizeit.

von der Du scheinbar zu viel hast?

von Ale (Gast)


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...

von Ale (Gast)


Lesenswert?

Hier gibts was interesantes...

http://www.sonicspot.com/guide/midifiles.html

Für ein parser guck mal bei der Propeller Foren ich hab schon dort was 
gesehen :)

von Simon K. (simon) Benutzerseite


Lesenswert?

chris schrieb:
> Hallo Zusammen,
>
> ich würde gerne auf einem MC Midi-Files abspielen. Dazu brauche ich
> einen Midiparser. Kennt jemand von euch ein gutes Projekt?
http://www.mikrocontroller.net/forum/codesammlung?filter=midi

von jonas biensack (Gast)


Lesenswert?

>>sondern nur Freizeit.

>von der Du scheinbar zu viel hast?

Neidisch?

von chris (Gast)


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

von chris (Gast)


Angehängte Dateien:

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?

von chris (Gast)


Lesenswert?

Auf der Arduino Seite wird ziemlich viel mit Midi gemacht.
Hier ein vereinfachter Midi-Player in C:
http://blog.tangrs.id.au/?p=551

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.