Issues im having with 3D SOUND

BlitzMax Forums/MiniB3D Module/Issues im having with 3D SOUND

RifRaf(Posted 2012) [#1]
Hey guys,

I'm moving to Blitzmax + MiniB3D for my future hobby coding but the sound is not working the way I expected it to. I am trying to convert my mesh based particle library, and it works great aside from the sounds not releasing and freeing as they do in B3D. I cant seem to locate my error.

if anyone has time and would like to help, please download the zip here, it is all source code and media. no binaries.
http://www.empowergames.com/rifraf_meshparticles.zip


What is has is a folder with Blitzmax, and B3D code tests.. to show how it works on B3D vs MAX

In max you will notice looped sounds never end.. I think the fix could be installed in the function KILLEMITTER, but I cant seem to figure it out.


Thanks so much. Im frazzled, however on a brighter note once I "Get it" on this part ill be feeling pretty good about minib3d as a valid alternative for me.

Last edited 2012


RifRaf(Posted 2012) [#2]
well now i feel silly. I found my problem. If you wanted to know , I had the sound removal in the "child" condition , when it should have been outside of that check. The KILLEMITTER function should look like this


';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
';;;         F U N C T I O N          ;;;
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function KillEmitter(ee:bbemitter)
If ee:bbemitter=Null Then Return 
DebugLog "starting kill"

Local Eks:bbEmitterkillsound
Local Dirtp:bbdirtparent

DebugLog "checking end sound"
If EmitterSnd2(EE.EmitterID)<>-1   Then
     EKS:bbEMITTERKILLSOUND=New bbEMITTERKILLSOUND
     eks.channel=EmitSound(part_sound(EmitterSnd2(ee.EmitterID)),ee.ent)
EndIf

DebugLog "removing parent"
EntityParent ee.ent,Null
ee.parent=0
DebugLog "checking kill link"

If EmitterKillLink$(EE.EmitterID)<>"" Then
     SpawnEmitterFast(EmitterKillLink$(EE.EmitterID),EntityX(ee.Ent),EntityY(ee.ent),EntityZ(ee.ent),ee.parent,ee.superparent)
EndIf
'check to see if a path exists for this emitter, and kill it.
DebugLog "removing path"

killpath ee.ent

  'thought this would help fix things in minib3d 3d sound.. but it causes crashes
   DebugLog "about to check soundchannel, repeater"
   If ee.soundchannel<>Null And EmitterSoundRepeat(EE.EmitterID)>0 Then 
  		EE.soundchannel.free()
                    ee.soundchannel=Null
    EndIf
   DebugLog "checking children in killer"

If CountChildren(ee.ent) Then
     dirtp:bbdirtparent=New bbdirtparent
     dirtp.ent=ee.ent
  Else
     FreeEntity ee.ent
EndIf
DebugLog "removing"
ee.Remove()
End Function




Last edited 2012