I updated it a bit. Here is a snap for you to see it in action:
The parameters are the default. Black background, green-blue sample, red-yellow FFT. 4xFSAA is turned on. You can see the sample on the major part of the display, and the FFT at the bottom.
On the picture you can see three vertical lines. The first (it's a gradient, not a line actually) shows current playing position. The second and the third are Subsong seekpoints, the mouse is above the second (white one), that's why it's white.
You can use TSampleDisplay in many ways, becouse it's compact and very easy to use. Actually for a basic usage, you need only four (!) lines of code:
//* Open a file in slot 0
//* We use the BASS_STREAM_PRESCAN BASS flag to have a precise playback positon display
SampleDisplay3D1.StreamOpen(FileName, 0, BASS_STREAM_PRESCAN);
//* Make 0 the active slot
SampleDisplay3D1.ActiveIndex := 0;
//* Init slot 0 for rendering
SampleDisplay3D1.InitD3D(0);
...and somewhere you need to render the frames (eg. in a Timer):
//* Draw the frame
SampleDisplay3D1.Render;
You can use it as a small 100x50 preview display, to show visually where the playback is actually, in a serious audio editor as the sample display, you can have more the one display on one form, etc...
You can turn many of the feature off, and use it as a simple display too (without clicks, selection, FFT etc.).
But the best features is accesing the actual selection properties. Using TSampleDisplay you can offer the user the selection possibility, and get the selected positions in two lines! Or a single position from a Subsong seekpoint. Ideal for any visual interaction between the user and the audio stream. The user has the abbility to take a look at any part of the sample as she/he can zoom it and scroll it.
TSampleDisplay3D works with normal and 32bit channels too.
TSampleDisplay3D has one problem tough, it cannot be used for sample precise editing sadly, because it uses sample cache to display the audio, and the resolution of the cache is at most length/256 (average of a BASS_DATA_FFT512 call makes one sample cache value - that's why it is so small and can be stored with great efficiency in ID3v2 tag, and the SESC frame is even compressed to reduce the size even more). But for an every day application you don't need sample precise resolution tough. For a brutally dense resolution you would need a brutally good 3D card which can display as many triangles as you want (TSampleDisplay3D can be made very easily sample precise, but that requres a 3D card supporting that many - eg. as the audio file - triangles in one go), but that's not an every day requirement, and it is not implemented. My GF4Ti4200 supports around 450 000 triangles in one go, and that's more than enough for an ordinary use.
And to tease you even more the same way as BASS does, TSampleDisplay3D can display music modules too, which is quite a feature.
