Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi MIDI-Datei auslesen (nicht notwendigerweise abspielen) (https://www.delphipraxis.net/108527-midi-datei-auslesen-nicht-notwendigerweise-abspielen.html)

TypusMensch 15. Feb 2008 12:53


MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Hallo,

Ich suche eine Bibliothek oder Kompnente die die Events/Messages einer Midi-Datei ausliest inklussive der Abtrennung einzelner Tracks in einer Midi.

Abspielen muss ich die Midi nicht, auch nichts aufnehmen. Es geht mir nur darum herauszufinden, welche Noten in welchem Track zu welcher Zeit laufen. Auch darf das ganze nicht ausschließlich Real-Time funktionieren, da ich das Lied mir nich anhören will, sondern eben nur die Informationen herauslesen will. Hatte bereits auf Torry eine gute Komponente gefunden, leider läuft dann das erstellte Programm nicht unter Vista :(

shmia 15. Feb 2008 13:10

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Zitat:

Zitat von TypusMensch
Hatte bereits auf Torry eine gute Komponente gefunden,

Welche ??
Doku zu MIDI-Files

TypusMensch 15. Feb 2008 13:17

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
TMidiPlayer, TMidiScope v.1.3
siehe Torry ganz unten

Ja, die Doku ist gut. Die Theorie ist mir aber bekannt. Ich suche halt eine Bib./Kompo/Funktionssammlung, da ich selbst ehrlich gesagt im Moment wenig Zeit habe, selbst etwas zu bauen, welches die .mid ausklabaustern tut ^^.

shmia 15. Feb 2008 13:41

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Zitat:

Zitat von TypusMensch
TMidiPlayer, TMidiScope v.1.3
siehe Torry ganz unten

Dann wäre doch die Komponente TMidiFile aus Unit MidiFile fast genau das was du brauchst.
Das Event [TMidiFile.]OnMidiEvent wird timergesteuert abgefeuert und du kannst jedes Midi-Event empfangen.
Für deine Zwecke müsste am Timer aber noch eingreifen, da ein Midi-Song mit 10Min Länge auch so lange zum durchlesen brauchen würde.

TypusMensch 15. Feb 2008 13:55

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Wie gesagt die Komponente funktioniert beim Testen unter XP auch einwandfrei. Nur unter Vista kommt beim Programmstart bereits:

Zitat:

Programm.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
Würde ja auch die midifile.pas ändern, sofern ich verstehen könnte, woher der Fehler kommt. :(

shmia 15. Feb 2008 15:38

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Zitat:

Zitat von TypusMensch
Nur unter Vista kommt beim Programmstart bereits: ...

Das liegt wohl daran, dass das Demo-Prog die Komponente TMidiOutut verwendet.
Da hat sich unter Vista etwas geändert, so dass diese nicht mehr funktioniert.

Du müsstest mit einem leeren Formular und nur TMidiFile beginnen.

TypusMensch 15. Feb 2008 16:35

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Nein, klappt leider auch nicht. Irgendwo steckt der Wurm in der TMidifile :(

shmia 15. Feb 2008 16:42

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Zitat:

Zitat von TypusMensch
Nein, klappt leider auch nicht. Irgendwo steckt der Wurm in der TMidifile :(

Einfach mal alle Aufrufe zu SetPriorityClass und GetPriorityClass auskommentieren.
Dein Programm darf unter Vista die Priorität bestimmt nicht selbst ändern.

PS: Ein Breakpoint auf TMidiFile.Create setzen und dann im Einzelschritt (F8) durchgehen. So müsste das Problem doch einzugrenzen sein.

TypusMensch 15. Feb 2008 17:50

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Die entsprechenden Teile auskommentiert. Half dennoch nix.

Mit Haltepunkt zu arbeiten kann ich leider auch nicht, da ich selbst unter XP programmieren und teste, wobei alles eindwandfrei klappt. Nur ein Kollege sagt, dass es nich funzt. Liegt aber nicht an seinen Rechnern, sondern wie es scheint allgemein an Vista, weil es dann auch bereits auf anderen Rechner mit Vista getestet wurde und nicht funktioniert.

Werd hier noch verrückt. Ich hasse Vista :evil: Aber Danke für deine Hilfe. Vielleicht hättest du noch ein Hinweis...

Edit: Jedoch zeigt mir der Compiler an:
Zitat:

[Warnung] MidiFile.pas(404): Symbol 'AllocateHWnd' ist veraltet
[Warnung] MidiFile.pas(420): Symbol 'DeallocateHWnd' ist veraltet
[Warnung] MidiFile.pas(445): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[Warnung] MidiFile.pas(464): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
Ob es daran liegen kann?

TypusMensch 15. Feb 2008 20:47

Re: MIDI-Datei auslesen (nicht notwendigerweise abspielen)
 
Ach verdammt. Es lief genauso wenig unter XP.
Problem war, dass ich eine JvCSVTable von den Jedi benutze, dort einen Filenamen angegeben habe und Active auf False. Dennoch prüfte er scheinbar beim Programmstart nach dieser Datei. Kann er natürlich bei anderen nicht finden. Das war das eigentliche Problem.

Manchmal sieht man dem Wald vor lauter Bäumen nicht. Und wegen sowas hab ich den halben Tag verbracht.

Ich danke dir dennoch aufrichtig für deine Hilfe. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz