Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sounds ohne Verzögerung abspielen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 12.10.2006, 15:09    Titel: Sounds ohne Verzögerung abspielen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.10.2006, 21:15    Titel: Antworten mit Zitat

FMOD bin dafür 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 14.10.2006, 17:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 14.10.2006, 19:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 16.10.2006, 16:10    Titel: Antworten mit Zitat

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... lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 16.10.2006, 21:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 16.10.2006, 21:51    Titel: Antworten mit Zitat

Ä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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 17.10.2006, 09:58    Titel: Antworten mit Zitat

@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 lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 18.10.2006, 13:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 18.10.2006, 13:30    Titel: Antworten mit Zitat

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. geschockt
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.10.2006, 20:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz