BlitzBassStudio 1.7.x

Blitz3D Forums/Blitz3D Userlibs/BlitzBassStudio 1.7.x

Hi, here is a beta version of 1.7.0

http://www.abrexxes.huntingsoftware.de/temp5/bbs170.zip

Note: the 3D Part is not working at the moment. If you find some problems with the demos (except 3D) please give me a note.

@John, if have remade (and deletet) the stuff (already done for 1.7.0) so i hope that you can compile this here. If not, wait for the new stuff.

If someone will share "codesnippets" for Bass, they are wellcome (vumeters, functions, whatever)


----- v.1.x.x
* changed files: a lot! Read this here for API changes!
- removed bass_tag plugin (dll/include)
- update modinfo to 1.5 (see modinfo folder for new commands)
- addet new functions to modinfo/functions.txt (decls update)
- added new function "BASS_Debug", see docs (blitz_bass_studio_help_functions.txt)
- added new function "BASS_CheckVersion", see docs (blitz_bass_studio_help_functions.txt)
- 3D Part

- fixed some stuff in the dx8 effecs (bass.decls/bass.bb)(no code change needed)
- added tut_record_3.bb (code by _33)
- added demo_spectrum3.bb (code by Flame)
- added new links in STUFF
- created new folder "codesnippets" for stuff



Have Fun

Abrexxes, since it is just the 3D stuff I'm waiting for, I'll wait.

Even so, thanks for continuing development.

Hi John, please install the link above and update (bass.bb/bass.decls/BBS_Help_funktions.txt) with this (3D stuff).

http://www.abrexxes.huntingsoftware.de/temp5/john.zip

So, you will be compatible and you are up to date. If you have a problem post it, if not we are backward compatible. ;)

bye

Abrexxes, Installed as instructed.

I now get an 'illegal type conversion' message on the BASS_ChannelSet3DPosition() line, with or without the % at the end of the function name:

