Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 12.10.2006, 16:09 Titel: Sounds ohne Verzögerung abspielen |
|
|
Ist das generell möglich? Ich habe da so meine Zweifel.
Bis vor kurzem verwendete ich immer die mciSensString-Variante über die WinAPI zum Soundabspielen.
Doch gerade, wenn im Hintergrund Grafikanimationen laufen, verursachte in solcher Aufruf immer einen
kurzem Stillstand der Grafiken. Klar, hab ich mir gedacht, liegt ja daran, dass der Sound jedesmal neu geladen wird.
Also hab ich nach einer Methode gesucht, mit der man Sounds aus dem Speicher abspielen kann und bin
auf die PlaySound()-Funktion der API gestoßen. Das Abspielen der Sounds aus dem Speicher funktioniert,
allerdings gibt es auch hier eine kleiner Verzögerung...
Hier mein Quellcode (die Konstanten hab ich mal dringelassen, vielleicht helfen sie euch ja weiter):
Code: |
declare function PlaySound lib "winmm.dll" alias "PlaySoundA" _
(lpszName as any, byval hModule as long, byval dwFlags as long) as long
const SND_ALIAS = &H10000
const SND_ALIAS_ID = &H110000
const SND_APPLICATION = &H80
const SND_ASYNC = &H1
const SND_FILENAME = &H20000
const SND_LOOP = &H8
const SND_MEMORY = &H4
const SND_NODEFAULT = &H2
const SND_NOSTOP = &H10
const SND_NOWAIT = &H2000
const SND_PURGE = &H40
const SND_RESOURCE = &H40004
const SND_SYNC = &H0
dim as byte Click()
f = freefile
open exepath + "\click.wav" for binary as #f
redim Click(lof(f))
get #f, , Click()
close f
' mit Verzögerung:
dim as long TMP
TMP = PlaySound(Click(0), 0, SND_Memory)
' Geht erst gar nicht:
TMP = PlaySound(exepath + "\click.wav", 0, SND_FILENAME)
|
Das untere Beispiel funktioniert nicht einmals.
Daher meine Frage: Ist es überhaupt möglich mit Hilfe der API Sounds verzögerungsfrei abzuspielen oder sollte ich lieber eine LIB wie FMOD verwenden?
Danke im Voraus,
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.10.2006, 22:15 Titel: |
|
|
FMOD falls du damit nciht klarkommst, einfach mal bei der forensuche "rain" eingeben,da findest du meinen regensimulator,der FMOD verwendet... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1874 Wohnort: D59192
|
Verfasst am: 14.10.2006, 18:36 Titel: |
|
|
versuch mal
Code: | TMP = PlaySound(Click(0), 0, SND_MEMORY or SND_ASYNC) |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 14.10.2006, 20:52 Titel: |
|
|
Soweit ich weiß, kann man das ganz einfach machen.
http://forum.qbasic.at/viewtopic.php?p=12578#12578
Wenn man die wave datei(bei mp3 gibts verzögerung, soweit ich weiß) zuerst öffnet, dann kann man die nacher abspielen(mit dem alias) und das ohne verzögerung. _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 16.10.2006, 17:10 Titel: |
|
|
Das Prog von Sebastian arbeitet aber mit mciSendString, und das habe ich ja schon ausprobiert und es ist nicht wirklich schnell...
@volta: Danke sehr für den Tipp, kann ich aber jetzt nicht mehr ausprobieren, da ich
jetzt auf FMOD umgestiegen bin. Ist wirklich hundertmal besser und schneller...
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 16.10.2006, 22:18 Titel: |
|
|
Hi,
Hast du FMod 3.75 oder FModEx(4.0)?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 16.10.2006, 22:51 Titel: |
|
|
Ähm...
Also ich hab schonmal nen ganz billigen moorhuhn-clone gemacht, bei dem ich den sound vom schießen auch per mcisendstring abgespielt habe. Und da war keine Verzögerung, das programm lief auch noch normal weiter. Du musst halt nur darauf achten, das du die datei vorher lädst und nacher nur per mcisenstring "PLAY meinSoundAlias" (oder wie auch immer) abspielst. Und es sollte auch keine MP3 Datei sein, sonst hat man 100ms Verzögerung(liegt wahrscheinlich an der komprimierung). _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 17.10.2006, 10:58 Titel: |
|
|
@ytwinky: Ich glaube, das ist FModEx...
@programmierer: Kann auch sein, dass ich es falsch angewandt habe, aber mit FMOD ist
es wegen der Plattformunabhängigkeit ja ohnehin besser
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1874 Wohnort: D59192
|
Verfasst am: 18.10.2006, 14:12 Titel: |
|
|
Hi,
weiß jemand wie 'free' denn nun FMod(Ex) ist.
Das scheint mir auf der HP sehr ungenau beschrieben, jedenfalls weder GPL noch LGPL.
Selbst in einer Shareware-Version eines eigenen Progs sind doch schon 100$ fällig? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 18.10.2006, 14:30 Titel: |
|
|
Jop, ich vermeine auf einer Delphi-Website gelesen zu haben:
Wenn du's privat an privat verkaufst, dann 100$. Wenn du die Firma bist oder an eine Firma verkaufst, dann musst du 1000$ bezahlen. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 18.10.2006, 21:22 Titel: |
|
|
für freeware-projekte ist fmod kostenlos. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
|