Author Topic: TSpectrum3D component for Delphi and a DLL version  (Read 13630 times)

3delite

  • Posts: 933
Hi!

TSpectrum3D is a component for use in Win32 and Win64 (9x/ME/2K/XP/Vista/7/8/10) software with BASS, with a purpose to provide 3D audio FFT spectrum display for audio streams. All on a powerful and compact DirectX 9 or DirectX 11 3D surface, that you have full access to.
This is a component that you put on a form, and have instantly a 3D audio FFT spectrum display for an audio stream.


Homepage: tspectrum3d.html

New: version 1.2 now includes a DirectX 11 version of the component (Windows 7 and up needed).

3delite
« Last Edit: 7 Jan '18 - 01:26 by 3delite »

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi
« Reply #1 on: 19 Mar '08 - 17:47 »
The package has beeen updated with a standalone .dll version of the component (as 'Spectrum3D Library' in the archive). :)

3delite

Adamantium

  • Posts: 7
Re: TSpectrum3D component for Delphi
« Reply #2 on: 7 Apr '08 - 10:27 »
Thanks for this!

rogier21

  • Posts: 33
Re: TSpectrum3D component for Delphi
« Reply #3 on: 7 Apr '08 - 14:54 »
Looks very promising! Keep up the work!

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi
« Reply #4 on: 3 Jan '18 - 18:52 »
After 5 years of inactivity I needed to improve this component.
So there's a cool new version now available, updates since last post:

1.1.9.14 - 21/12/2017
---------------------
+ When scaling the amplitude of the display the dB values are scaled too
* Fixed frequency captions and values
* Fixed color when spectrum goes above maximum, now peaks remain red
* Fixed captions, added support of custom fonts and font sizes
* Fixed caption positions (x and y), automatically adjusted for font size
* Fixed GFX zoom is now '1' based
* Fixed GFX scroll is now '0' based

1.1.10.18 - 30/12/2017
----------------------
+ Fixed zoom/scroll, now the frequency caption positions are static and display the frequency position dynamically according to zoom/scroll
+ Improved gradient grid and dB captions appearance
+ Updated tutorials

1.1.11.20 - 31/12/2017
----------------------
+ BASSMix.dll and BASSWASAPI.dll is auto-detected and dynamically loaded if found
+ Updated tutorials

1.1.12.22 - 04/01/2018
----------------------
+ Added option to provide custom FFT data (implement OnNeedFFTData() function for Delphi; CallbackOnNeedFFTData() for the .dll version)
+ To be used with above, option to specify 'CustomSampleRate'
+ BASS.dll is loaded dynamicaly, if not used can be avoided when providing custom FFT data
+ When zooming/scrolling the display now only the visible vertices are drawn

Download the Delphi component and the universal Win32/Win64 .dll version in the first post link - 2 demo/tutorial apps included. :)
« Last Edit: 3 Jan '18 - 19:06 by 3delite »

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi
« Reply #5 on: 5 Jan '18 - 15:37 »
Ooops, sorry, there was a last minute modification that introduced a bug that BASS.dll was not loaded.

Please re-download, the package has been updated.

Wishmaster

  • Posts: 164
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #6 on: 6 Jan '18 - 08:57 »
Hi.

I like the component but you should create a version with Graphics32.
when I open your demo app, it's eating away ~28-30 MB of Ram which is a lot! and every time I start the demo app
GeForce Experience shows this massage "Press Alt+Z to use GeForce Experience In-Game Overlay"
which is very annoying!

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #7 on: 7 Jan '18 - 00:57 »
Right now it uses DirectX 9, I have been working on a DirectX 11 version for a couple of days, I'll post an update soon.

No plans for a Graphics32 version right now. 30 MBs of RAM is a lot when now 4-8 GB is a standard? :o

No idea about the GeForce Experience hint, quite annoying solution from nVidia side I must say.

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #8 on: 7 Jan '18 - 01:26 »
Ok, uploaded the new package with the new DirectX 11 version of the component. :)

Follow the link in the first post to download.

Wishmaster

  • Posts: 164
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #9 on: 7 Jan '18 - 05:42 »
Hi.

1. I just meant it's a lot or ram for a little demo. (I Have 32 GB ;))
    I have written an extensive sound recorder app. where I load 36 dll's inc. (OptimFROG.dll, MediaInfo.dll, libFLAC.dll, lame_enc.dll, MACDll.dll, ogg.dll, vorbisfile.dll, vorbisenc.dll,  vorbis.dll, wavpack.dll,.......)
    and of course all the bass dll's. I Play a 500 MB file and Record another one at the same time.  and the memory consumes never exceeds ~15 MB.

 
2. I have a clean windows 10 x64 installation and just to start your demo (the x64 version) I had to download DirectX 9 which was a ~97 MB Download.
    and when i sell my program I want it to work right out of the box. where i live most people do not even have high-speed internet
    That's why I recommended you to create a Graphics32 version.  Of course you can do whatever you want.

3. ignore the comment about nvidia. You can't do much about that at least as long as you use the 3d stuff. 


4. as for the latest version the win32 demo is working fine the win64 crashes right away.




do not see this as an attack at your work but as an help to improve your component. and you have done a good job.

 

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #10 on: 7 Jan '18 - 14:53 »
I agree of course that the less memory an app. uses the better, but putting effort in reducing a 30 MB app.'s memory usage ha no priority in 2018.
It's very cool if your app. uses just 15 MB. That's nice work.

The DirectX 9 version for Win64 does require installing DirectX 9, this is one of the reasons I am working on the DirectX 11 version.

Yes, I see, the DX11 Win64 version is crashing inside d3dx10_41.dll. That's very bad, it seems it's a bug in the D3DXMatrixPerspectiveFovLH() function (floating point divide by zero). :(
The thing is that there are 4 dependencies for this .dll that I want to get rid of, to make the component 100% DX11, and I need Delphi (or something that can be translated to Delphi) code for this and 3 other functions (D3DXMatrixPerspectiveFovLH, D3DXMatrixLookAtLH, D3DXMatrixScaling and D3DXMatrixTranspose). For now for this bug at least the D3DXMatrixPerspectiveFovLH code is needed.
I'll google for this later although I already did that and didn't found the code for it... :(

The package has been updated with a VC++ API header for the DX11 .dll version.

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #11 on: 7 Jan '18 - 15:38 »
Luckily the MSDN page explains the math behind the function and managed to implement it.

An update can be downloaded with a hopefully working DX11 Win64 version. :)

Thank you very much for your hint about this bug! :)

3delite

  • Posts: 933
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #12 on: 9 Jan '18 - 00:40 »
Got it working with pure DX 11. :)

The update is available on the home page.

johnvantelli

  • Posts: 90
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #13 on: 19 Mar '20 - 11:17 »
I'm trying to use it with a mixer channel but it speedu the songs... any ideas?

Chris

  • Posts: 2168
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #14 on: 19 Mar '20 - 14:30 »
Hi
you must add in the BASS_Mixer_StreamAddChannel Call the Flag BASS_MIXER_BUFFER

Cheers Chris

Ian @ un4seen

  • Administrator
  • Posts: 25435
Re: TSpectrum3D component for Delphi and a DLL version
« Reply #15 on: 19 Mar '20 - 17:15 »
As well as using the BASS_MIXER_BUFFER flag in your BASS_Mixer_StreamAddChannel call, the component will need to support using BASS_Mixer_ChannelGetData instead of BASS_ChannelGetData on mixer sources. When BASS_ChannelGetData is used on a mixer source, the mixer doesn't see that data, which is why it sounds fast in the mixer output.