mx# = EntityX#(Model(i)\hEnt,1)
my# = EntityY#(Model(i)\hEnt,1)+1.5
mz# = EntityZ#(Model(i)\hEnt,1)
BASS_ChannelSet3DPosition(Model(i)\CharChannel,mx#,my#,mz#)

Also, would this be the right way to get camera orientation?:

mp# = EntityPitch#(Model(i)\hEnt,1)
mw# = EntityYaw#(Model(i)\hEnt,1)
mr# = EntityRoll#(Model(i)\hEnt,1)
BASS_ChannelSet3DPositionOri(Model(i)\CharChannel,mp#,mw#,mr#)

Sorry, I should heave mentioned: that's on compile, even before running.

BASS_ChannelSet3DPosition(Model(i)\CharChannel,mx#,my#,mz#)

This is the original BASS Command (Bass.chm), so you try to return 3 values as 3 pointers (type)

BASS_ChannelSet3DPositionPos(Model(i)\CharChannel,mx#,my#,mz#)



=== 3D Commands ====================================================================

For attributes see --> BASS_Set3DPosition / BASS_ChannelSet3DPosition(bass.chm)
Note 4 experts: the original bass commands with 4 pointers (types) is also working
BASS_ChannelSet3DAttributes and BASS_Set3DFactors you can use as shown in the bass.chm

- BASS_Set3DPositionPos%(posX#,posY#,posZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_Set3DPositionVel%(velX#,velY#,velZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_Set3DPositionFront%(frontX#,frontY#,frontZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_Set3DPositionTop%(topX#,topY#,topZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_Set3DPositionFrontTop%(frontX#,frontY#,frontZ#,topX#,topY#,topZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_ChannelSet3DPositionPos% (channel%,posX#,posY#,posZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_ChannelSet3DPositionOri% (channel%,oriX#,oriY#,oriZ#) : "" Returns TRUE or FALSE (1/0)

- BASS_ChannelSet3DPositionVel% (channel%,velX#,velY#,velZ#) : "" Returns TRUE or FALSE (1/0)


Note: the BASS_Set3DPositionFrontTop is to INIT a listener (if needed)...

Remarks
The front and top parameters must both be set in a single call, they can not be set individually.


BASS_ChannelSet3DPositionOri(Model(i)\CharChannel,mp#,mw#,mr#)

Yes, should be. but i must also make some tests (demos), 3D is not really my stuff. ;)

bye

That seems to do it, Abrexxes.
Sound now working in 3D, thanks.
Will test some more later.

John!

Check this out!
http://www.abrexxes.huntingsoftware.de/temp5/3d.zip

Arrow keys to move, A D to turn the camera.

Thanks to klepto2 (3D Vectors) all the problems are gone, i will rewrite some functions for a last time and we are winners !

Juhu!!!!

a code snippet
If KeyDown(203) 
		MoveEntity camera,-0.1,0,0
Else If KeyDown(205)
		MoveEntity camera,0.1,0,0
EndIf
	
If KeyDown(200)
		MoveEntity camera,0,0,0.1
Else If KeyDown(208)
		MoveEntity camera,0,0,-0.1
EndIf

If KeyDown(30)  Then  
           RotateEntity camera,0,camgrad,0 
			camgrad=camgrad+1 
           Else If KeyDown(32)
           RotateEntity camera,0,camgrad,0
           camgrad=camgrad-1
EndIf

Bass_Update3DListener(camera) ; new ....... *blub*

RenderWorld


simple enough ? XD

cu

Just add this to bass.bb and call the funktion in every frame. You dont need to call other functions.

Function Bass_Update3DListener%(entity%) 
	Local Bank,temp
	Local fx#,fy#,fz#,tx#,ty#,tz# 
		Bank  = CreateBank(3 * 4)
			PokeFloat Bank,0,EntityX(entity)
			PokeFloat Bank,4,EntityY(entity)
			PokeFloat Bank,8,EntityZ(entity)
		If Not  BASS_Set3DPositionPosP%(Bank,0,0,0) BASS_Debug()
	FreeBank Bank

      ;LookAt Vector (Front)
	TFormVector 0,0,1,entity,0 
		fx = TFormedX() 
		fy = TFormedY() 
		fz = TFormedZ() 
	;UpVector (Top)
	TFormVector 0,1,0,entity,0 
		tx = TFormedX() 
		ty = TFormedY() 
		tz = TFormedZ() 
      Return BASS_Set3DPositionFrontTop(fx,fy,fz,tx,ty,tz) 
 End Function 


You could save ALOT of memory, & time using this:
If KeyDown(203) 
		MoveEntity camera,-0.1,0,0
Else If KeyDown(205)
		MoveEntity camera,0.1,0,0
EndIf
	
If KeyDown(200)
		MoveEntity camera,0,0,0.1
Else If KeyDown(208)
		MoveEntity camera,0,0,-0.1
EndIf

If KeyDown(30)  Then  
           RotateEntity camera,0,camgrad,0 
			camgrad=camgrad+1 
           Else If KeyDown(32)
           RotateEntity camera,0,camgrad,0
           camgrad=camgrad-1
EndIf


Like so:

Global tspeed# = 0.1
Global mspeed# = 0.1

While not keyhit(1)

move(tspeed#, mspeed#)

If KeyDown(30)  Then  
           RotateEntity camera,0,camgrad,0 
			camgrad=camgrad+1 
           Else If KeyDown(32)
           RotateEntity camera,0,camgrad,0
           camgrad=camgrad-1
EndIf

updateworld
renderworld
flip
wend

Function move(tspeed#, mspeed#)
Turnentity camera, 0, (Keydown(203)-Keydown(205))*tspeed#, 0
Moveentity camera, 0, 0, (Keydown(200)-Keydown(208))*mspeed#
End Function


~DS~

@mod, can be closed or deletet. Thanks