Seite 4 von 4

Verfasst: 25.11.2004 21:57
von Serge
komisch, "directsound" geht, "Directsound" nicht :)

edit:
Hm wird trotzdem, genauso wie wenn man kein Device angibt,
beim Abspielen der sounds ein ruckler erzeugt (besonders wenn viele in kurzer Zeit abgespielt werden)
Egal ob ich Buffer auf 0 oder 10000 setze.

Verfasst: 25.11.2004 22:37
von Kaeru Gaman
vielleicht liegt das aber dann an deiner soundkarte.

ich hatte auch soundruckler bei spielen mit ner onboard-SB16.
hab mir deswegen extra die 5.1 geholt, hat geholfen.

kannst mir ja mal 'ne testversion mailen, dann seh ich, ob das bei mir auch auftritt.

Verfasst: 25.11.2004 22:45
von Serge
Da ich mit dieser Soundkarte schon über 100 Spiele einwandfrei spielen konnte, gehe ich nicht davon aus ;)
Bzw. sogar wenns an meiner Soundkarte liegt, würde ich es nicht verwenden, da es schon möglichst jeder spielen können sollte.

Verfasst: 25.11.2004 22:50
von WolfgangS
vielleicht liegt das aber dann an deiner soundkarte.
Daran wirds wohl nicht liegen. Unabhängig von der Soundkarte sollte man immer ordentlichen Sound hören. Das Problem an der Sache ist, man muss wissen wie man die lib richtig Anwendet. Leider habe ich noch so viel Erfahrung damit. Das ist wie beim Autofahren, auch mit einem BMX X5 kann man mit Vollgas gegen die Wand fahren :allright:

Serge: Zeig code damit man den Bug nachvollziehen kann.

MFG
WolfgangS

EDIT
Funktioniert directdingsbums wenn Du es via play1.pb abspielst ?

Verfasst: 25.11.2004 22:57
von Serge
Naja am Code wirds wohl nicht liegen, sind ja nur die paar Befehle rüberkopiert und angepasst.
Im Spiel wird dann "plays()" aufgerufen.

Code: Alles auswählen

Enumeration
  #audiere
EndEnumeration

IncludeFile "includes/audiere.pbi"

If OpenLibrary(#audiere,"includes/audiere.dll")=0
MessageRequester("","Error audiere.dll",0):End:EndIf

Structure SOUNDSTRUCTURE 
  name.s
  sound.SoundEffect
  handle.SampleSource 
EndStructure 

NewList sounds.SOUNDSTRUCTURE()


AudioDeviceObject.AudioDevice=AUDIERE_OpenDevice(@"directsound",@"buffer=1000,rate=44100")    
    If AudioDeviceObject=0
    MessageRequester("","Error AUDIERE_OpenDevice:",0):End:EndIf

ExamineDirectory(1,"sounds/","*.wav")

While NextDirectoryEntry()=1
  AddElement(sounds())
  sounds()\name=DirectoryEntryName()
  tempstring.s="sounds/"+sounds()\name
  sounds()\handle=AUDIERE_OpenSampleSource(@tempstring,#FF_AUTODETECT) 
    If sounds()\handle=0 
    MessageRequester("","Error AUDIERE_OpenSampleSource",0):End:EndIf 
  sounds()\Sound=AUDIERE_OpenSoundEffect(AudioDeviceObject,sounds()\handle,#multiple)  
    If sounds()\sound=0                                        
    MessageRequester("","Error OpenSound",0):End:EndIf 
  sounds()\name=RemoveString(sounds()\name,".wav",1)
Wend

Procedure playS(*handle.soundstructure)
  test.Soundeffect=*handle\sound
  test\play()
EndProcedure
Edit:
Es Funktioniert auch bei mir, wie schon gesagt.
Es stockt lediglich im Spiel, insbesondere wenn ein sound abgespielt wird, der davor nicht kam oder wenn zur nahezu gleichen Zeit mehrere Sounds abgespielt werden.

Verfasst: 25.11.2004 23:08
von WolfgangS
Du lädst die Sounds aber nicht während der Laufzeit des Spieles ... oder ? :?

MFG
WolfgangS

Verfasst: 25.11.2004 23:10
von Serge
Nein,
wie gesagt, wird im Spiel die Procedure "playS" aufgerufen um einen Sound abzuspielen.