ChannelPlaying mit best. Datei zu langsam

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Eingeproggt

Betreff: ChannelPlaying mit best. Datei zu langsam

BeitragSo, Mai 17, 2009 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute!

Ja, von mir kommt auch mal wieder ein Problem das eine Diskussion bedarf.

Mit der von mir verwendeten Hintergrundmusik (hier zu Testzwecken zum runterladen (Rechtsklick->Speichern unter bzw. Ziel speichern unter)) benötigt ChannelPlaying abartige 100ms um mir ein Ergebnis zu liefern. Mit anderen von mir getesteten MP3s läufts ohne Probleme mit 0ms.

Testcode:

Code: [AUSKLAPPEN]
Global channel=PlayMusic("bg.mid")

Repeat
   time=MilliSecs()
   If Not ChannelPlaying(channel) Then
      Print "Restart"
      channel=PlayMusic("bg.mid")
   EndIf
   Print (MilliSecs()-time)+"ms"
   Delay 20
Until KeyHit(1)
End


Wieso ist das so und was kann ich nun tun, damit die Midi-Datei flüssig verarbeitet wird? (In MP3 will ich wegen dem Speicherplatz nicht unbedingt wandeln... In Midi ist dieses ~10min Stück gradmal 240kb groß!)

Danke für eure Ratschläge!

Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Mai 17, 2009 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab es eben mit ein paar Midi-Dateien aus den guten altem Doom ausprobiert und hatte auch immer ~100ms. Wie man das umgehen kann, weiß ich nicht. Man sollte auch beachten dass auf unterschiedlichen Rechnern sich Midi-Dateien unterschiedlich anhören können. Also mit anders klingenden Instrumenten etc... Schon allein die selbe Datei unter BB und unter WinAMP ergibt einen Unterschied.

Was ich dazu empfehlen kann sind Modul-Dateien. Diese klingen nicht nur überall gleich, sondern sind auch noch relativ klein dabei. Also Musikdateien mit der Endung .mod, .xm, .s3m, .it können abgespielt werden. Und diese haben auch ~0ms Zugriffszeit. Ansonsten bleibt die Möglichkeit jede Midi-Datei dessen Spieldauer als Anhaltspunkt zu nehmen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

juse4pro

BeitragMo, Mai 18, 2009 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weis es nicht 100% ig aber ich denke: wenn eine MIDI datei von BB abgespielt wird wartet Channelplaying auf die nächste Note und macht dann erst weiter...

vielleicht kommt es desshalb zu diesem verzug?!... Very Happy
Portfolio |LinkedIn |XING

Xaymar

ehemals "Cgamer"

BeitragMo, Mai 18, 2009 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
nein das liegt an der api/vollbild api. midi dateien werden mit einem string zu einem parser gesendet. wenn das bb programm eben ausgelastet war dauerts länger. DLL's könnten helfen. wenn ich das midi besipiel für PB wieder finde kann ich dann sogar ne userlib erstellen

da isses ja:
Zitat:
; Author: cnesm (updated for PB4.00 by blbltheworm)

;erstelle bank
;öffne midi datei mit SEQUENCER(Keyboard) als midiinstrument
;spiele die midi ab
Buffer$=Space(128)
mciSendString_("OPEN guitar_sample.mid TYPE SEQUENCER ALIAS MIDI",Buffer$,128,0)
mciSendString_("PLAY MIDI",0,0,0)

;Schließt und stoppt die midi wieder
mciSendString_("CLOSE MIDI",0,0,0)


der befehl ist also mciSendString
Parameter:
String$,
Buffer(Pointer zu einer Bank)
Buffergröße(Größe deiner Bank),
Int(kann null(0, nicht NULL) bleiben, hWnd)

edit:
argh frage falsch verstanden. ist aber derselbe befehl, suche dir auch gerne den string zum abfragen der infos raus

edit2:
http://msdn.microsoft.com/en-us/library/ms709492(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms707322(VS.85).aspx

msdn ist grade abgekackt kann also nicht wissen ob beide links richtig sind und ein ergebnis liefern
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Mai 18, 2009 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir ist gestern vor dem Zu-Bett-Gehen noch eingefallen, dass es auch an der Latenz der Soundkarte liegen könnte. Zumindest würde es die stabilen 100ms erklären. Denn Midi-Dateien werden direkt auf der Soundkarte verarbeitet, während der ganze andere Kram vom Prozessor berechnet und so zur Soundkarte geschickt wird.

Berücksichtig man auch, dass Mini-Dateien auf unterschiedlichen Rechnern unterschiedlich klingen können, würde ich wirklich auf Module bauen. Diese sind ebenfalls sehr klein. Klingen auf jeden Rechner absolut identisch. Und man kann mit BB-Bordmittel mit 0ms auf den Status zugreifen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xaymar

ehemals "Cgamer"

BeitragDi, Mai 19, 2009 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe nun endlich rausgefunden warum blitz solange braucht.
Blitz führt diese Playmidi immer in 1/10 sekunden schritt aus und deshalb wartet es da anscheinend solange.("PLAY ... FROM ... TO ...")

(ich erhielt denselben effekt in pb mit der methode oben)
Warbseite

Eingeproggt

BeitragDo, Mai 21, 2009 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Danke!
Hab unter der Woche leider aum Zeit mich mitn programmieren zu beschäftigen aber jetzt wird erstmal n guter Musikkonverter gesucht der mod-Dateien erstellen kann Smile

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

BtbN

BeitragDo, Mai 21, 2009 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
SUPER

Eingeproggt

BeitragDo, Mai 21, 2009 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte ich mal... War auch wirklich super... nur leider konnte ich aus welchem grund auch immer weder mit PowerDVD noch mit Winamp Avi-Dateien abspielen wenn SUPER auf meinem PC installiert war...?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

BtbN

BeitragDo, Mai 21, 2009 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Da kann SUPER relativ wenig für, es ist nur ein frontend für ffmpeg und konsorten.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 21, 2009 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Trackermodule werden nicht zu diesen konvertiert, sondern werden dazu erstellt. Eine mod-Datei (die auch ein Trackermodul ist) beinhaltet einzelne Instrumente in ähnlicher Form wie wav-Dateien auch, die dann durch eine Tabelle (Tracker) bestimmt werden, wann und wie welches Instrument abgespielt werden soll. Erst dadurch wird so ein Trackermodul so klein, da jedes Instrument nur einmal abgespeichert werden muß, statt wie bei mp3-Dateien komplett auf die Musiklänge gezogen sind. Es ist also fast unmöglich eine mp3- oder wav-Datei automatisch in ein Trackermodul zu konvertieren. Man muß sie selbst komponieren, andere dazu beauftragen, oder man macht sich nach den unmengen des bereits vorhandenen Pool freier Trackermodule auf die Suche.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group