Seite 3 von 3

Re: Midi-Programm schreiben (Grundausführungen &so)

Verfasst: 02.10.2009 21:14
von bobobo
hmm

fang mal mit sowas an

Code: Alles auswählen

Enumeration
#file
#Win
#out
#font
EndEnumeration

midifile.s=OpenFileRequester("Midi","*.mid","Text (*.mid)|*.mid||Alle Dateien (*.*)|*.*",1)

If midifile
  LoadFont(#Font,"courier new",10)
  OpenWindow(#win,0,0,500,500,"Midifile",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  SetGadgetFont(#PB_Any,FontID(#font))
  EditorGadget(#out,0,0,500,500)
  AddGadgetItem(#out,-1,midifile)
  ReadFile(#file,midifile)

  While Eof(#file)=0
    out.s+ Right("0"+Hex(ReadByte(#file)),2)+" "
    o+1 ;counter
    If o=16 ; 16 Werte reichen
      l+1 ; zeile inkrement
      ll.s=Right("000"+Str(l),4)+" : " ; zeilenangabe formatieren
      AddGadgetItem(#out,-1,ll+out) ; Ausgabe
      out="" ; ausgabe resetten
      o=0    ; counter resetten
    EndIf
  Wend
  ;Rest auch anzeigen
  l+1
  ll.s=Right("000"+Str(l),4)+" : "
  AddGadgetItem(#out,-1,ll+out)
  CloseFile(#file)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
End

Re: Midi-Programm schreiben (Grundausführungen &so)

Verfasst: 02.10.2009 23:07
von Oliver90
Hallo bobobo
Danke für den Code,aber irgendwie komme ich nicht weiter,einfach ich bekomme nicht hin,ich versuche nach diese vorlage(Link http://www.larsrichter-online.de/lmids/midformat.htm )die Byts aufteilen, um Notenlänge & Notenhöhe zu bekommen,aber irgendwie will es nicht klappen.Weißt Du vieleicht wie die Byts aufgeteilt werden um Notenlänge & Notenhöhe zu bekommen ?

MfG
Oliver

Re: Midi-Programm schreiben (Grundausführungen &so)

Verfasst: 05.10.2009 12:48
von bobobo
das steht doch in der Beschreibung eigentlich recht gut drin
der Rest ist Abzählen und Zuweisen der Bytes


im Codearchiv (http://www.purearea.net) gibt es das Demo MidiFileDecoder.pb, welches Mididaten visualisieren
können soll
direktlink für ganz faule , obwohl es sich sicher mal lohnt im Codearchiv rumzugucken.


Für pb version 4.30 solltest Du dort aus

Code: Alles auswählen

Read MidiInstrument$(ct) 

Code: Alles auswählen

Read.s MidiInstrument$(ct) 
machen, ansonsten wirft es Fehler

ömm ... und der OpenFileRequester ist auch "merkwürdig"
dort mal eher

Code: Alles auswählen

MidiFileName$= OpenFileRequester("","*.mid", "Midi |*.mid",  0) 
damit es besser selektiert

Re: Midi-Programm schreiben (Grundausführungen &so)

Verfasst: 05.10.2009 15:43
von Oliver90
Hallo bobobo
Die Hex-Datei ist in ordnung,nur die Noten herausfiltern,die machen mir Proleme,Ich habe eine bekannte Midi-Datei und weiß wie die Noten sind,aber nach der Schema von oben benannte Link,bekomme die Noten nicht so,wie die sein sollen.
MfG
Oliver

Re: Midi-Programm schreiben (Grundausführungen &so)

Verfasst: 05.10.2009 15:50
von bobobo
dann nimm mal das programm aus dem codearchiv (siehe obigen post) und schau dir das mal genau an.

Wenn Du die Änderungen (wie im obigen post geschrieben) berücksichtigst läuft es unter 4.31 oder
auch 4.4beta