MIDI-Dateien - Endetest versagt

Übersicht Ressourcen Sound & Music

Neue Antwort erstellen

 

René Meyer

Betreff: MIDI-Dateien - Endetest versagt

BeitragMi, Feb 04, 2004 5:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will hintereinander MIDI-Dateien abspielen:

Code: [AUSKLAPPEN]
 If ChannelPlaying(lied) = 0 Then
  ...
  lied = PlayMusic(Musik$(AktuellesLied))
 EndIf

Das funktioniert ganz gut. Aber BB 2D scheint das korrekte Ende der MIDI-Datei nicht zu erkennen. Ein Lied endet, beginnt einige Sekunden von vorn - und erst dann wird zum nächsten Titel geschaltet. (Der Code ist mitten in der Hauptschleife; er kann also nicht Grund für die Verzögerung sein.) Wie kann ich das verbessern?

Irritierenderweise spielt PlayMusic MIDI-Dateien (und sicher auch andere) in einer Endlosschleife ab, anders als in der Beschreibung des Befehls:

http://www.blitzbase.de/befehle2d/playmusic.htm

Mit B+ scheint das besser zu funktionieren; aber ich möchte nicht wegen eines Befehls wechseln ...
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

BladeRunner

Moderator

BeitragMi, Feb 04, 2004 5:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm... kanns nit probieren da auf der Arbeit, aber ich würde mal testweise so vorgehen:
Code: [AUSKLAPPEN]

If ChannelPlaying(lied) = 0 Then
delay 1000
end if


damit könntest Du sehen ob denn das Überlappen vor dem Neuanfang am playmusik liegt oder nit.


Alternativ wäre meine Überlegung, sowieso eine kleine Pause (mit Millisecs() ) einzulegen, da ich mir vorstellen könnte dass das einladen des neuen Midifiles für die Verzögerung verantwortlich sein könnte.

Aber wie gesagt: alles rein spekulativ und ungetestet (und noch dazu übermüdet .... Wink )
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

D2006

Administrator

BeitragMi, Feb 04, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hat jetzt nicht unmittelbar mit dem Thema zu tun, aber:

bei einigen Computern habe ich schon große Perfomanceprobleme
feststellen müssen, wenn man bei jedem Schleifendurchgang prüft,
ob eine MIDI datei noch abgespielt. dabei gingen die frameraten in den
Keller. Ich würde desshalb empfehlen, nur aller 2-5 Sekunden zu prüfen.

MfG
Dtdos
 

René Meyer

BeitragSo, Feb 08, 2004 4:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Guter Tip; mein Programm war ganz empfindlich langsamer geworden, so daß ich dachte, versehentlich ein Delay hineingedingst zu haben. Ich war drauf und dran, nach der Ursache zu suchen. :)

Nach einigem Hin und Her habe ich eine gute Lösung gefunden: Ich habe zu jedem MIDI-Lied seine Länge notiert und frage bei jedem Schleifendurchgang einfach ab, ob "aktuelle Zeit" minus "Startzeit" schon die "Länge des Liedes" erreicht haben. So komme ich ohne ein einziges Channelplaying() aus.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Neue Antwort erstellen


Übersicht Ressourcen Sound & Music

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group