[Workaround] MIDI-Dateien laden äußerst langsam
Übersicht

PacManiBetreff: [Workaround] MIDI-Dateien laden äußerst langsam |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen,
der Aufruf von PlayMusic("datei.mid") benötigt in meinem Spiel mindestens 10 Sekunden. Erst danach wird die Musik abgespielt. Ich hab es mit verschiedensten MIDI-Dateien ausprobiert, das Problem besteht bei allen. Ich habe in meinem Laptop einen simplen Realtek Onboard Soundchip - aber eine superteuere Soundkarte wie in meinem PC wirds für alte MIDIs wohl kaum brauchen? Ich habe bereits eine OGG-Datei verwendet, die deutlich schneller (1 Sekunde) lädt und darüber hinaus natürlich sogar bessere Qualität liefert. Aber ich möchte lieber MIDIs verwenden. Davon habe ich ziemlich viele zusammenkomponiert (mittlerweile 200) und deswegen sparen diese deutlich Platz ein im Gegensatz zu 200 daraus konvertierten OGG-Dateien. Liegt es einfach an Blitz? Gibt es Ausweich-Bibliotheken für MIDI-Playback? Gruß, Pac-Man ---------------------------- LÖSUNG im Laufe der Diskussion: Es hat sich herausgestellt, dass Blitz Probleme hat, MIDI-Dateien unter Windows 7 schnell zu laden. Die o.g. Zeiten treten immer auf. Als Workaround sollte man hier auf die Bass.dll ausweichen oder das Tracker-Format nutzen. |
||
- Zuletzt bearbeitet von PacMani am Di, Sep 20, 2011 13:50, insgesamt 2-mal bearbeitet
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du könntest die Midi-Datei im voraus laden und nicht im Spiel. ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Zustimmung, ist ja nichts 3D spezifisches. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dont_know_to_use: 10 Sekunden mal 200 Lieder macht 2000 Sekunden = über 33 Minuten Ladezeit. Das hat wohl wenig Sinn. | ||
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
MP3-Dateien nutzen? | ||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon mal an Lizenzen gedacht? (ab 500 Einheiten?)
Außerdem hat er doch schon gesagt, dass er OGG schon probiert hat, aber MIDI nutzen möchte. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir irgendjemand erklären, warum die so langsam laden?
Ersteinmal.. Pac-Man hat hier nicht nach alternativen gefragt. Sondern nach dem grund. Wieso kommt eigentlich keiner auf die idee, da mal eine antwort zu geben? ![]() Ich muss zugeben, midi ist nun das, womit ich mich als letztes beschäftigen würde.. ich weiß nur grob, was eine midi datei ist und das ich niemals eine selbst komponieren könnte. Vielleicht kann dir Midimaster da helfen, das ist grade der einzige hier am Board, von dem ich weiß, das er in diesem Thema drin ist ![]() entweder meldet er sich hier oder du fragst einfach mal höflich per PM an =) |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke...
Gibt es irgendwelche Ausweich-Bibliotheken für MIDI-Playback? |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
zunächst vorneweg 10sec sind nicht normal! Da liegt definitiv ein Fehler vor. Hier einige Gedanken von mir:
Latenz? Ich würde mal nicht auf das Laden als Ursache für das Problem tippen, sondern das Aufbereiten des WAV-Tables. wenn du mir die MIDI Datei sendest, dann will ich gerne mal gucken, wie schnell ein externes (echtes) MIDI-Instrument mit dem Abspielen beginnt. Hast du wirklich mal direkt nach der "PlayMusic..."-Zeile eine BlitzBasic: [AUSKLAPPEN] Print MilliSecs()-Zeit eingefügt? Hier siehtst Du dann, wie schnell BB wirklich mit der Verarbeitung des Befehls fertig war. Der Rest wird "Latenz" genannt und ist die Zeit, bis das System danach mit dem Abspielen des ersten Sounds beginnt. Typischerweise liegt hier die Zeit bei 200msec bis 500msec... 10 sec lassen sich damit nicht erklären... Vorzähler? weitere Frage: Hast Du die MIDI-Datei selbst erstellt? Möglicherweise hat die Datei am Anfang mehrere Takte "Vorzähler" hinzugefügt? MehrSpur? Es gibt zwei Verfahren, MIDI-Spuren zu speichern. In dem ersten Verfahren werden erst die Daten der Spur 1 und anschließend die Daten der Spur 2 in die Datei geschrieben, u.s.w. Das gesamte Einlesen der Datei muss abgewartet werden und das anschließende Wiederherstellen eines abspielbaren Streams ist dabei aufwändig. Das zweite Verfahren speichert alle Ereignisse nach ihrem zeitlichen Auftreten, also zuerst alles was in den Spuren 1 ,2, u.s.w. in Takt 1 benötigt wird, dann alles aus allen Spuren , was in Takt 2 benötigt wird, dann... Solche Dateien können mit dem Abspielen sogar schon beginnen, bevor die gesamte Datei geladen wurde. Gibt es Alternativen? Wenn Du die Ursache gefunden hast, wirst du nicht mehr nach Alternativen suchen müssen. Bei "Alternativen" müsste man auch wissen, warum Du bewußt auf MIDI setzt, was Du dir davon an Mehrwert versprichst. Erst dann kann man Alternativen dahingehend prüfen. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Midimaster,
5-10 Sekunden, so lange benötigt bei mir jede (egal welche) MIDI-Datei zum Laden. Ich habe die Dateien dann mal deinen Vorschlägen entsprechend nachgeprüft: Latenz Ich habe eine ZIP mit einer Handvoll bekannter Songs im MIDI-Format hochgeladen, die bei mir alle das gleiche Problem haben. Du kannst sie dir von meinem FTP herunterladen: http://pacman.highfsb.com/blitzforum/midimusik.zip Ich habe eine Messung durchgeführt: 6682 Millisekunden bei "All That She Wants.mid" oder 6502ms bei "Alf.mid" z.B.. Vorzähler Nein, die Dateien nun sind nicht von mir erstellt. Ich weiß leider auch nicht genau, was ein Vorzähler ist. Ein paar Takte Pause am Anfang? Ja, die haben einige Stücke, aber deswegen hängt ja nicht die ganze Anwendung, nur weil gerade kein MIDI-Signal verarbeitet wird. Mehrspur In Anvil-Studio geöffnet sehe ich, dass es sich um Mehrspurer handelt. Zumindest konnte ich bei meinen Stichproben keine MIDIs ausmachen, bei der jedes Instrument in nur einer Spur liegt (ich glaube nicht, dass Anvil Studio von sich aus Mehrspurer aus den MIDIs erzeugt). Witzigerweise lädt Windows Media Player die Dateien ja ohne Verzögerung. Auf MIDI möchte ich aufgrund der Anzahl verschiedener Musikstücke und der geringen Dateigröße dabei setzen. 200 Dateien im OGG-Format sind ja nicht sehr klein. Außerdem dachte ich zuvor auch noch, dass MIDI-Dateien schneller laden als OGG-Dateien. |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Pacman!
Ich habe immernoch wenig ahnung von Midis ![]() Aber ich werde nacher mal schauen, ob ich die dateien bei mir in irgendeiner form geladen kriege. Wenn bei mir ebenfalls das problem auftritt, weiß Midimaster vllt schon mehr ![]() Wie wäre es, wenn du in der Zwischenzeit mal ein kleines testprogramm schreibst, welches die mididateien lädt und abspielt und die zeiten Protokoliert? Protokolieren im sinne: Statt print die zahlen direkt in eine TXT datei schreiben, schön leserlich mit dateinamen und mehreren abnahmestellen der Millisekunden. Sodass jeder einzelne schritt vom aufruf des ladens bis zum tatsächlichen abspielen auch vermerkt wird. Allerdings möchte ich dich bitten, das ganze in eine datei zu packen, dh in kein bestehendes projekt einzupflegen. So kannst du hinterher einen kleinen test rumreichen (evlt an freunde/bekannte mit verschiedenen OS oder auch hier im forum) und sehen, ob dieses problem nur bei dir lokal besteht. Zumindest wäre das so der erste schritt den ich einleiten würde ![]() ![]() So, bin mal weiter system ausmisten, pc startet nimmer *g* |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich habe ein Minimal-Programm geschrieben, um zwei Dateien zu testen:
Bei beiden Dateien habe ich den Namen ein wenig geändert. Die Ergebnisse sind zufriedenstellend: Die kleinste (polonaise) benötigt bei mir 82msec bis sie startet, die größte (aquarela) 280msec. Der Testrechner ist mein Uralt-Laptop mit Celeron M und Win XP, natürlich nur Onboard-Audio. Die "alf.mid" ist nach 72msec geladen, da aber dort eindeutig ein takt pause zu Beginn ist, hört man sie erst nach ca 1 sec. Die "AllThat" benötigt 125msec, zu hören gibt es aber erst was nach 3 sek, weil auch hier eine Pause eingetragen ist. Test-Code: BlitzBasic: [AUSKLAPPEN] Zeit=MilliSecs() Bitte teste diesen Code mal genauso an deinem Rechner. Welcher Rechner, welches OS? Dann sollten wir herausfinden, was die Unterschiede sind. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
polonaise: 7189
aquarela: 7157 alf: 6787 allthat: 6932 Der Rechner ist in diesem Fall ein Laptop, und zwar das Acer Aspire 5530G. Windows 7 x86 SP1. Vermutlich habe ich einfach einen schrulligen Audiotreiber. An den Soundfonts habe ich nix eingestellt, weils da auch nix umzustellen geht (Microsoft MIDI-Mapper). |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
gemessen mit meinem Beispielcode? ... wow!!! dann tippe ich mal auf ein WIN7-Problem...
ich werde mal meinen WIN7-Rechner anwerfen und das Beispiel dort laufen lassen. Teste mal das hier: BlitzBasic: [AUSKLAPPEN] Zeit=MilliSecs() nur um auszuschließen, dass es nicht irgendwas am File-System ist.... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ergebnis: 19.
Mein Level-Lade- und Speichersystem macht auch keine Zicken sondern lädt unbemerkbar schnell. |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aloa,
das liegt bestimmt nicht an Blitz. Dein eingetragener Standart b- Midi syntheser, wird wohl ein Problem haben. Midi dateien werden ja nciht abgepspielt, sondern nachgespielt. Sie können auf jeden Computer anders klingen und auch anders schnell sein. Bei manchen Computern (bestimmt 5-10%) funktionieren sie garnicht. Im Windows unter Audio kann man da sicherlich einstellen, dass es bei dir schneller geht. |
||
between angels and insects |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, unterschiedlich schnell werden sie auf den verschiedenen PCs wohl kaum abgespielt werden. Das sie anders klingen, weiß ich. Auf anderen Rechnern mit Standard-MS-Synthesizer dauert die Ladezeit aber auch nicht so lang. | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
schlechte Nachrichten....
Verwende ich einen WIN-7-Rechner werden auch bei mir über 8000msec gebraucht, wenn man eine der MIDI-Dateien abspielen will. Hier liegt wohl eine Inkompatibilität zwischen BB und WIN-7 vor. Die Tage von BB sind gezählt! (...oder die von WIN-7 ![]() Jetzt musst Du dich auf die Suche nach einer WIN-7 konformen DLL machen, die sich auch noch von BB aus ansprechen lässt. Unter BMax steht ja der Befehl PlayMusic() leider gar nicht zur Verfügung. #EDIT# ich habe grad noch mal im englischen Forum nachgelesen. dort rät man zur Verwendung der BASS.DLL http://blitzbasic.com/toolbox/toolbox.php?tool=207 ... oder der MCI-Library von Slotman... (wo auch immer die ist...) |
||
- Zuletzt bearbeitet von Midimaster am Di, Sep 20, 2011 10:38, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal so ganz nebenbei: Ich weiss, dass es zwar saumässig viele Stücke sind, aber hast du schon in Erwägung gezogen, von Midi auf ein Tracker-Format umzusteigen? Damit meine ich .it, .xm, .mod und Konsorten. Diese bieten grundsätzlich mehr Möglichkeiten als Midi, da die verwendeten Samples (und diese können beliebig sein) in der Datei mitgespeichert werden. Dadurch bläht sich zwar die Dateigrösse etwas auf, aber je nach Anzahl, Länge und Qualität der Samples bleibt sie dennoch weit unter 100kiB. Ein weiterer Vorteil ist halt auch, dass diese rechnerunabhängig gleich klingen. Ach ja, und: BlitzBasic spielt diese auch von Haus aus ab ![]() Das grösste Problem wäre halt die Konvertierung der Tracks an sich. ![]() mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit MODPlug Musik zu machen und in B3D abzuspielen ist evtl. keine gute Idee.
Ich hatte das früher mal versucht und es führte zu Abstürzen von Blitz. Ich hatte es irgendwann aufgegeben und weiß nicht, woran genau es lag, aber der Fehler ist möglicherweise noch immer da. Mir wurde iirc gesagt, es läge an MODPlug, also könnte es immerhin mit anderen Trackern gehen. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group