Powerbasic Museum 2020-B

IT-Consultant: Patrice Terrier => Multimedia projects => BassBox => Topic started by: Patrice Terrier on January 07, 2009, 09:03:47 PM

Title: BassBox 2011 (version 2.60)
Post by: Patrice Terrier on January 07, 2009, 09:03:47 PM
BassBox 2.60 setup

This package is provided with the latest 2.60 plugins source code (C:\BassBox\BBplugin\PluginSourceCode.zip).

Compatible with the Bass.dll API version 2.4

BBsetup_2_60.exe allows you to install the audio player on XP, VISTA, and Windows 7.

(http://www.zapsolution.com/pictures/BB257.jpg)

History:
Aug 13,2011  Version 2.60, all plugins and the player have been updated, to disable wglSwapIntervalEXT when DWM is running, reducing CPU footprint drastically.
Aug 07,2011  Version 2.58, with new plugins, mp3 ID3 tag "cover art" support, optional higher FPS rate speed.
Nov 18,2009  Version 2.53 a problem with WMA files has been fixed (offset & length improperly declared as DWORD instead of QUAD).
Sep 16,2009  Version 2.52 with AAC support + audio stream soundmap.
Jan 31,2009  Version 2.50 with full screen mode.
Jan 25,2009  Version 2.10 with new plugins.
Dec 14,2008  Added new Flashback plugin.
Jul 27,2008  Enhanced to use the latest Skin Engine.
Apr 09,2008  Last plugin being used is saved/retrieved between sessions.
Apr 06,2008  Upgraded to work with Bass.dll version 2.4.
Dec 24,2007  New plugin + media length.
Dec 23,2007  Oscilloscope doesn't require anymore a multiplex audio card.
Dec 21,2007  Added real time oscilloscope.
Dec 16,2007  Unlimited number of visual plugins.
Dec 15,2007  CD-Audio support.
Dec 09,2007  New plugin with BassBox logo.
Nov 22,2007  New plugins + the visual.dll can use any name.
Nov 17,2007  Plugin's self detection.
Nov 16,2007  Plugin's multi-texture support.
Nov 12,2007  Start of this help file.
Nov 06,2007  New visual plugin: "Sonic Circle".
Nov 04,2007  Music Tracker support: it, xm, s3m, mtm, mod, umx, mo3.
Nov 03,2007  Keyboard support for visual plugins.
Nov 03,2007  New visual plugin: "Laser Borealis".
Nov 02,2007  NET audio streaming capture, saved to the "NetCapture\" folder.
Nov 01,2007  BBP playlist + URL audio streaming.
Oct 31,2007  Audio FFT and mouse support for visual plugins.
Oct 30,2007  Built-in plugin support for 32-bit ABGR OpenGL texture.
Oct 29,2007  New visual plugin; "Fireworks".
Oct 26,2007  Complete folder drag an drop allowed on the BassBox desktop icon.
Oct 25,2007  New buttons to change the player's background.
Oct 24,2007  New visual plugin: "PolyHedra".
Oct 23,2007  PLUGIN format definition.
Oct 21,2007  Drag and drop of single or embedded folders.
Oct 18,2007  Player's image background support.
Oct 16,2007  WMA audio support.
Oct 14,2007  ID3 TAG support.
Oct 13,2007  10-band equalizer.
Oct 12,2007  New visual plugins: "Mikado" and "Stick Dance".
Oct 11,2007  Search trackbar + audio format: ogg, wav, aif.
Oct 10,2007  Stereo channel view metter with vanishing LEDs.

Vous trouverez des informations détaillées sur BassBox en français ici. (http://www.vbfrance.com/codes/BASSBOX-AUDIO-OPENGL-VISUAL-PLUGINS_44975.aspx)

...
Title: Re: BassBox 2009
Post by: Petr Schreiber on January 19, 2009, 09:43:38 PM
Hi Patrice,

Ring is good, but I like Interference a bit more - it looks more alive to me.
But both are very nice ones :)

Title: BassBox 2.10 public setup
Post by: Patrice Terrier on January 25, 2009, 05:26:01 PM
The BassBox 2.10 public setup is attached to the first post of this thread.

Because some of the first plugins were not compatible with VISTA (those flickering with DWM), they have been removed from setup.
But they are still available from the main BassBox thread.
Title: BassBox 2.50 (New version)
Post by: Patrice Terrier on January 31, 2009, 02:46:30 PM
BassBox version 2.50, goes full screen.

To switch back from full screen mode press either:
Space bar, Escape key, TAB key

Note: The full screen mode is able to work with single or multi-monitor config.
In case of dual display (multi-monitor) you can still use drag and drop, from Explorer onto the OpenGL full screen display.

The "Full screen" button is located onto the right corner below the "close" button.

Public SETUP is attached to the first post of this thread.

PS: This build has been only checked with VISTA 64.
Please, let me know if it also works with XP and VISTA 32-bit.

...

Title: Re: BassBox 2009
Post by: Petr Schreiber on January 31, 2009, 06:39:44 PM
Hi Patrice,

thanks, worked well on XP SP2.
Just in fullscreen mode not whole window is covered, and I can also see round corners of the window.

I have 1280x1024 resolution.


Petr

P.S. I think for "normal" users the FPS counter is redundant. We know FPS is not in thousands of frames because you try to make it with low CPU footprint, but "common user" could think "Just X FPS? That is slow program...".
Title: Re: BassBox 2009
Post by: Patrice Terrier on January 31, 2009, 09:07:36 PM
Petr

Your feedback is realy appreciated, thank you!

I have attached a new ZIP file to the first post of this thread to fix the region problem.

Indeed, while testing on dual monitor, i removed 20 pixels on the window width and height and i forgot to restore the good value.

I had to work around a Windows bug in dual display that would erase the second display if using the full display size to enlarge the OpenGL view port, it must be one pixel less than the real size:

CALL MoveWindow(zGetMainItem(%ID_VISUAL), 0, 0, tmi.rcMonitor.nRight - tmi.rcMonitor.nLeft, tmi.rcMonitor.nBottom - tmi.rcMonitor.nTop - 1, 0)

Here is the code i am using to switch the BassBox display:


         CASE %ID_FULLSCREEN
              gbFullScreen = NOT gbFullScreen
              IF gbFullScreen THEN

                 FOR K = %ID_BTN_PLAY TO %ID_FULLSCREEN
                     SELECT CASE LONG K
                     CASE %ID_PlayList, %ID_Background, %ID_PlugList
                     CASE ELSE
                         CALL ShowWindow(zGetMainItem(K), %SW_HIDE)
                     END SELECT
                 NEXT
                 FOR K = 0 TO gnPluginCount -1
                     CALL ShowWindow(zGetMainItem(%ID_PLUGIN_FIRST + K), %SW_HIDE)
                 NEXT
                 CALL ShowWindow(zGetMainItem(%ID_RESTORE), %SW_HIDE)
                 CALL ShowWindow(zGetMainItem(%ID_MAXIMIZE), %SW_HIDE)
                 CALL ShowWindow(zGetMainItem(%ID_CLOSE), %SW_HIDE)
                 CALL ShowWindow(zGetMainItem(%ID_MINIMIZE), %SW_HIDE)
                 CALL ShowWindow(zGetMainItem(%ID_LED), %SW_HIDE)

                 CALL zPAINTBACKCOLOR(zColorARGB(255, 0), 1)

                 nACTIVECAPTION  = SK_ACTIVECAPTION()
                 nINACTIVECAPTION = SK_INACTIVECAPTION()
                 CALL zSplitColorARGB(nACTIVECAPTION, cAlpha, Red, Green, Blue)
                 gColorCaption = zColorARGB(16, RGB(Red, Green, Blue))
                 CALL zACTIVECAPTION(gColorCaption, %WRITE)
                 CALL zINACTIVECAPTION(gColorCaption, %WRITE)

                 IsMaximized = IsZoomed(hWnd)
                 IF IsMaximized = 0 THEN
                    CALL zButtonSysCommand(hWnd, MAKLNG(%ID_MAXIMIZE, 0))
                 END IF

              ELSE
                 FOR K = %ID_BTN_PLAY TO %ID_FULLSCREEN
                     SELECT CASE LONG K
                     CASE %ID_PlayList, %ID_Background, %ID_PlugList
                     CASE ELSE
                         CALL ShowWindow(zGetMainItem(K), %SW_SHOW)
                     END SELECT
                 NEXT

                 CALL CheckPluginVisibility(%TRUE)

                 IF gnAudioPause THEN
                   CALL ShowWindow(zGetMainItem(%ID_BTN_PAUSE), %SW_SHOW)
                   CALL ShowWindow(zGetMainItem(%ID_BTN_PLAY), %SW_HIDE)
                 ELSE
                   CALL ShowWindow(zGetMainItem(%ID_BTN_PLAY), %SW_SHOW)
                   CALL ShowWindow(zGetMainItem(%ID_BTN_PAUSE), %SW_HIDE)
                 END IF

                 
                 CALL zACTIVECAPTION(nACTIVECAPTION, %WRITE)
                 CALL zINACTIVECAPTION(nINACTIVECAPTION, %WRITE)
                 gColorCaption = nACTIVECAPTION

                 CALL ShowWindow(zGetMainItem(%ID_CLOSE), %SW_SHOW)
                 CALL ShowWindow(zGetMainItem(%ID_MINIMIZE), %SW_SHOW)
                 IF IsMaximized THEN
                    CALL ShowWindow(zGetMainItem(%ID_RESTORE), %SW_SHOW)
                    CALL ShowWindow(zGetMainItem(%ID_MAXIMIZE), %SW_HIDE)
                 ELSE
                    CALL ShowWindow(hWnd, %SW_RESTORE)

                    CALL ShowWindow(zGetMainItem(%ID_MAXIMIZE), %SW_SHOW)
                    CALL ShowWindow(zGetMainItem(%ID_RESTORE), %SW_HIDE)
                 END IF
                 CALL ShowWindow(zGetMainItem(%ID_LED), %SW_SHOW)
                 CALL BassGetID3TAG(gzAudioFile)

              END IF

              '// Refresh display
              CALL zREMOVEBORDER(gbFullScreen, 1)
              CALL zDrawBackground()
              CALL EnumChildWindows(hWnd, CODEPTR(AnchorEnum), 0)
              IF gbFullScreen THEN
                 '// Detect multi-monitor
                 LOCAL hRgn, hMonitor AS LONG, tmi AS MONITORINFO
                 hMonitor = MonitorFromWindow(hWnd, %MONITOR_DEFAULTTONEAREST)
                 tmi.cbSize = SIZEOF(tmi)
                 IF GetMonitorInfo(hMonitor, tmi) THEN
                    hRgn = CreateRectRgn(0, 0, tmi.rcMonitor.nRight - tmi.rcMonitor.nLeft, tmi.rcMonitor.nBottom - tmi.rcMonitor.nTop)
                    CALL SetWindowRgn(hWnd, hRgn, 0)
                    CALL MoveWindow(zGetMainItem(%ID_VISUAL), 0, 0, tmi.rcMonitor.nRight - tmi.rcMonitor.nLeft, tmi.rcMonitor.nBottom - tmi.rcMonitor.nTop - 1, 0)
                 END IF
              END IF
              CALL ResizeGLwindow(zGetMainItem(%ID_VISUAL))
              CALL zUpdateWindow(hWnd, 0)


Note the use of MonitorFromWindow and GetMonitorInfo to deal with multiple display.

About FPS, people should remember that a playing movie is "only" 24 FPS ;)

On my VISTA x64 computer the "interference" plugin in full HD mode (1920 x 1080) ranges between 16 and 30 % of the CPU resource.


Title: Re: BassBox 2009
Post by: Petr Schreiber on January 31, 2009, 11:39:05 PM
Hi Patrice,

thanks for the info!
New version works perfectly - fullscreen mode has no round corner artifacts and it is really "fullscreen".
Title: BassBox 2009 (The Acoustic Room)
Post by: Patrice Terrier on March 14, 2009, 06:37:10 PM
The Acoustic Room is a new plugin based on the work of Jürgen Huhn.

It requires two new textures:
cdrom.png
note.png

...
Title: Re: BassBox 2009
Post by: Patrice Terrier on March 17, 2009, 10:20:19 AM
QuoteMaybe do you like this Update!?

Most notebooks don't have a middle mouse button, and on my Microsoft mouse i have instead a mousewheel button in the center.

I think it would be better to use a keyboard key, like for example the "Enter" key to switch from one room to another.

Also on full HD 1920 x 1080 display, the default visualisation looks too small, making hard to see the playing music notes.

...
Title: Re: BassBox 2009
Post by: Patrice Terrier on March 18, 2009, 07:49:55 PM
QuoteI think it`s better! Let me now, if something wrong..

Yes, that does it, thank you.

...
Title: Star-DanceV1.3
Post by: Jürgen Huhn on June 06, 2009, 06:42:15 PM
Star-DanceV1.3 
Now animated Textures on the Stars!

I have update it to Next Version.. reworked the Settings of Mouse and Keyboard, added new Scene and a row of Subwoofer..

The five Subwoofer are three dimensional Objects!

Each Speaker is rendered in a Box wich is be able to rotate with the Mouse or KeyBoard.
Displaying the Settings as Text to inform the User and added a few Colormdes.

I think the first Scene is ready now..

The Source Code is included and you can read there the usage of Mouse and Keyboard.

Enjoy!

  ...
Title: Re: BassBox 2009
Post by: Patrice Terrier on June 06, 2009, 09:44:09 PM
Thank you Jürgen for this new contribution.

For the 60000 lurker, i wanted to translate the "Matrix Fall" project to BassBox:
http://blog.open-design.be/category/opengl/ (http://blog.open-design.be/category/opengl/)
but i was too short in time, perhaps for the 70000, except if someone could do it sooner ;)

...
Title: Re: BassBox 2009
Post by: Jürgen Huhn on June 07, 2009, 03:35:08 PM
Patrice!

Thank's for the Link!

I downloaded the C++ Codes there and think it need's a while to study the complete Project..

Just reading the main.cpp file and see there is the "glu32.lib" included and have the
BBPlugin-Specifications in Mind...

Anyway, I will be check what`s possible.

...
Title: Re: BassBox 2009
Post by: Jürgen Huhn on June 11, 2009, 03:24:00 AM
Patrice!

I`m already on the Way to translate the Matrix-Fall...

There is no Problem to render the Scene with exactly same 3D-Effects and Colors!
I can use the original Textures, but must go another Way to extract the single Letters.
Title: Re: BassBox 2009
Post by: Patrice Terrier on June 11, 2009, 07:54:40 AM
Jürgen,

My own plan, was first, to translate exactly the C++ source code, then customize it to work as a BBPlugin.
I shall wait for yours, to avoid doing twice the same work ;)

...
Title: New VorteX BBPlugin
Post by: Patrice Terrier on June 16, 2009, 12:13:02 PM
VORTEX
is a new BBPlugin to work with BassBox 2.50.

It has been inspired by the thinBasic's script "Tornado" from Petr Schreiber.

(http://www.zapsolution.com/pictures/Vortex.jpg)


This is the final VORTEX version:

There are now 5 textures, you can switch between them using either the left or right mouse button.
The one selected will remain active between sessions until you decide to change it.

...
Title: Re: BassBox 2009
Post by: Petr Schreiber on June 16, 2009, 04:47:34 PM
Very nice Patrice,

it might be inspired by my code, but it has completely new dimension with the reaction to sound played!


Petr
Title: To Petr...
Post by: Patrice Terrier on June 18, 2009, 08:04:39 PM
Petr,

I have totaly reworked the VORTEX plugin, adding more effects, new textures, and better music sync.

The updated zip file is there. (http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg10043#msg10043)

By the way, you will have a hard time to figure that it originates from your Tornado, if you don't look closely at the code ;)

...
Title: Re: BassBox 2009
Post by: Petr Schreiber on June 18, 2009, 10:43:05 PM
It looks fantastic with music which has great differences in volume and tempo, very very good!
Title: Re: BassBox 2009
Post by: Patrice Terrier on June 26, 2009, 07:37:55 PM
In the VORTEX Plugin, change the value for CASE 5, with the red one below.

SELECT CASE LONG UseTexture
CASE 2
     CALL glTranslatef(sV, sV, sV)
     CALL glRotatef(((PulseAngle * sV) + pulse) / 10, 1, 0, 1)
CASE 3
     CALL glTranslatef(0, sV, 0)
     CALL glRotatef(((PulseAngle * sV) + pulse) / 10, 0, 1, 1)
CASE 4
     CALL glTranslatef(0, sV, 0)
     CALL glRotatef(((PulseAngle * sV) + pulse) / 10, 1, 1, 1)
CASE 5
     CALL glTranslatef(sV, sV, sV)
     CALL glRotatef(((PulseAngle * sV) + pulse) / 10, -10, 10, -10)
CASE ELSE
     CALL glTranslatef(sV, sV*1.5, sV)
     CALL glRotatef(((PulseAngle * sV) + pulse) / 10, .25, -1, .25)
END SELECT
Title: Re: BassBox 2009
Post by: Jürgen Huhn on June 26, 2009, 10:59:10 PM
Hi Patrice,

your Fantasy has no Limits!


I like your Vortex Plugin very much!!

The way you twist the Textures, the Colors and the handling of Signals with the SQR fft() array.

I think yuo hit the right Balance of these Values!! Nice work..

And it Works well on my Computer!!    :)

..
Title: Re: BassBox 2009
Post by: Patrice Terrier on July 02, 2009, 05:13:11 PM
why don't you put everything into the same png texture.
1024*512 or 1024*256
or even simple 32*224 = 7168*32 (working like an ImageList)

Or you could also create the font from a customized TrueType

Title: The M4A audio format
Post by: Patrice Terrier on July 23, 2009, 04:23:52 PM
Are you interested to play M4A audio files (mp4 audio) in BassBox ?

.M4A File Extension
Audio file compressed with the Apple Lossless Encoder (ALE); uses the Apple Lossless Audio Codec (ALAC), which provides lossless compression; saved in the MPEG-4 container format.

M4A files are similar to .MP4 video files, but do not contain a video track; MPEG-4 audio files that include copyright protection, such as those sold through the iTunes Store, typically have an .M4P extension.

...
Title: Re: BassBox 2009
Post by: Jürgen Huhn on August 31, 2009, 01:26:49 AM
Patrice,

my last Post is a long Time ago..

Think it's good to give you Information about the Work on the new Matrix_Fall.
I found enough Time this Weekend to costumize it as BBPlugin.
It`s running really fast with much more effects on the Letters, better Colours and short SourceCode!
But the SourceCode is not ready to post it Today. I wll clean it up and test the Plugin a while.

I have some Screenshots here...

 ...
Title: Re: BassBox 2009
Post by: Patrice Terrier on August 31, 2009, 07:48:31 AM
Jürgen,

Thank you for the screenshots, they are looking promising.

...
Title: Re: BassBox 2009
Post by: Petr Schreiber on September 15, 2009, 07:32:38 PM
Patrice,

I installed latest version, and while it seems targeted on users (no source code), there is still one BAS file extracted by setup.
In BBPlugin it is Vortex.bas.

Is the source code version still available?


Petr
Title: BassBox 2009 (updated to version 2.52)
Post by: Patrice Terrier on September 16, 2009, 11:08:13 AM
BassBox 2009 has been updated to version 2.52.

- AAC audio support: .m4a, .mp4, .m4p, .m4b.
- Audio stream soundmap (oscillo background).
- Bass.dll 2.4.3.1.

Setup.zip is attached to the first post of this thread.

...
Title: Re: BassBox 2009 (version 2.52)
Post by: Patrice Terrier on November 16, 2009, 05:36:18 PM
Anyone here using BassBox with Windows 7 ?

...
Title: BassBox 2009 (updated to version 2.53)
Post by: Patrice Terrier on November 18, 2009, 08:52:05 PM
A problem with WMA files has been fixed:
The "offset" and "length" parameters were improperly declared as DWORD instead of QUAD.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on November 19, 2009, 10:17:35 AM
Petr,

Change this in the source code:
DECLARE FUNCTION BASS_WMA_StreamCreateFile LIB "basswma.dll" ALIAS "BASS_WMA_StreamCreateFile" (BYVAL mem AS LONG, file AS ASCIIZ, BYVAL offset AS QUAD, BYVAL length AS QUAD, BYVAL flags AS DWORD) AS LONG
DECLARE FUNCTION BASS_WMA_StreamCreateFileAuth LIB "basswma.dll" ALIAS "BASS_WMA_StreamCreateFileAuth" (BYVAL mem AS LONG, file AS ASCIIZ, BYVAL offset AS QUAD, BYVAL length AS QUAD, BYVAL flags AS DWORD, zUser AS ASCIIZ, zPath AS ASCIIZ) AS LONG

After the %ACCSTREAM = 4 contsant add this new one:
%WMASTREAM = 5

and replace the existing BassChannelPlay() code with that one:

FUNCTION BassChannelPlay() AS LONG
   LOCAL So, IsUrl AS LONG, sLowExt AS STRING

   CALL BassCloseChannel()

   IF BassInit() THEN

      IF INSTR(LCASE$(gzAudioFile), $ftp) OR INSTR(LCASE$(gzAudioFile), $http) THEN IsUrl = -1

      So = INSTR(-1, gzAudioFile, $Dot)
      IF So AND INSTR($BASSMUSICEXT, LCASE$(MID$(gzAudioFile, So)) + $Dot) THEN
         gnMediaType = %MUSIC
         gnAudioChannel = BASS_MusicLoad(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_PRESCAN OR %BASS_STREAM_AUTOFREE, 0)
      ELSE
         gnMediaType = %STREAM
         sLowExt = RIGHT$(LCASE$(gzAudioFile), 4)
         IF sLowExt = ".wma" THEN
            IF IsUrl THEN
               gnAudioChannel = BASS_WMA_StreamCreateFileAuth(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_AUTOFREE, "", "") ' %BASS_STREAM_PRESCAN)
            ELSE
               gnMediaType = %WMASTREAM
               gnAudioChannel = BASS_WMA_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_AUTOFREE) ' %BASS_STREAM_PRESCAN)
            END IF
         ELSEIF sLowExt = ".cda" THEN
            gnMediaType = %CDAUDIO
            gnAudioChannel = BASS_CD_StreamCreateFile(gzAudioFile, %BASS_STREAM_AUTOFREE)
         ELSEIF sLowExt = ".aac" THEN
            IF IsUrl THEN
               gnAudioChannel = BASS_AAC_StreamCreateURL(gzAudioFile, 0, %BASS_STREAM_AUTOFREE, CODEPTR(DownloadProc), BYVAL %NULL)
            ELSE
               gnAudioChannel = BASS_AAC_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_AUTOFREE) ' %BASS_STREAM_PRESCAN)
            END IF
         ELSEIF INSTR($BASSMP4, sLowExt) THEN
            IF IsUrl THEN
               gnAudioChannel = 0
            ELSE
               gnMediaType = %ACCSTREAM
               gnAudioChannel = BASS_MP4_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_AUTOFREE) ' %BASS_STREAM_PRESCAN)
            END IF
         ELSE
            IF IsUrl THEN
               gnAudioChannel = BASS_StreamCreateURL(gzAudioFile, 0, %BASS_STREAM_AUTOFREE, CODEPTR(DownloadProc), BYVAL %NULL)
            ELSE
               gnAudioChannel = BASS_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_AUTOFREE) ' %BASS_STREAM_PRESCAN)
            END IF
         END IF
      END IF

      IF gnAudioChannel THEN
         CALL BASS_ChannelSetSync(gnAudioChannel, %BASS_SYNC_END OR %BASS_SYNC_ONETIME, 0, CODEPTR(BassStreamEllapsed), 0)
         CALL ShowWindow(zGetMainItem(%ID_BTN_PLAY), %SW_HIDE): CALL zSetZorder(zGetMainItem(%ID_BTN_PLAY), %HWND_BOTTOM)
         CALL ShowWindow(zGetMainItem(%ID_BTN_PAUSE), %SW_SHOW): CALL zSetZorder(zGetMainItem(%ID_BTN_PAUSE), %HWND_TOP)

         CALL BassSetupFx(gnAudioChannel)
         CALL BassUpdateReverb(gnAudioChannel, zGetCheckButtonStatus(zGetMainItem(%ID_REVERB)))
         CALL BassUpdateChorus(gnAudioChannel, zGetCheckButtonStatus(zGetMainItem(%ID_CHORUS)))
         CALL BassUpdateFlanger(gnAudioChannel, zGetCheckButtonStatus(zGetMainItem(%ID_FLANGER)))
         CALL BassUpdateEcho(gnAudioChannel, zGetCheckButtonStatus(zGetMainItem(%ID_ECHO)))
         CALL BassUpdateRotate(gnAudioChannel, zGetCheckButtonStatus(zGetMainItem(%ID_ROTATION)))

         'CALL BASS_SetVolume(zGetTrackValue(zGetMainItem(%ID_TRACK_VOL)) / 100)
         CALL BassSetChannelVolume(zGetTrackValue(zGetMainItem(%ID_TRACK_VOL))) '// For Bass version 1.24

         CALL SetupEqualizer()

'         // Setup Search trackbar min max value.
         gnMediaPos = 0
         gnMediaLength = BassChannelGetLength()
         CALL zSetTrackMinMax(zGetMainItem(%ID_TRACK_SEARCH), 0, gnMediaLength)
         CALL zSetCTLText(zGetMainItem(%ID_DURATION), BassAudioToTime(gnMediaLength))
         CALL zSetTrackValue(zGetMainItem(%ID_TRACK_SEARCH), gnMediaPos)

'         // Detect ID3 TAG
         CALL BassGetID3TAG(gzAudioFile)

         FUNCTION = BASS_ChannelPlay(gnAudioChannel, 0)

'         ////////////////////////////////////////
          IF gnScanThread THEN '// still scanning
            gnScanKill = -1: CALL WaitForSingleObject(gnScanThread, 300) '// wait for the thread
          END IF
         IF gnScanKill = 0 THEN
            LOCAL nScanChannel AS LONG
            IF gnMediaType = %ACCSTREAM THEN
               nScanChannel = BASS_MP4_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_DECODE)
            ELSEIF gnMediaType = %WMASTREAM THEN
               nScanChannel = BASS_WMA_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_DECODE)
            ELSE
               nScanChannel = BASS_StreamCreateFile(%FALSE, gzAudioFile, 0, 0, %BASS_STREAM_DECODE)
            END IF
            IF nScanChannel THEN
               THREAD CREATE ScanPeaks(nScanChannel) TO gnScanThread
               'call ScanPeaks(nScanChannel)
            ELSEIF ghScanDC THEN
               CALL zFillRect(ghScanDC, 0, 0, %SCANWIDTH, %SCANHEIGHT, 0) '// Clear DC with black color
            END IF
         END IF
'         ////////////////////////////////////////

         gnAudioPause = %FALSE
      ELSE
         CALL BassStreamEllapsed(0, 0, 0, 0)
      END IF
   END IF
END FUNCTION


...
Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on November 20, 2009, 08:15:24 AM
Thanks for the tip Patrice!

Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 04, 2010, 01:09:01 PM
Jürghen

You have done a tremendous work, bravo !

I have been running it, in full HD mode 1920 x 1080 with an average use of 30% on my XP HXD 18 (Dual Core 2 Duo) using your Enhanced mode.

See attached screen shot.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 04, 2010, 05:55:36 PM
QuoteWich "Graphic Processing Unit" do you have in your Computer
NVIDIA GeForce 9600M GT with 512 Mb of dedicated video RAM + 1790 Mb of shared memory.

Dual display: main display is running in full HD mode 1920 x 1080, second display in 1600 x 1200.

OS Windows 7 running in full AERO composited mode.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on January 05, 2010, 10:45:18 AM
Hi Jürgen,

thanks a lot for new plugin, it ran fine on my PC (in signature).
I got around 34FPS and 60 to 70% CPU usage, thanks to being just single core I guess :)


Petr
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 05, 2010, 10:27:06 PM
Hi Petr,

thank`s a lot for your feedback and the technical Information.
This give me the confirmation for the right adjustment of speed in the plugin.
But it's faster on your Machine as i thought.
That`s nice, thank you!

The Screenshot show CPU usage of my System at Fullscreen..

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 07, 2010, 12:31:34 AM
Quote from: Patrice Terrier on January 04, 2010, 05:55:36 PM

OS Windows 7 running in full AERO composited mode.

...


Patrice!

You are on Windows 7..

Maybe this Article about Windows 7's 'GodMode' is also interesting for you:
http://news.cnet.com/8301-13860_3-10423985-56.html (http://news.cnet.com/8301-13860_3-10423985-56.html)

;)
Title: Update in Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 11, 2010, 03:50:45 AM
Update for Matrix-Sequences-V1.0!!

The first post of this thread has been updated to JH_Matrix-Sequences-V1.1
I reworked the Plugin this Sunday and improved the Colormodes, Enhancedmode and one more time the Speed of the Fall.
The Animation is a bit faster but also smoother,more compatible with older Computer and has a new Perspective.
Adding the registry Function`s to be able to save the current Setting`s of the Plugin to the Registry is also be done..
At last i removed the glGetstring an glGeterror Function`s, e.t.c. from the main Code of the Plugin and
created a glGetMessage.inc to provide the usage of glErrorhandling also fo other Plugin`s.

The new BBPlugin is only a part from my Matrix-X Project that must been posted before
BassBox lurkers reach the number of 100 000!

A final Version is in work..

Here is the link to get the new BBPlugin:

http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg11395#msg11395 (http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg11395#msg11395)

Patrice!

I hope this Plugin come up to your exeption's.
If you have a special Idear for the Plugin, tell me!
I will be see what i can do, because my Brain produced the code.
Based on your Idear!!    ;D

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 11, 2010, 12:07:58 PM
Jürgen

I like the new perspective, because it looks closer to the original Matrix.

I would suggest to preserve the original ratio of the texture being used in the background, like in the "Interference" plugin, then I could post some nice new textures that would make it more futuristic.

I would also use peek detection to display the fire effect in the rythm of the audio stream, like with the "FireWorks" plugin.  

And i would play the whole animation like in the "HAL" plugin, see the speed rotation that increase or decrease based on the audio flow.

Keep up the good work!

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 14, 2010, 11:15:56 PM
Patrice,

sorry for late reply! Busy..

To improve the Background was also in my Mind, but in the Moment no more Idears what to do.
That`s what i say, you have always really good Idears for programming!
I don`t have the SourceCode from the "Interference" plugin, only from the "HAL" and the "FireWorks" plugin.
But i`m already thinking how to do it. Thank`s for the Inspiration!
It isn`t much work and i`m sure that gives a very good Effect at the Background.

I would say at first i write the code for the new Background and when it`s done, i post the Code.
So you be able to implement the new Texture`s, while i find Solution`s for the next Step`s.

Quote from: Patrice Terrier on January 11, 2010, 12:07:58 PM

I like the new perspective, because it looks closer to the original Matrix.


To be closer at the Perspective to the original Matrix was my intension to adjust it, because that`s one
of the Part`s wich must be included and i will try to rework also the Perspective one more time at this Step.

...  ;)
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 15, 2010, 09:22:40 AM
Jürgen,

For the background what you have to do, is to preserve the aspect such as a grid of squares keep the same width and height for each cell. The background texture i will use are 1024 x 512 or 512 x 256, to be HD and wide screen compatible.

Here is the source code of the "Interference" plugin project:


'+--------------------------------------------------------------------------+
'|                                                                          |
'|                              Interference                                |
'|                          BassBox OpenGL plugin                           |
'|                                                                          |
'|                              Version 1.01                                |
'+--------------------------------------------------------------------------+
'|                                                                          |
'|                         Author Patrice TERRIER                           |
'|                                                                          |
'|                            copyright(c) 2009                             |
'|                                                                          |
'|                Patrice Terrier http://www.zapsolution.com                |
'|                                                                          |
'+--------------------------------------------------------------------------+
'|                  Project started on : 01-02-2009 (MM-DD-YYYY)            |
'|                        Last revised : 01-24-2009 (MM-DD-YYYY)            |
'+--------------------------------------------------------------------------+
'

#COMPILE DLL "Interference.dll"
#INCLUDE "Include\BBPlugin.inc"

%GL_BLEND                       = &H0BE2
%GL_MODELVIEW                   = &H1700
%GL_PROJECTION                  = &H1701
%GL_DEPTH_TEST                  = &H0B71
%GL_SMOOTH                      = &H1D01
%GL_LIGHT0                      = &H4000???
%GL_TRIANGLE_FAN                = &H0006
%GL_DEPTH_BUFFER_BIT            = &H00000100
%GL_COLOR_BUFFER_BIT            = &H00004000
%GL_QUADS                       = &H0007???
%GL_QUAD_STRIP                  = &H0008???
%GL_FRONT_AND_BACK              = &H0408???
%GL_AMBIENT_AND_DIFFUSE         = &H1602???
%GL_COLOR_MATERIAL              = &H0B57???
%GL_UNSIGNED_BYTE               = &h1401&
%GL_QUADS                       = &h0007&
%GL_COLOR_BUFFER_BIT            = &h4000&
%GL_DEPTH_BUFFER_BIT            = &h0100&
%GL_MATRIX_MODE                 = &h0BA0&
%GL_PROJECTION                  = &h1701&
%GL_SMOOTH                      = &h1D01&
%GL_SRC_ALPHA                   = &h0302&
%GL_ONE                         = &h0001&
%GL_LINEAR                      = &h2601&
%GL_PERSPECTIVE_CORRECTION_HINT = &h0C50&
%GL_NICEST                      = &h1102&
%GL_TEXTURE_2D                  = &h0DE1&
%GL_TEXTURE_MAG_FILTER          = &h2800&
%GL_TEXTURE_MIN_FILTER          = &h2801&
%GL_LUMINANCE                   = &h1909&
%GL_RGB                         = &H1907
%GL_RGBA                        = &H1908
%GL_TEXTURE                     = &H1702
%GL_LIGHTING                    = &H0B50
%GL_GREATER                     = &H0204
%GL_POSITION                    = &H1203???
%GL_LIGHT_MODEL_TWO_SIDE        = &H0B52???
%GL_NORMALIZE                   = &H0BA1???
%GL_AMBIENT                     = &H1200???
%GL_DIFFUSE                     = &H1201???
%GL_SPECULAR                    = &H1202???
%GL_POSITION                    = &H1203???
%GL_TRUE                        = 1
%GL_FALSE                       = 0
%GLU_SMOOTH                     = 100000
%GL_LESS                        = &H0201

TYPE RECT
    nLeft AS LONG
    nTop AS LONG
    nRight AS LONG
    nBottom AS LONG
END TYPE

' -- WinAPI useful functions
DECLARE FUNCTION GetTickCount LIB "KERNEL32.DLL" ALIAS "GetTickCount" () AS DWORD
DECLARE FUNCTION GetClientRect LIB "USER32.DLL" ALIAS "GetClientRect" (BYVAL hwnd AS DWORD, lpRect AS RECT) AS LONG

' -- For V-Sync control we need to get address of extensions
DECLARE FUNCTION wglGetProcAddress LIB "opengl32.dll" ALIAS "wglGetProcAddress" (lpStr AS ASCIIZ) AS LONG
' -- Advanced feature to keep vertical sync on
DECLARE FUNCTION prototype_wglSwapIntervalEXT( BYVAL number AS LONG ) AS LONG

DECLARE SUB glColor4ub LIB "OPENGL32.DLL" ALIAS "glColor4ub" (BYVAL red AS BYTE, BYVAL green AS BYTE, BYVAL blue AS BYTE, BYVAL Alpha AS BYTE)
DECLARE SUB glNormal3f LIB "OPENGL32.DLL" ALIAS "glNormal3f" ( BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE )
DECLARE SUB gluLookAt LIB "glu32.dll" ALIAS "gluLookAt" (BYVAL eyex#, BYVAL eyey#, BYVAL eyez#, BYVAL centerx#, BYVAL centery#, BYVAL centerz#, BYVAL upx#, BYVAL upy#, BYVAL upz AS DOUBLE)
DECLARE SUB glColorMaterial LIB "OPENGL32.DLL" ALIAS "glColorMaterial" ( BYVAL DWORD, BYVAL DWORD )
DECLARE SUB glEnd LIB "opengl32.dll" ALIAS "glEnd"
DECLARE SUB glLoadIdentity LIB "opengl32.dll" ALIAS "glLoadIdentity"
DECLARE SUB glBegin LIB "opengl32.dll" ALIAS "glBegin" (BYVAL LONG)
DECLARE SUB glClear LIB "opengl32.dll" ALIAS "glClear" (BYVAL DWORD)
DECLARE SUB glEnable LIB "opengl32.dll" ALIAS "glEnable" (BYVAL DWORD)
DECLARE SUB glDisable LIB "opengl32.dll" ALIAS "glDisable" (BYVAL DWORD)
DECLARE SUB glShadeModel LIB "opengl32.dll" ALIAS "glShadeModel" (BYVAL DWORD)
DECLARE SUB glMatrixMode LIB "opengl32.dll" ALIAS "glMatrixMode" (BYVAL DWORD)
DECLARE SUB glHint LIB "opengl32.dll" ALIAS "glHint" (BYVAL DWORD, BYVAL DWORD)
DECLARE SUB glBlendFunc LIB "opengl32.dll" ALIAS "glBlendFunc" (BYVAL LONG, BYVAL LONG)
DECLARE SUB glTexCoord2f LIB "opengl32.dll" ALIAS "glTexCoord2f" (BYVAL SINGLE, BYVAL SINGLE)
DECLARE SUB glVertex3f LIB "opengl32.dll" ALIAS "glVertex3f" (BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE)
DECLARE SUB glTranslatef LIB "opengl32.dll" ALIAS "glTranslatef" (BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE)
DECLARE SUB glClearColor LIB "opengl32.dll" ALIAS "glClearColor" (BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE)
DECLARE SUB glGenTextures LIB "opengl32.dll" ALIAS "glGenTextures" (BYVAL DWORD, textures AS ANY)
DECLARE SUB glBindTexture LIB "opengl32.dll" ALIAS "glBindTexture" (BYVAL DWORD, BYVAL DWORD)
DECLARE SUB glTexParameteri LIB "opengl32.dll" ALIAS "glTexParameteri" (BYVAL DWORD, BYVAL DWORD, BYVAL LONG)
DECLARE SUB glTexImage2D LIB "opengl32.dll" ALIAS "glTexImage2D" (BYVAL DWORD, BYVAL LONG, BYVAL LONG, BYVAL LONG, BYVAL LONG, BYVAL LONG, BYVAL DWORD, BYVAL DWORD, npixels AS ANY)
DECLARE SUB glDeleteTextures LIB "opengl32.dll" ALIAS "glDeleteTextures" (BYVAL LONG, textures AS ANY)
DECLARE FUNCTION glGetError LIB "opengl32.dll" ALIAS "glGetError" () AS DWORD
DECLARE FUNCTION wglMakeCurrent LIB "OPENGL32.DLL" ALIAS "wglMakeCurrent" (BYVAL hdc AS DWORD, BYVAL hglrc AS DWORD) AS LONG
DECLARE SUB gluPerspective LIB "glu32.dll" ALIAS "gluPerspective" (BYVAL fovy#, BYVAL aspect#, BYVAL zNear#, BYVAL zFar AS DOUBLE)
DECLARE SUB glRotatef LIB "OPENGL32.DLL" ALIAS "glRotatef" (BYVAL angle AS SINGLE, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL z AS SINGLE)
DECLARE SUB glDepthFunc LIB "OPENGL32.DLL" ALIAS "glDepthFunc" (BYVAL func AS DWORD)
DECLARE SUB glLightfv LIB "OPENGL32.DLL" ALIAS "glLightfv" ( BYVAL DWORD, BYVAL DWORD, BYREF SINGLE )
DECLARE SUB glLightModeli LIB "OPENGL32.DLL" ALIAS "glLightModeli" ( BYVAL DWORD, BYVAL LONG )
DECLARE SUB glScalef LIB "OPENGL32.DLL" ALIAS "glScalef" ( BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE )
DECLARE SUB glMaterialf LIB "OPENGL32.DLL" ALIAS "glMaterialf" ( BYVAL DWORD, BYVAL DWORD, BYVAL SINGLE )
DECLARE SUB glClearDepth LIB "opengl32.dll" ALIAS "glClearDepth" (BYVAL DOUBLE)
DECLARE SUB glDepthMask LIB "OPENGL32.DLL" ALIAS "glDepthMask" ( BYVAL BYTE )
DECLARE SUB glAlphaFunc LIB "OPENGL32.DLL" ALIAS "glAlphaFunc" (BYVAL func AS DWORD, BYVAL ref AS SINGLE)
DECLARE SUB glColor4f LIB "opengl32.dll" ALIAS "glColor4f" (BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE, BYVAL SINGLE)

DECLARE FUNCTION gluNewQuadric  LIB "glu32.dll" ALIAS "gluNewQuadric"  () AS LONG
DECLARE SUB gluDeleteQuadric    LIB "glu32.dll" ALIAS "gluDeleteQuadric"   (BYVAL state AS ANY)
DECLARE SUB gluQuadricNormals   LIB "glu32.dll" ALIAS "gluQuadricNormals"  (BYVAL quadObject AS ANY, BYVAL normals AS DWORD)
DECLARE SUB gluQuadricTexture   LIB "glu32.dll" ALIAS "gluQuadricTexture"  (BYVAL quadObject AS ANY, BYVAL textureCoords AS DWORD)' ANY)
DECLARE SUB gluSphere      LIB "glu32.dll" ALIAS "gluSphere" (BYVAL qobj AS ANY, BYVAL radius#, BYVAL slices&, BYVAL stacks AS LONG)
DECLARE SUB gluDisk   LIB "glu32.dll" ALIAS "gluDisk"   (BYVAL qobj AS DWORD, BYVAL innerRadius#, BYVAL outerRadius#, BYVAL slices&, BYVAL loops AS LONG)

GLOBAL gColor() AS LONG
SUB ColorInit()
    DIM gColor(1 TO 33) AS LONG
    gColor(1)  = RGB(32,32,32)
    gColor(2)  = RGB(0,44,233)
    gColor(3)  = RGB(0,67,210)
    gColor(4)  = RGB(0,89,187)
    gColor(5)  = RGB(0,112,164)
    gColor(6)  = RGB(0,135,142)
    gColor(7)  = RGB(0,159,117)
    gColor(8)  = RGB(0,183,88)
    gColor(9)  = RGB(0,207,58)
    gColor(10) = RGB(0,231,29)
    gColor(11) = RGB(26,234,26)
    gColor(12) = RGB(52,237,23)
    gColor(13) = RGB(79,240,20)
    gColor(14) = RGB(105,243,17)
    gColor(15) = RGB(126,245,14)
    gColor(16) = RGB(147,248,11)
    gColor(17) = RGB(168,250,8)
    gColor(18) = RGB(189,253,5)
    gColor(19) = RGB(210,255,2)
    gColor(20) = RGB(233,255,0)
    gColor(21) = RGB(255,255,0)
    gColor(22) = RGB(255,251,0)
    gColor(23) = RGB(255,235,0)
    gColor(24) = RGB(255,215,0)
    gColor(25) = RGB(255,196,0)
    gColor(26) = RGB(255,176,0)
    gColor(27) = RGB(255,156,0)
    gColor(28) = RGB(253,137,0)
    gColor(29) = RGB(255,117,0)
    gColor(30) = RGB(255,97,0)
    gColor(31) = RGB(255,78,0)
    gColor(32) = RGB(255,58,0)
    gColor(33) = RGB(255,0,0)
END SUB

FUNCTION LevelColr(BYVAL nLevel AS LONG) AS LONG
    LOCAL nColor AS LONG
    nLevel = nLevel + 1: IF nLevel > 33 THEN nLevel = 33
    nColor = 0: IF nLevel > 0 THEN nColor = gColor(nLevel)
    FUNCTION = nColor
END FUNCTION

DECLARE SUB gluCylinder LIB "GLU32.DLL" ALIAS "gluCylinder" (BYVAL DWORD, BYVAL DOUBLE, BYVAL DOUBLE, BYVAL DOUBLE, BYVAL LONG, BYVAL LONG)
SUB DrawCylinder(BYVAL Radius AS SINGLE, BYVAL Value AS SINGLE, BYVAL R1 AS SINGLE, BYVAL R2 AS SINGLE)
    LOCAL quadObj AS LONG
    quadObj = gluNewQuadric()                        ' Pointer to the Quadric Object (Return 0 If No Memory))
    IF quadObj THEN
       CALL gluQuadricNormals(quadObj, %GLU_SMOOTH)  ' Create Smooth Normals
       CALL gluQuadricTexture(quadObj, %GL_TRUE)     ' Create Texture Coords
       CALL gluCylinder(quadObj, Radius * R1, Radius * R2, Value, 24, 1)
       CALL gluDeleteQuadric(quadObj)
    END IF
END SUB

SUB DrawDisk(BYVAL Radius AS SINGLE)
    LOCAL quadObj AS LONG
    quadObj = gluNewQuadric()                        ' Pointer to the Quadric Object (Return 0 If No Memory))
    IF quadObj THEN
       CALL gluQuadricNormals(quadObj, %GLU_SMOOTH)  ' Create Smooth Normals
       CALL gluQuadricTexture(quadObj, %GL_TRUE)     ' Create Texture Coords
       CALL gluDisk(quadObj, 0.0, Radius, 32, 32)
       CALL gluDeleteQuadric(quadObj)
    END IF
END SUB

'// Renders flat square
SUB RenderSquare(BYVAL edge AS SINGLE)
    edge = edge / 2
    CALL glBegin(%GL_QUADS)
       CALL glTexCoord2f(0.0, 0.0): CALL glVertex3f(-edge,-edge, 0.0)
       CALL glTexCoord2f(1.0, 0.0): CALL glVertex3f( edge,-edge, 0.0)
       CALL glTexCoord2f(1.0, 1.0): CALL glVertex3f( edge, edge, 0.0)
       CALL glTexCoord2f(0.0, 1.0): CALL glVertex3f(-edge, edge, 0.0)
    CALL glEnd()
END SUB

GLOBAL gsR(), gsG(), gsB() AS SINGLE
SUB MakeColorLUT()
    LOCAL K, RGBColor AS LONG
    DIM gsR(255), gsG(255), gsB(255) AS SINGLE
    FOR K = 0 TO 255
        RGBColor = LevelColr(K)
        gsR(K) = (BBP_GetRValue(RGBColor) + 1) / 256
        gsG(K) = (BBP_GetGValue(RGBColor) + 1) / 256
        gsB(K) = (BBP_GetBValue(RGBColor) + 1) / 256
    NEXT
END SUB

'// The main exported plugin's function would be bbProc, like this:
FUNCTION BBProc ALIAS "BBProc" (BYREF BBP AS BBPLUGIN) EXPORT AS LONG
    REGISTER K AS LONG

    LOCAL nRet AS LONG

    DIM mt(1 TO 6) AS STATIC BBPTEXTURE
    LOCAL rc AS RECT
    DIM Vec4(3) AS LOCAL SINGLE

    STATIC ptr_wglSwapIntervalEXT AS DWORD, rAspect AS DOUBLE
    nRet = %BBP_SUCCESS

    SELECT CASE LONG BBP.Msg
    CASE %BBP_RENDER
         '// Draw the scene using BBP.LeftPeak and BBP.RightPeak
         LOCAL nLValue, nRValue, nValue, RGBColor, quadObj AS LONG
         LOCAL xD, pulse AS DOUBLE, cbA, cbR, cbG, cbB AS BYTE


         nLValue = (BBP.Lpeak / 700)
         nRValue = (BBP.Rpeak / 768)
         nValue = MAX&(nLValue, nRValue)

         '// Pulsating section
         pulse = nValue / 7
         '// Velocity section
         pulse = ABS(pulse / 4)

         CALL glClear(%GL_COLOR_BUFFER_BIT OR %GL_DEPTH_BUFFER_BIT)
         CALL glLoadIdentity()

         CALL gluLookAt(0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)

         CALL glEnable(%GL_LIGHTING)
         CALL glEnable(%GL_BLEND)

         '// Draw the fixed background -------------------------
         CALL glBindTexture(%GL_TEXTURE_2D, mt(4).Texture)
         CALL glBegin(%GL_QUADS)
            CALL glColor4ub(60,60,64,64)
            CALL glTexCoord2f(0.0, 0.0): CALL glVertex3f(-85,-45,-85.01) ' Bottom Left Of The Texture And Quad
            CALL glTexCoord2f(1.0, 0.0): CALL glVertex3f( 85,-45,-85.01) ' Bottom Right Of The Texture And Quad
            CALL glTexCoord2f(1.0, 1.0): CALL glVertex3f( 85, 45,-85.01) ' Top Right Of The Texture And Quad
            CALL glTexCoord2f(0.0, 1.0): CALL glVertex3f(-85, 45,-85.01) ' Top Left Of The Texture And Quad
         CALL glEnd()

         RGBColor = LevelColr(nValue)
         cbR = BBP_GetRValue(RGBColor)
         cbG = BBP_GetGValue(RGBColor)
         cbB = BBP_GetBValue(RGBColor)
         CALL glColor4ub(cbR , cbG , cbB, 64)'255)
         CALL glBindTexture(%GL_TEXTURE_2D, mt(4).Texture)
         CALL glBegin(%GL_QUADS)
            'CALL glColor4f(1.0,1.0,1.0,1.0)'0.5,0.5,0.5,0.5)
            CALL glTexCoord2f(0.0, 0.0): CALL glVertex3f(-85,-45,-85) ' Bottom Left Of The Texture And Quad
            CALL glTexCoord2f(1.0, 0.0): CALL glVertex3f( 85,-45,-85) ' Bottom Right Of The Texture And Quad
            CALL glTexCoord2f(1.0, 1.0): CALL glVertex3f( 85, 45,-85) ' Top Right Of The Texture And Quad
            CALL glTexCoord2f(0.0, 1.0): CALL glVertex3f(-85, 45,-85) ' Top Left Of The Texture And Quad
         CALL glEnd()
         '// ----------------------------------------------------

         CALL glDisable (%GL_LIGHTING)
       
''''''''''''''''''''''''''''''''
         DIM fft(BBP.FFTsize) AS SINGLE AT BBP.FFTdata
         DIM SoundBuffer(BBP.FFTsize) AS SINGLE
         LOCAL Cz AS LONG, Ax, Ay AS SINGLE

         Cz = -30

         '// Try and smooth out the buffer by averaging the last results:
         FOR K = 0 TO 255
             '// We use SQR to bring out the midtone of the music, otherwise the spectrum is very flat.
             '// And fortunatly SQR is highy optimized in PowerBASIC
             SoundBuffer(K) = SQR( SQR(fft(K)) * 2)
         NEXT

         '// Start drawing podium lights
         '// The iterator K goes from 0 (deepest bass) to 255 (highest treble pitch)
         '// Ax is the distance from the center. Ay & By are width and height of the flares.
         CALL glDisable(%GL_DEPTH_TEST)

         K = 1
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -8.75, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = -14.3
            Ay = 2 + SoundBuffer(K) * 15
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.80)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.80, Ay, SoundBuffer(K), 1.0/SoundBuffer(K))

         K = 33
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -8.55, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = 14.3
            Ay = 2 + SoundBuffer(1) * 15
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.80)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.80, Ay, SoundBuffer(1), 1.0/SoundBuffer(1))

         K = 7
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -7.25, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = -8.65
            Ay = 2 + SoundBuffer(K) * 3.5
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.50)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.50, Ay, 0.1, 2.0)

         K = 27
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -7.11, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = 8.60
            Ay = 2 + SoundBuffer(K) * 3.5
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.50)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.50, Ay, 0.1, 2.0)

         K = 12
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -6.55, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = -2.89
            Ay = 2 + SoundBuffer(K) * 3.5
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.40)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.40, Ay, 0.1, 2.0)

         K = 22
            CALL glLoadIdentity()
            CALL glTranslatef(0.0, -6.50, Cz)
            CALL glRotatef(-90, 1.0, 0.0, 0.0)
            Ax = 2.80
            Ay = 2 + SoundBuffer(K) * 3.5
            CALL glColor4f(gsR(K) * SoundBuffer(K), gsG(K) * SoundBuffer(K), gsB(K) * SoundBuffer(K), 0.7)
            CALL glTranslatef(Ax, 0.0, 0.0)
            CALL glRotatef((GetTickCount * pulse) / (pulse * 22), 0.0, 0.0, 1.0)

            CALL glBindTexture(%GL_TEXTURE_2D, mt(6).Texture)
            CALL DrawDisk(1.40)
            CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
            CALL DrawCylinder(1.40, Ay, 0.1, 2.0)
         '// End of podium lights

         CALL glEnable(%GL_DEPTH_TEST)

         CALL glLoadIdentity()
         CALL gluLookAt(0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)

         CALL glDepthMask(%GL_FALSE)

         '// Drawing the pulsating halo
         CALL glColor4ub(cbR , cbG , cbB, 255)
         CALL glBindTexture(%GL_TEXTURE_2D, mt(3).Texture)
         FOR K = 1 TO 4
             CALL glPushMatrix()
                CALL glTranslatef(0.0, -42.0, 1.0)
                CALL glRotatef(K * 20 + GetTickCount / (K * 100), 0.0, 0.0, 1.0)
                CALL glBegin(%GL_QUADS)
                   CALL glTexCoord2f(0.0, 0.0): CALL glVertex3f(-30,-30,-60.0)
                   CALL glTexCoord2f(1.0, 0.0): CALL glVertex3f( 30,-30,-60.0)
                   CALL glTexCoord2f(1.0, 1.0): CALL glVertex3f( 30, 30,-60.0)
                   CALL glTexCoord2f(0.0, 1.0): CALL glVertex3f(-30, 30,-60.0)
                CALL glEnd()
             CALL glPopMatrix()
         NEXT

         '// Draw star dust
         CALL glBindTexture(%GL_TEXTURE_2D, mt(2).Texture)
         CALL glColor4ub(32, 64, 128, 255)
         FOR K = 1 TO 900 STEP 3
             CALL glPushMatrix()
                CALL glRotatef(K * 20 + GetTickCount/(K * 100 + nValue / 600), 1.0, 0.0, 0.0)
                CALL glRotatef(K * 30 + GetTickCount/(K * 10), 0.0, 1.0, 0.0)
                CALL glTranslatef(0.35, -12.5, 0.0)
                CALL glRotatef(GetTickcount / 100 + K, 0.0, 0.0, 1.0)
                CALL RenderSquare(4 + SIN(K) * 10 * nValue / 80)
             CALL glPopMatrix()
         NEXT

         '// Draw cylinders
         CALL glRotatef(90.0, 1.0, 0.0, 0.0)
         FOR K = 1 TO 1
             CALL glBindTexture(%GL_TEXTURE_2D, mt(5).Texture)
             CALL glColor4ub(cbR \ 4 , cbG \ 4 , cbB, 48)
             CALL glPushMatrix()
                CALL glTranslatef(0.0, 0.0, -8.8)
                CALL glRotatef(-K * 20 + GetTickCount / (-K * 100), 0.0, 0.0, 1.0)
                CALL DrawCylinder(1.98, 15, 1, 1)
             CALL glPopMatrix()

             CALL glBindTexture(%GL_TEXTURE_2D, mt(1).Texture)
             CALL glColor4ub(cbR \ 8 , cbG \ 16 , cbB \ 12, 8)
             CALL glPushMatrix()
                CALL glTranslatef(0.0, 0.0, -8.8)
                CALL glRotatef(K * 20 + GetTickCount / (K * 100), 0.0, 0.0, 1.0)
                CALL DrawCylinder(2.0, 15, 1, 1)
             CALL glPopMatrix()
         NEXT

         CALL glDepthMask(%GL_TRUE)
         CALL glDisable(%GL_BLEND)

         '// Very important we must reassign UseRC to the new UseDC
         '// Note: don't use permanent DC, this produce better and smoother display
         CALL wglMakeCurrent(BBP.DC, BBP.RC)

    CASE %BBP_CREATE
         '// Retrieve plugin details
         BBP.Title    = "Interference"
         BBP.Author   = "Patrice Terrier"
         BBP.Version  = MAKDWD(1, 0) '// Version 1.0"
         BBP.RenderTo = %BBP_OPENGL  '// or %BBP_GDIPLUS, or %BBP_DIRECTX

    CASE %BBP_INIT
         '// Do your code initialisation there

         '// Set random-number seed.
         RANDOMIZE TIMER

         '// May I ask you at which pretty pointer wglSwapIntervalEXT situated is ?
         ptr_wglSwapIntervalEXT = wglGetProcAddress("wglSwapIntervalEXT")
         '// Enables V-Sync at startup
         IF ptr_wglSwapIntervalEXT THEN
            CALL DWORD ptr_wglSwapIntervalEXT USING prototype_wglSwapIntervalEXT(1) 'TO x
            'IF x = 0 THEN Something is terribly wrong
         END IF

         CALL BBP_SplitColorARGB(BBP.BackARGB, A?, R?, G?, B?)
         Alpha! = A? + 1: Red! = R? + 1: Green! = G? + 1: Blue! = B? + 1
         CALL glClearColor(Red! / 256, Green! /256, Blue! / 256, Alpha! / 256)

         CALL glEnable(%GL_DEPTH_TEST)
         CALL glShadeModel(%GL_SMOOTH)
         CALL glEnable (%GL_LIGHTING)
         CALL glEnable (%GL_LIGHT0)
         CALL glColorMaterial (%GL_FRONT_AND_BACK, %GL_AMBIENT_AND_DIFFUSE)
         CALL glEnable(%GL_COLOR_MATERIAL)
         CALL glEnable(%GL_NORMALIZE)
         CALL glBlendFunc(%GL_ONE, %GL_ONE)

         CALL glEnable(%GL_TEXTURE_2D)

         mt(1).FullName = $BBP_PLUGIN_FOLDER + "Texture\oblique.jpg":   mt(1).ID = 1: mt(1).Square = 0
         mt(2).FullName = $BBP_PLUGIN_FOLDER + "Texture\flare0.jpg":    mt(2).ID = 2: mt(2).Square = 0
         mt(3).FullName = $BBP_PLUGIN_FOLDER + "Texture\Crown.png":       mt(3).ID = 3: mt(3).Square = 0
         mt(4).FullName = $BBP_PLUGIN_FOLDER + "Texture\Interference.jpg":    mt(4).ID = 4: mt(4).Square = 0
         mt(5).FullName = $BBP_PLUGIN_FOLDER + "Texture\superbeam.jpg": mt(5).ID = 5: mt(5).Square = 0
         mt(6).FullName = $BBP_PLUGIN_FOLDER + "Texture\texture3.jpg": mt(6).ID = 6: mt(6).Square = 0
         CALL MakeMultipleTexture (BYVAL VARPTR(mt(LBOUND(mt))), UBOUND(mt) - LBOUND(mt) + 1)

         CALL ColorInit()
         CALL MakeColorLUT()

    CASE %BBP_SIZE
         '// The size of the view port has changed.
         CALL GetClientRect(BBP.ParentWindow, rc)

         CALL glMatrixMode(%GL_PROJECTION)
         CALL glLoadIdentity()
         rAspect = 0: IF rc.nBottom THEN rAspect = rc.nRight / rc.nBottom
         CALL gluPerspective(45.0, rAspect, 0.1, 150.0)
         CALL glMatrixMode(%GL_MODELVIEW)

    CASE %BBP_DESTROY
         '// Free up your resources there
         CALL DestroyTexture (BYVAL VARPTR(mt(LBOUND(mt))), UBOUND(mt) - LBOUND(mt) + 1)
         '// Disables V-Sync when the end is near :)
         IF ptr_wglSwapIntervalEXT THEN
            CALL DWORD ptr_wglSwapIntervalEXT USING prototype_wglSwapIntervalEXT(0) 'TO x
           'IF x = 0 THEN Something is terribly wrong
         END IF

    CASE ELSE
        nRet = %BBP_ERROR
    END SELECT

    FUNCTION = nRet
END FUNCTION

SUB MakeMultipleTexture (BYVAL tp AS BBPTEXTURE PTR, BYVAL N AS LONG)
    LOCAL mtCount, K, nRet, xSize, ySize, OkDelete AS LONG
    DIM mt(1 TO N) AS BBPTEXTURE AT tp
    mtCount = UBOUND(mt()) - LBOUND(mt()) + 1
    IF mtCount THEN
       DIM Texture(1 TO mtCount) AS LONG
       FOR K = 1 TO mtCount
           Texture(K) = mt(k).Texture: IF Texture(K) THEN OkDelete = -1
       NEXT
       IF OkDelete THEN CALL glDeleteTextures(mtCount, Texture(1))
       CALL glGenTextures(mtCount, Texture(1)): nRet = glGetError()
       IF nRet = 0 THEN
          FOR K = 1 TO mtCount
              REDIM PixelArray(0) AS BYTE
              IF BBP_CreateGLTextureFromFile(mt(K).FullName, xSize, ySize, PixelArray(), mt(K).Square) THEN
                 mt(k).Texture = Texture(K)
                 CALL glBindTexture(%GL_TEXTURE_2D, Texture(K)): nRet = glGetError
                 IF nRet = 0 THEN
                    CALL glTexParameteri(%GL_TEXTURE_2D, %GL_TEXTURE_MAG_FILTER, %GL_LINEAR)
                    CALL glTexParameteri(%GL_TEXTURE_2D, %GL_TEXTURE_MIN_FILTER, %GL_LINEAR)
                    CALL glTexImage2D(%GL_TEXTURE_2D, 0, 4, xSize&, ySize&, 0, %GL_RGBA, %GL_UNSIGNED_BYTE, PixelArray(0))
                 END IF
              END IF
          NEXT
       END IF
    END IF
END SUB

SUB DestroyTexture(BYVAL tp AS BBPTEXTURE PTR, BYVAL N AS LONG)
    LOCAL K, mtCount, OkDelete AS LONG
    DIM mt(1 TO N) AS BBPTEXTURE AT tp
    mtCount = UBOUND(mt()) - LBOUND(mt()) + 1
    IF mtCount THEN
       DIM Texture(1 TO mtCount) AS LONG
       FOR K = 1 TO mtCount
           Texture(K) = mt(k).Texture: IF Texture(K) THEN OkDelete = -1
       NEXT
       IF OkDelete THEN CALL glDeleteTextures(mtCount, Texture(1))
    END IF
END SUB
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 17, 2010, 07:21:43 PM
Patrice!

Thank you very much for all this Information`s and the marvelous Texture`s!
I fix the little Problem with the wrong Colors, it`s no Problem...
Now i will try your new Texture`s!

:)
...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 17, 2010, 10:00:18 PM
First post has been updated...
I fixed the little Problem with the Colors and improved Version 1.1 with the original Background.

http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg11395#msg11395 (http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg11395#msg11395)

...
Title: BassBox 2009 (MATRIX HD)
Post by: Patrice Terrier on January 18, 2010, 05:41:14 PM
Jürgen (and others)

I couldn't resist to put my nose in your code ...

My idea would be to allow the changing of the texture background, as i am doing already with the VORTEX plugin.

See the attached screen shot taken on full HD display

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on January 19, 2010, 04:14:44 AM
Patrice!

I work on it to be HD and wide screen compatible and i think
to do it like the Background from Vortex-Plugin is the best Idear.
Screenshot look's really nice!!

Last Post was only to have quick fixed the color`s in the available Version.

And any changes at the SourceCode are alowed!

Put your nose into the Code, that`s why it`s included in the .zip.

...   :)
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 19, 2010, 08:57:42 AM
Jürgen

To avoid any interference with you own work, i have renamed the project "Matrix.dll" to replace the old one.

I am also working with Photoshop CS4 to create the new textures and all the glass effects.

Of course, i shall post the source code here once done.

I have also made a new play/pause button for the player, see the attached png files to put in the "DarkCrystal" folder.

...
Title: BassBox 2009 "Matrix Revisited" (preview)
Post by: Patrice Terrier on January 19, 2010, 09:37:41 PM
Here is a preview of the revisited MATRIX.

I still have some work to do on it, however it will give you already a good vision of what i have done with Jürgen code.

The attached ZIP file is provided without the source code, because i must clean it before posting it there.

Use the Left and Right mouse button to change the background, and do the same while holding down the Left Shift key, to move from one frame to another.

Note: The textures have been designed to be displayed full screen, using BassBox 2.53+, and full HD mode (1920 x 1080) that will be the new standard ;)

(http://www.zapsolution.com/pictures/TheMatrix.jpg)

...
Title: First release of "The Matrix revisited" version 2.0
Post by: Patrice Terrier on January 21, 2010, 04:28:48 PM
Here is the first release of the "Matrix revisited"

Once again i would like to thank Jürgen who did all the hard work of translating the C++ code to BBplugin.

Screen shots:

(http://www.zapsolution.com/pictures/TheMatrix03.jpg)

(http://www.zapsolution.com/pictures/TheMatrix04.jpg)

(http://www.zapsolution.com/pictures/TheMatrix05.jpg)

...

Title: Second release of "The Matrix revisited" version 2.01
Post by: Patrice Terrier on January 22, 2010, 07:55:05 PM
Second release of the "Matrix revisited" with new textures and full source code.

Several changes in this version:

- Now you can have an unlimited number of backgrounds and frames,
 as long as you name them this way:
 BKG_*.jpg (background)
 FRM_*.png (transparent frame)

- New BBplugin.inc API(s)
 FUNCTION BBP_IsKeyDown (BYVAL CheckKey AS LONG) AS LONG
 FUNCTION BBP_IsShiftKeyPressed () AS LONG
 FUNCTION BBP_IsCtrlKeyPressed () AS LONG
 FUNCTION BBP_IsLButtonDown () AS LONG
 FUNCTION BBP_IsRButtonDown () AS LONG
 SUB BBP_ListDeleteAll(BYVAL hList AS LONG)
 SUB BBP_ListSelectPlus(BYVAL hList AS LONG, BYVAL nSelected AS LONG)
 FUNCTION BBP_ListGetCursel(BYVAL hList AS LONG) AS LONG
 FUNCTION BBP_ListAdd(BYVAL hList AS LONG, zTmp AS ASCIIZ) AS LONG
 FUNCTION BBP_ListGetText(BYVAL hList AS LONG, BYVAL Item AS LONG) AS STRING
 FUNCTION BBP_ListCount(BYVAL hList AS LONG) AS LONG
 SUB BBP_DetectTexture(BYVAL sFilter AS STRING, BYVAL hList AS LONG, BYVAL nUseItem AS LONG)
 FUNCTION BBP_UpdateNamedGLTextureFromFile(zFullName AS ASCIIZ, BYVAL NamedTexture AS LONG, BYVAL nSquareMode AS LONG) AS LONG

- All the backgrounds are rectangular to best fit on full HD display (with aspect preservation).

- All settings are set to enhanced mode.

Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on January 23, 2010, 12:12:17 AM
Running in full aero crystal mode on windows 7

(http://www.zapsolution.com/pictures/TheMatrix06.jpg)

...
Title: Third release of "The Matrix revisited" version 2.02 (HUD buttons)
Post by: Patrice Terrier on January 24, 2010, 06:31:57 PM
This version introduces the new HUD buttons, to navigate between frames or backgrounds.

The HUD buttons are drawn in 2D OpenGL mode, using standard pixel window coordinates.

To show them, move the mouse cursor either on top or bottom of the window.
(They are shown or hidden automatically).

You can just click the left mouse button on an arrow, or hold the left mouse button down to change in sequence.

New frames have been added.


Here is a screen shot showing the bottom HUD buttons:

(http://www.zapsolution.com/pictures/TheMatrix08.jpg)
...
Title: Fourth release of "The Matrix revisited" version 2.03 (HUD buttons)
Post by: Patrice Terrier on January 31, 2010, 10:20:22 AM
This is the fourth "mouture", with:

- Little pulsating effect for the background image.
- Two more backgrounds.
- New restore HUD button (to switch back from full screen mode).


Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on February 09, 2010, 05:29:22 PM
Patrice!

I think With this Plugin,
a new Level of Quality is realized as a Standart for future BBPlugins!
PowerBasic provide`s very good handling for any Kind of Array`s, but to use
an unvisible "Lisbox window" is another elegant Solution to Hanle the Texture`s.
I have the Idear to use a "Listview Control", because there are a bit more Function`s..
For example, usage of Colums for different Proberty`s or sorting by
Filenames seperated from Pathname`s, Filesize, Last Modified, File extension`s and so on..

But for first, i found a little Problem..
On my Laptop doesn`t exist your zTrace.dll and by running the Plugin without the DLL, you`re
not be able to select another Texture for the Background and no HD-Button`s are displayed.

I would suggest to put the zTrace.dll into the zip to resolve the Problem!

Now i want to say,

the new Plugin is the nicest MatrixFall i`ve ever seen and
thank You for this fantastic Teamwork!!

...
;)
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 12, 2010, 10:29:04 PM
Jürgen (and others)

I have attached to this post three more Matrix backgrounds that i think you may like...

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 13, 2010, 12:58:05 PM
Jürgen

I have much more textures that those i have posted here, thus feel free to change their number if they don't match with yours, it is what i am doing myself  ;)

I shall download now your new one.

1> Added:
I have removed your last ZIP, because the Matrix.bas version you put in it, was not using 2.04 but a previous one (without the changes done to ColorInit).
After checking JH_glGetMessage.inc, i found that JH_glResizeViewport and JH_glDoMsg are not used by the plugin.

Note: I am using zXref to cleanup the code, and keep the plugin as small as possible.

2> Added:
I have reworked your texture and added a new frame to use with it.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 13, 2010, 07:05:01 PM
I have also reworked the attached BKG_012.jpg to remove the jpeg pixel artefacts.

Note: I always use best quality with JPEG to avoid artefacts, when playing in full screen mode.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 14, 2010, 12:16:33 AM
Jürgen

If you post a new version make sure you start from the version 2.04, that was posted here (http://www.jose.it-berater.org/smfforum/index.php?topic=2975.msg11658#msg11658), and not from an oldest one, thank you.

Here is the good ColorInit:

SUB ColorInit()
   DIM gbbColor(1 TO 33) AS LONG, sCoef AS SINGLE
   sCoef = 0.75                                              
   gbbColor(1)  = RGB(32  * sCoef,  32 * sCoef,  32 * sCoef) 'RGB(32,32,32)  
   gbbColor(2)  = RGB(0   * sCoef,  44 * sCoef, 233 * sCoef) 'RGB(0,44,233)  
   gbbColor(3)  = RGB(0   * sCoef,  67 * sCoef, 210 * sCoef) 'RGB(0,67,210)  
   gbbColor(4)  = RGB(0   * sCoef,  89 * sCoef, 187 * sCoef) 'RGB(0,89,187)  
   gbbColor(5)  = RGB(0   * sCoef, 112 * sCoef, 164 * sCoef) 'RGB(0,112,164)
   gbbColor(6)  = RGB(0   * sCoef, 135 * sCoef, 142 * sCoef) 'RGB(0,135,142)
   gbbColor(7)  = RGB(0   * sCoef, 159 * sCoef, 117 * sCoef) 'RGB(0,159,117)
   gbbColor(8)  = RGB(0   * sCoef, 183 * sCoef,  88 * sCoef) 'RGB(0,183,88)  
   gbbColor(9)  = RGB(0   * sCoef, 207 * sCoef,  58 * sCoef) 'RGB(0,207,58)  
   gbbColor(10) = RGB(0   * sCoef, 231 * sCoef,  29 * sCoef) 'RGB(0,231,29)
                                                                             
   gbbColor(11) = RGB(26  * sCoef, 234 * sCoef,  26 * sCoef) 'RGB(26,234,26)
   gbbColor(12) = RGB(52  * sCoef, 237 * sCoef,  23 * sCoef) 'RGB(52,237,23)
   gbbColor(13) = RGB(79  * sCoef, 240 * sCoef,  20 * sCoef) 'RGB(79,240,20)
   gbbColor(14) = RGB(105 * sCoef, 243 * sCoef,  17 * sCoef) 'RGB(105,243,17)
   gbbColor(15) = RGB(126 * sCoef, 245 * sCoef,  14 * sCoef) 'RGB(126,245,14)
   gbbColor(16) = RGB(147 * sCoef, 248 * sCoef,  11 * sCoef) 'RGB(147,248,11)
   gbbColor(17) = RGB(168 * sCoef, 250 * sCoef,   8 * sCoef) 'RGB(168,250,8)
   gbbColor(18) = RGB(189 * sCoef, 253 * sCoef,   5 * sCoef) 'RGB(189,253,5)
   gbbColor(19) = RGB(210 * sCoef, 255 * sCoef,   2 * sCoef) 'RGB(210,255,2)
   gbbColor(20) = RGB(233 * sCoef, 255 * sCoef,   0 * sCoef) 'RGB(233,255,0)
                                                                             
   gbbColor(21) = RGB(255 * sCoef, 255 * sCoef,   0 * sCoef) 'RGB(255,255,0)
   gbbColor(22) = RGB(255 * sCoef, 251 * sCoef,   0 * sCoef) 'RGB(255,251,0)
   gbbColor(23) = RGB(255 * sCoef, 235 * sCoef,   0 * sCoef) 'RGB(255,235,0)
   gbbColor(24) = RGB(255 * sCoef, 215 * sCoef,   0 * sCoef) 'RGB(255,215,0)
   gbbColor(25) = RGB(255 * sCoef, 196 * sCoef,   0 * sCoef) 'RGB(255,196,0)
   gbbColor(26) = RGB(255 * sCoef, 176 * sCoef,   0 * sCoef) 'RGB(255,176,0)
   gbbColor(27) = RGB(255 * sCoef, 156 * sCoef,   0 * sCoef) 'RGB(255,156,0)
   gbbColor(28) = RGB(253 * sCoef, 137 * sCoef,   0 * sCoef) 'RGB(253,137,0)
   gbbColor(29) = RGB(255 * sCoef, 117 * sCoef,   0 * sCoef) 'RGB(255,117,0)
   gbbColor(30) = RGB(255 * sCoef,  97 * sCoef,   0 * sCoef) 'RGB(255,97,0)  
   gbbColor(31) = RGB(255 * sCoef,  78 * sCoef,   0 * sCoef) 'RGB(255,78,0)  
   gbbColor(32) = RGB(255 * sCoef,  58 * sCoef,   0 * sCoef) 'RGB(255,58,0)  
   gbbColor(33) = RGB(255 * sCoef,   0 * sCoef,   0 * sCoef) 'RGB(255,0,0)  
END SUB


and the function using it:


        'CALL glColor4ub(BBP_GetRValue(RGBColor) * 0.75, BBP_GetGValue(RGBColor) * 0.75, BBP_GetBValue(RGBColor) * 0.75, 128)
        CALL glColor4ub(BBP_GetRValue(RGBColor), BBP_GetGValue(RGBColor), BBP_GetBValue(RGBColor), 128)


...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on February 14, 2010, 01:26:05 AM
Patrice,

thank you very much for your work!!

I really appreciate that!

And i will keep in Mind to take the latest Version next time...

Thank`s a lot!

:)
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on February 23, 2010, 07:20:29 AM
Bonjour Patrice,

votre MatrixFont La texture est très bon - le job idéal!

Dois vous remercier!

Thank You very much!!

..
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 24, 2010, 05:22:52 PM
Here are two new backgrounds.

Suggestion for the Bubble plugin  ;D
(replace the MatrixFont texture with a bubble one, and draw them from bottom to top instead of top to bottom).

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on February 24, 2010, 05:48:10 PM
Quote from: Patrice Terrier on February 24, 2010, 05:22:52 PM

Suggestion for the Bubble plugin  ;D



Or an Aquarium with Bubbles and swimming Fishes :)

Funny Idear, i think about it..

I want to see the new Background`s now..

Thank`s again!!
...
Title: BassBox 2009 (MATRIX plugin fixup)
Post by: Patrice Terrier on February 25, 2010, 06:27:20 PM
In the MATRIX plugin, the HUD's arrow should be shown/active, only, when the BassBox is the active window (ForeGroundWindow).

This can be easily fixed, checking if the parent window is playing in the foreground like this:

DECLARE FUNCTION GetForegroundWindow LIB "USER32.DLL" ALIAS "GetForegroundWindow" () AS DWORD

         IF GetForeGroundWindow() = GetParent(BBP.ParentWindow) THEN
            CALL BBP_DrawUperHUD (BBP.ParentWindow)
            CALL BBP_DrawLowerHUD (BBP.ParentWindow)
         END IF


...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on February 25, 2010, 08:55:31 PM
Patrice,

i can`t reproduce this error with my Computer... I use WinXP ServicePack 3!

Here you can see that BassBox isn`t active and the HUD Buttons are visible.
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on February 26, 2010, 09:40:37 AM
Quotei can`t reproduce this error with my Computer... I use WinXP ServicePack 3!

It works very well with Seven.

If it doesn't work by you, then it could be that the foreground window can be NULL in certain circumstances, such as when a window is losing activation.

See MSDN documentation about GetForegroundWindow here. (http://msdn.microsoft.com/en-us/library/ms633505(VS.85).aspx)

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on March 03, 2010, 03:42:23 AM
Patrice,

i  think this is the right Statement wich  return what `s needed for this Behavior.
Does it on WinXP and will work also on Windows 7..

            IF GetActiveWindow() = GetParent(BBP.ParentWindow) THEN

Because the Handle from active Window is needed and not the Handlel from Forgroundwindwindow!!
There will come more other issuess in the Future for a different Windowhandle....

Better use "GetActiveWindow" instead also on Win7!  :>)
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on March 13, 2010, 07:36:08 AM
Bonjour Patrice and other`s...

I fixed and tested this Solution the last two weeks on WinXP-Pro SP3..
And a Friend of mine use it same time on Windows Vista Ultimate and Windows7.
It works fine and fast in any Case that i was able to test it.

The MainWindow must be an activ ParentWindow and also the ForegroundWindow to recive Mouse or Keyboardinput to his Child windows!

DECLARE FUNCTION GetForegroundWindow LIB "USER32.DLL" ALIAS "GetForegroundWindow" () AS DWORD
DECLARE FUNCTION GetActiveWindow LIB "USER32.DLL" ALIAS "GetActiveWindow" ( ) AS DWORD  

' Handle of Window in static Storage..

' Save way to keep a Handle for the use in any Place of SourceCode.
' CALL JH_BBMainWindow(GetParent(BBP.ParentWindow), -1) to save the Handle.
'----====xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx====----
' read  EG.:  IF GetActiveWindow() = JH_BBMainWindow(0, 0) THEN  
'----====xxxxxxxxxxxxxxxxxxxxxxxx-JH_BBMainWindow-xxxxxxxxxxxxxxxxxxxxxxxxxx====----
FUNCTION JH_BBMainWindow(BYVAL BB_Main AS DWORD, rw AS LONG) AS DWORD
    STATIC BBParent AS DWORD
      IF rw THEN BBParent = BB_Main
      FUNCTION = BBParent
END FUNCTION
'
'----====xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx====----
'
'----====xxxxxxxxxxxxxxxxxxxxxxxxxx-JH_DrawBHUD-xxxxxxxxxxxxxxxxxxxxxxxxxxx====----
'
'----====xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx====----
SUB JH_DrawHUD(BYVAL BB_Main AS DWORD)
   STATIC rw AS LONG
     IF NOT rw THEN rw = -1 : CALL JH_BBMainWindow(GetParent(BB_Main), rw)
     IF GetActiveWindow() = JH_BBMainWindow(0, 0) THEN
        IF GetForegroundWindow() = JH_BBMainWindow(0, 0) THEN
           CALL BBP_DrawUperHUD (BB_Main)
           CALL BBP_DrawLowerHUD (BB_Main)
        END IF
     END IF
END SUB
'----====xxxxxxxxxxxxxxxxxxxxxxxxxx-JH_DrawBHUD-xxxxxxxxxxxxxxxxxxxxxxxxxxxx====----

Only one Line in MainProc..

'//------------------------------------------------------
          CALL JH_DrawHUD(BBP.ParentWindow)
'//------------------------------------------------------

Regards,

Jürgen

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on March 13, 2010, 04:25:09 PM
Jürgen,

I did myself the same changes, but i didn't post it there, as it seems that we are alone (you and me) to use this plugin.
See the "matrix.zip" file that is attached to the first post of this thread, and you will see that it has never been downloaded.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on March 13, 2010, 11:30:58 PM
Ok Patrice,

but just over night it`s downloaded four times.  ???

Thanks`for your Information!

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on March 14, 2010, 08:49:25 AM
Quotebut just over night it`s downloaded four times
That's funny, isn't it?  :D

...
Title: Good candidate
Post by: Patrice Terrier on May 22, 2010, 12:22:11 PM
Jürgen,

Here are some other good candidates, as i like them: http://vimeo.com/169308 (http://vimeo.com/169308)
:)

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on June 05, 2010, 03:25:45 AM
Thank's for the Link Patrice!!

There are some really nice Visualisation's..

One of my Favorit is this one:

Magnetosphere, revisited (from 2007)

http://vimeo.com/8581392 (http://vimeo.com/8581392)


;)
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 05, 2010, 02:53:47 PM
Jürgen,

I have reworked the eyes, may be you will like it as well  ;)

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on June 16, 2010, 03:37:43 PM
 :)

Really nice!!
Especially is the Mix of the shadow, glass and color Effects..

I`ll render also an image of a Eyes - maybe only one. I have an Idear!!

But firrst, see the new largest "Image" on Earth:

From the 100 Gigapixel Project..!

http://www.paris-26-gigapixels.com/index-en.html (http://www.paris-26-gigapixels.com/index-en.html)

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 16, 2010, 04:59:28 PM
Jürgen

This 100 gigapixel view of Paris, is really amazing, i didn't know it. Thanks for sharing.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on June 16, 2010, 05:35:35 PM
Patrice,

This final Version is the third Step and is expected to be exactly 26.7 gigapixels – to
finally 106.8 gigapixel for 360 degree PanoramaView like this one:

http://www.visites-interactives.eu/ (http://www.visites-interactives.eu/)


Here are the other two Final Versions of the Project:

http://www.harlem-13-gigapixels.com/ (http://www.harlem-13-gigapixels.com/)
http://www.yosemite-17-gigapixels.com/ (http://www.yosemite-17-gigapixels.com/)

enjoy!
..
Title: Re: BassBox 2009 (version 2.53)
Post by: Jürgen Huhn on June 20, 2010, 06:01:13 PM
Merci Patrice,

i saw it and removed my Post!

I declared oncaption as Global to use it as Flag for:

        CASE %WM_LBUTTONDBLCLK
                IF onCaption = 0 THEN CALL PostMessage(JH_BBMainWindow(BBP.ParentWindow,0) , %WM_COMMAND, MAK(LONG, %ID_FULLSCREEN, 0), 0)

To prevent sending this Message by doubleclick on the HUD Buttons. That was one of the last settings before ì post it.
I`ve updated the  Code, because ìn the available Version`s is the active Window Input not changed or updated until now.
And by fixing it i get some Idear`s for different states on the Button`s, if the Mouse is over a Button.
The Button switch to red. It`possible to set a third state.

I`ve checked the Code today and i found nothing more wrong... But tomorrow i will proof the Code again to be sure!

Thank you very much for your Response and for the Work..
Think i understand your meaning about it.

Here i have an older Link but maybe you didn`t saw it.
http://www.youtube.com/watch?v=rKgU6ubBgJA&feature=related (http://www.youtube.com/watch?v=rKgU6ubBgJA&feature=related)

Best Regards,

Jürgen  
Title: Helios plugin
Post by: Patrice Terrier on October 24, 2010, 06:29:21 PM
Here is a new BassBox visual plugin: Helios

This is an emitter attracter particle system, very sensitive to the audio peak level.

Note: Both DLL and PB source code are provided into the ZIP file, the new textures are inside the "Texture" folder, and they must be copied into the existing BassBox "Texture" folder, while the DLL must be copied into the BassBox "Plugin" folder.


(http://www.zapsolution.com/pictures/Helios.jpg)


Best to see it in full screen mode.

Enjoy!

...

Title: Monolith plugin
Post by: Patrice Terrier on October 26, 2010, 07:20:14 PM
Here is a new BassBox visual plugin: Monolith

This one was based on the "StarGate" demoscene.

Note: Both DLL and PB source code are provided into the ZIP file, the new textures are inside the "Texture" folder, and they must be copied into the existing BassBox "Texture" folder, while the DLL must be copied into the BassBox "Plugin" folder.

(http://www.zapsolution.com/pictures/Monolith.jpg)

Best to see it in full screen mode.

Enjoy!

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on October 29, 2010, 08:25:02 PM
To my friends,

This is a small fix to apply to the BassBox source code of version 2.53:

Quote
        CASE %ID_FULLSCREEN
             gbFullScreen = NOT gbFullScreen
             IF gbFullScreen THEN

                FOR K = %ID_BTN_PLAY TO %ID_FULLSCREEN
                    SELECT CASE LONG K
                    CASE %ID_PlayList, %ID_Background, %ID_PlugList
                    CASE ELSE
                        CALL ShowWindow(zGetMainItem(K), %SW_HIDE)
                    END SELECT
                NEXT
                FOR K = 0 TO gnPluginCount -1
                    CALL ShowWindow(zGetMainItem(%ID_PLUGIN_FIRST + K), %SW_HIDE)
                NEXT

'''''''''''''''''''// 2.54
                IsMaximized = IsZoomed(hWnd)
                IF IsMaximized = 0 THEN
                   CALL zButtonSysCommand(hWnd, MAKLNG(%ID_MAXIMIZE, 0))
                END IF
'''''''''''''''''''
                CALL ShowWindow(zGetMainItem(%ID_RESTORE), %SW_HIDE)
                CALL ShowWindow(zGetMainItem(%ID_MAXIMIZE), %SW_HIDE)
                CALL ShowWindow(zGetMainItem(%ID_CLOSE), %SW_HIDE)
                CALL ShowWindow(zGetMainItem(%ID_MINIMIZE), %SW_HIDE)
                CALL ShowWindow(zGetMainItem(%ID_LED), %SW_HIDE)

                CALL zPAINTBACKCOLOR(zColorARGB(255, 0), 1)

                nACTIVECAPTION  = SK_ACTIVECAPTION()
                nINACTIVECAPTION = SK_INACTIVECAPTION()
                CALL zSplitColorARGB(nACTIVECAPTION, cAlpha, Red, Green, Blue)
                gColorCaption = zColorARGB(16, RGB(Red, Green, Blue))
                CALL zACTIVECAPTION(gColorCaption, %WRITE)
                CALL zINACTIVECAPTION(gColorCaption, %WRITE)
'''''''''''''''''''// 2.54
'                 IsMaximized = IsZoomed(hWnd)
'                 IF IsMaximized = 0 THEN
'                    CALL zButtonSysCommand(hWnd, MAKLNG(%ID_MAXIMIZE, 0))
'                 END IF
             ELSE
Title: Helios2 plugin
Post by: Patrice Terrier on November 03, 2010, 11:50:42 AM
Here is a reworked version of the Helios plugin.

What is new:

Spheres are replaced by quad surfaces, using billboarding to keep them always oriented in front of the moving camera.
New dark grid background, using diffuse higlighting when the attracter quad surface become brighter.
Smaller CPU footprint.

Note: Both DLL and PB source code are provided into the ZIP file, the new textures are inside the "Texture" folder, and they must be copied into the existing BassBox "Texture" folder, while the DLL must be copied into the BassBox "Plugin" folder.

Best to see it in full screen mode.


Tell me if you prefer this version or the previous one?

...

Title: Asleep plugin
Post by: Patrice Terrier on December 12, 2010, 03:30:45 PM
The Asleep project has been converted into a new BassBox plugin.


Screen shot of Asleep playing full screen

(http://www.zapsolution.com/pictures/Asleep.jpg)



Note: Unzip the attached Asleep.zip into your BassBox directory, preserving the embedded folder tree structure.

...
Title: Problem with ATI AMD Radeon HD 6770M
Post by: Patrice Terrier on June 24, 2011, 06:04:09 PM
After a major hard disk failure, i just bought a new "HP Pavilion dv7-6090ef" laptop using this graphic chipset:
AMD ATI Radeon HD 6770M (running in 1600 x 900)
I encounter a problem using the BassBox "Matrix" plugin with it, that GPF after 20 to 30 seconds, never had such problemn with NVidia.

Does anyone encounter the same problem running the "Matrix" plugin on ATI?

Note: The graphic card is using OpenGL 6.14.10.10600

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Charles Pegge on June 25, 2011, 07:20:42 PM
Patrice,

Since it works for 20 seconds I would guess it is a badly handled buffer overflow in the ATI hardware. Are you accumulating any textures?

Or maybe the chips are overheating  ;D It happened to one of mine once - an ATI Radion.

Charles
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 26, 2011, 08:38:45 AM
Charles,

So far i have no idea of what could be the cause, and "Matrix" is the only BassBox plugin which fails with this ATI chipset.

Do you know of a good OpenGL debugger i could try?


Added:
I did check with gDEBugger (that is now free) and i couldn't find any error, however i am unsure if i use this debugger correctly.

Perhaps Petr has more experience with it, Petr?

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on June 26, 2011, 06:24:01 PM
Hi Patrice,

I will check it out. It is generally true that NVIDIA allows you to do some "stunts" beyond OpenGL specification, which may crash on ATi's which are very strict in their implementations.

Regarding your new GPU, could you please run this program on it:
http://www.powerbasic.com/support/pbforums/showthread.php?t=40075

Version 6.14.10.10600 is version of driver, not of OpenGL as such. Looking at the number format, it seems to me like driver from 14th June 2010, maybe good idea to upgrade it.

What do you get when you call glGetError on your PC?


Petr
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 26, 2011, 07:42:00 PM
Petr--

Here is the result of OpenGL_Support_Test:

Vendor: ATI TECHNOLOGIES INC.
Renderer: RADEON (TM) HD 6770M    
OpenGL: 4.1.10600 COMPATIBILITY PROFILE CONTEXT
Extensions( 196 ):
GL_AMDX_DEBUG_OUTPUT
GL_AMDX_VERTEX_SHADER_TESSELLATOR
GL_AMD_CONSERVATIVE_DEPTH
GL_AMD_DEBUG_OUTPUT
GL_AMD_DEPTH_CLAMP_SEPARATE
GL_AMD_DRAW_BUFFERS_BLEND
GL_AMD_NAME_GEN_DELETE
GL_AMD_PERFORMANCE_MONITOR
GL_AMD_SAMPLE_POSITIONS
GL_AMD_SEAMLESS_CUBEMAP_PER_TEXTURE
GL_AMD_SHADER_STENCIL_EXPORT
GL_AMD_SHADER_TRACE
GL_AMD_TEXTURE_CUBE_MAP_ARRAY
GL_AMD_TEXTURE_TEXTURE4
GL_AMD_TRANSFORM_FEEDBACK3_LINES_TRIANGLES
GL_AMD_VERTEX_SHADER_TESSELLATOR
GL_ARB_ES2_COMPATIBILITY
GL_ARB_BLEND_FUNC_EXTENDED
GL_ARB_COLOR_BUFFER_FLOAT
GL_ARB_COPY_BUFFER
GL_ARB_DEPTH_BUFFER_FLOAT
GL_ARB_DEPTH_CLAMP
GL_ARB_DEPTH_TEXTURE
GL_ARB_DRAW_BUFFERS
GL_ARB_DRAW_BUFFERS_BLEND
GL_ARB_DRAW_ELEMENTS_BASE_VERTEX
GL_ARB_DRAW_INDIRECT
GL_ARB_DRAW_INSTANCED
GL_ARB_EXPLICIT_ATTRIB_LOCATION
GL_ARB_FRAGMENT_COORD_CONVENTIONS
GL_ARB_FRAGMENT_PROGRAM
GL_ARB_FRAGMENT_PROGRAM_SHADOW
GL_ARB_FRAGMENT_SHADER
GL_ARB_FRAMEBUFFER_OBJECT
GL_ARB_FRAMEBUFFER_SRGB
GL_ARB_GEOMETRY_SHADER4
GL_ARB_GET_PROGRAM_BINARY
GL_ARB_GPU_SHADER5
GL_ARB_GPU_SHADER_FP64
GL_ARB_HALF_FLOAT_PIXEL
GL_ARB_HALF_FLOAT_VERTEX
GL_ARB_IMAGING
GL_ARB_INSTANCED_ARRAYS
GL_ARB_MAP_BUFFER_RANGE
GL_ARB_MULTISAMPLE
GL_ARB_MULTITEXTURE
GL_ARB_OCCLUSION_QUERY
GL_ARB_OCCLUSION_QUERY2
GL_ARB_PIXEL_BUFFER_OBJECT
GL_ARB_POINT_PARAMETERS
GL_ARB_POINT_SPRITE
GL_ARB_PROVOKING_VERTEX
GL_ARB_SAMPLE_SHADING
GL_ARB_SAMPLER_OBJECTS
GL_ARB_SEAMLESS_CUBE_MAP
GL_ARB_SEPARATE_SHADER_OBJECTS
GL_ARB_SHADER_BIT_ENCODING
GL_ARB_SHADER_OBJECTS
GL_ARB_SHADER_PRECISION
GL_ARB_SHADER_STENCIL_EXPORT
GL_ARB_SHADER_SUBROUTINE
GL_ARB_SHADER_TEXTURE_LOD
GL_ARB_SHADING_LANGUAGE_100
GL_ARB_SHADOW
GL_ARB_SHADOW_AMBIENT
GL_ARB_SYNC
GL_ARB_TESSELLATION_SHADER
GL_ARB_TEXTURE_BORDER_CLAMP
GL_ARB_TEXTURE_BUFFER_OBJECT
GL_ARB_TEXTURE_BUFFER_OBJECT_RGB32
GL_ARB_TEXTURE_COMPRESSION
GL_ARB_TEXTURE_COMPRESSION_BPTC
GL_ARB_TEXTURE_COMPRESSION_RGTC
GL_ARB_TEXTURE_CUBE_MAP
GL_ARB_TEXTURE_CUBE_MAP_ARRAY
GL_ARB_TEXTURE_ENV_ADD
GL_ARB_TEXTURE_ENV_COMBINE
GL_ARB_TEXTURE_ENV_CROSSBAR
GL_ARB_TEXTURE_ENV_DOT3
GL_ARB_TEXTURE_FLOAT
GL_ARB_TEXTURE_GATHER
GL_ARB_TEXTURE_MIRRORED_REPEAT
GL_ARB_TEXTURE_MULTISAMPLE
GL_ARB_TEXTURE_NON_POWER_OF_TWO
GL_ARB_TEXTURE_QUERY_LOD
GL_ARB_TEXTURE_RECTANGLE
GL_ARB_TEXTURE_RG
GL_ARB_TEXTURE_RGB10_A2UI
GL_ARB_TEXTURE_SNORM
GL_ARB_TIMER_QUERY
GL_ARB_TRANSFORM_FEEDBACK2
GL_ARB_TRANSFORM_FEEDBACK3
GL_ARB_TRANSPOSE_MATRIX
GL_ARB_UNIFORM_BUFFER_OBJECT
GL_ARB_VERTEX_ARRAY_BGRA
GL_ARB_VERTEX_ARRAY_OBJECT
GL_ARB_VERTEX_ATTRIB_64BIT
GL_ARB_VERTEX_BUFFER_OBJECT
GL_ARB_VERTEX_PROGRAM
GL_ARB_VERTEX_SHADER
GL_ARB_VERTEX_TYPE_2_10_10_10_REV
GL_ARB_VIEWPORT_ARRAY
GL_ARB_WINDOW_POS
GL_ATI_DRAW_BUFFERS
GL_ATI_ENVMAP_BUMPMAP
GL_ATI_FRAGMENT_SHADER
GL_ATI_MEMINFO
GL_ATI_SEPARATE_STENCIL
GL_ATI_TEXTURE_COMPRESSION_3DC
GL_ATI_TEXTURE_ENV_COMBINE3
GL_ATI_TEXTURE_FLOAT
GL_ATI_TEXTURE_MIRROR_ONCE
GL_EXT_ABGR
GL_EXT_BGRA
GL_EXT_BINDABLE_UNIFORM
GL_EXT_BLEND_COLOR
GL_EXT_BLEND_EQUATION_SEPARATE
GL_EXT_BLEND_FUNC_SEPARATE
GL_EXT_BLEND_MINMAX
GL_EXT_BLEND_SUBTRACT
GL_EXT_COMPILED_VERTEX_ARRAY
GL_EXT_COPY_BUFFER
GL_EXT_COPY_TEXTURE
GL_EXT_DIRECT_STATE_ACCESS
GL_EXT_DRAW_BUFFERS2
GL_EXT_DRAW_INSTANCED
GL_EXT_DRAW_RANGE_ELEMENTS
GL_EXT_FOG_COORD
GL_EXT_FRAMEBUFFER_BLIT
GL_EXT_FRAMEBUFFER_MULTISAMPLE
GL_EXT_FRAMEBUFFER_OBJECT
GL_EXT_FRAMEBUFFER_SRGB
GL_EXT_GEOMETRY_SHADER4
GL_EXT_GPU_PROGRAM_PARAMETERS
GL_EXT_GPU_SHADER4
GL_EXT_HISTOGRAM
GL_EXT_MULTI_DRAW_ARRAYS
GL_EXT_PACKED_DEPTH_STENCIL
GL_EXT_PACKED_FLOAT
GL_EXT_PACKED_PIXELS
GL_EXT_PIXEL_BUFFER_OBJECT
GL_EXT_POINT_PARAMETERS
GL_EXT_PROVOKING_VERTEX
GL_EXT_RESCALE_NORMAL
GL_EXT_SECONDARY_COLOR
GL_EXT_SEPARATE_SPECULAR_COLOR
GL_EXT_SHADER_IMAGE_LOAD_STORE
GL_EXT_SHADOW_FUNCS
GL_EXT_STENCIL_WRAP
GL_EXT_SUBTEXTURE
GL_EXT_TEXGEN_REFLECTION
GL_EXT_TEXTURE3D
GL_EXT_TEXTURE_ARRAY
GL_EXT_TEXTURE_BUFFER_OBJECT
GL_EXT_TEXTURE_COMPRESSION_BPTC
GL_EXT_TEXTURE_COMPRESSION_LATC
GL_EXT_TEXTURE_COMPRESSION_RGTC
GL_EXT_TEXTURE_COMPRESSION_S3TC
GL_EXT_TEXTURE_CUBE_MAP
GL_EXT_TEXTURE_EDGE_CLAMP
GL_EXT_TEXTURE_ENV_ADD
GL_EXT_TEXTURE_ENV_COMBINE
GL_EXT_TEXTURE_ENV_DOT3
GL_EXT_TEXTURE_FILTER_ANISOTROPIC
GL_EXT_TEXTURE_INTEGER
GL_EXT_TEXTURE_LOD
GL_EXT_TEXTURE_LOD_BIAS
GL_EXT_TEXTURE_MIRROR_CLAMP
GL_EXT_TEXTURE_OBJECT
GL_EXT_TEXTURE_RECTANGLE
GL_EXT_TEXTURE_SRGB
GL_EXT_TEXTURE_SHARED_EXPONENT
GL_EXT_TEXTURE_SNORM
GL_EXT_TEXTURE_SWIZZLE
GL_EXT_TIMER_QUERY
GL_EXT_TRANSFORM_FEEDBACK
GL_EXT_VERTEX_ARRAY
GL_EXT_VERTEX_ARRAY_BGRA
GL_EXT_VERTEX_ATTRIB_64BIT
GL_IBM_TEXTURE_MIRRORED_REPEAT
GL_KTX_BUFFER_REGION
GL_NV_BLEND_SQUARE
GL_NV_CONDITIONAL_RENDER
GL_NV_COPY_DEPTH_TO_COLOR
GL_NV_EXPLICIT_MULTISAMPLE
GL_NV_FLOAT_BUFFER
GL_NV_HALF_FLOAT
GL_NV_PRIMITIVE_RESTART
GL_NV_TEXGEN_REFLECTION
GL_NV_TEXTURE_BARRIER
GL_SGIS_GENERATE_MIPMAP
GL_SGIS_TEXTURE_EDGE_CLAMP
GL_SGIS_TEXTURE_LOD
GL_SUN_MULTI_DRAW_ARRAYS
GL_WIN_SWAP_HINT
WGL_EXT_SWAP_CONTROL


So far, i have checked glGetError with just a few functions.

Added:
It doesn't hang up when i run it using gDEBugger...
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 28, 2011, 09:05:19 AM
GL_STACK_OVERFLOW, that seems to be the error with ATI, no error with NVIDIA...
Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on June 29, 2011, 08:46:44 AM
Hi Patrice,

now we have clue :)
Please try to find after which command this happens - it is usually caused by not paired Push/Pop matrix calls, but that does not seem the case for Matrix plugin.

I sadly can't get the error on my NVIDIA setup, so it is quite hard to catch.


Petr


Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 29, 2011, 10:10:55 AM
I did try to contact Jürgen Huhn who wrote most of the Matrix plugin, to see if he could have a clue, however he seems to have disappeared.
I even leaved a message for him on "www.huhn-dialog.de", but no answer, i hope nothing wrong happened to him.

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on June 29, 2011, 06:30:55 PM
Petr, Charles,

I think i have found the problem, looks like the multiple calls to glFlush(), inside of the Matrix plugin, could cause a stack overflow with ATI.

Doing it only once before wglMakeCurrent, seems quite enough.

...

Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on June 30, 2011, 09:12:30 AM
Hi Patrice,

thanks a lot for sharing this info, this would never occur to me, as glFlush documentation does not mention this error as possible output:
http://www.opengl.org/sdk/docs/man3/xhtml/glFlush.xml

I consider this a problem worth reporting to ATi.


Petr
Title: Re: BassBox 2009 (version 2.53)
Post by: Patrice Terrier on July 18, 2011, 09:19:57 PM
Quotemultiple calls to glFlush(),

is not the cause of the error, still investigating...

Title: Found the bug in "TheMatrix" plugin
Post by: Patrice Terrier on July 19, 2011, 04:52:07 PM
I have found the bug in the "Matrix.dll" plugin.

I first thought it was an ATI problem, but it is not.

When he wrote the plugin, Jürgen used DIM MLetter(0 TO 80, 0 TO 81) AS MatrixLetters
but in further places he uses the facility to use direct addressing using MLetter(nArrayIndice),
where nArrayIndice could range between 0 and 6641.

Unfortunatly in several cases nArrayIndice could become out of range, and this was not checked.

Until i post a new version, you can solve the problem adding the code shown below in red:

SUB JH_MatrixPoint_Color4f(BYVAL sXYPos AS LONG)    ' MLetter(FrameX,FrameY) Position yx
   sXYPos = MIN&(MAX&(sXYPos,0), ARRAYATTR(MLetter(), 4) - 1)
   CALL glColor4f(MLetter(sXYPos).r / 3.6, _
                  MLetter(sXYPos).g / 1.5, _
                  MLetter(sXYPos).b / 2.8, _
                  MLetter(sXYPos).a - (1 / (30 * (nvalue / JH_GetHighLevel(0,0)))) _
                 )
END SUB


The strange thing, is that nobody never had a problem with this plugin, including myself, until i moved to intel CORE i7.

...
Title: Re: BassBox 2009 (version 2.53)
Post by: Petr Schreiber on July 20, 2011, 08:38:59 AM
Hi Patrice,

thanks for letting us know, this option did not occurred to me.


Good catch!,
Petr
Title: Re: BassBox 2011 (version 2.58)
Post by: Patrice Terrier on August 07, 2011, 11:22:53 AM
Lattest version 2.58 has been attached to the first post of this thread, to fix the ZIP file corruption caused by the "Server Collapse".

Version 2.58, comprise:
Title: OpenGL wglSwapIntervalEXT is a NoNo with DWM
Post by: Patrice Terrier on August 13, 2011, 02:07:40 PM
I found that using the OpenGL extension wglSwapIntervalEXT is a NO NO when running VISTA/SEVEN in Aero mode.

For example in BassBox when the "higher FPS rate" is on, and playing the "Helios" plugin, the CPU charge jump to more than 50%, because of wglSwapIntervalEXT being turned ON (default).

Turning it OFF,  decrease the CPU usage of the "Helios" plugin  below 5%...

Thus i am making change to BassBox, to disable wglSwapIntervalEXT when DWM is used, cheking the DWM state with my built-in zDwmIsCompositionEnabled API.


Title: BassBox 2011 - New version 2.60, reducing CPU footprint drastically
Post by: Patrice Terrier on August 13, 2011, 06:37:24 PM
The first post of this thread has been updated to version 2.60.

All the plugins and the player itself have been updated, to turn OFF wglSwapIntervalEXT when DWM is running, reducing the CPU footprint drastically when using "higher FPS rate".

...
Title: Re: BassBox 2011 (version 2.60)
Post by: Patrice Terrier on August 29, 2011, 09:46:08 PM
Since version 2.60, when BassBox is running in full HD, even in High FPS mode, most of the time it uses less than 4% of the second CPU when running on multi-core processors.

I wanted to tell you this, because most of you will never notice, if i don't say it myself ;)

...
Title: Bubble plugin
Post by: Patrice Terrier on April 02, 2012, 07:51:01 PM
Bubble

Here is a new plugin for BassBox 2.63, the zip file is attached to first post of this thread.

(http://www.zapsolution.com/pictures/Bubble.jpg)

...
Title: Re: BassBox 2011 (version 2.60)
Post by: Larry Charlton on April 02, 2012, 08:29:06 PM
The other plugins seem to be working but bubbles does funny stuff on my computer.(http://cur-ion.net/basBoxBubbles.png)
Title: Re: BassBox 2011 (version 2.60)
Post by: Patrice Terrier on April 02, 2012, 08:56:08 PM
You are missing the attached pwave.jpg texture. (You must copy it into the BBplugin\texture folder)

Looks like also, that you are not using version 2.63, then it have attached it to the first post of this thread

...
Title: Re: BassBox 2011 (version 2.60)
Post by: Larry Charlton on April 03, 2012, 12:08:55 AM
Yep, that was it, not sure how I missed it, but it's working great.  Full Screen I'm seeing about 5% on one core :D
Title: Re: BassBox 2011 (version 2.60)
Post by: Patrice Terrier on April 03, 2012, 11:35:24 AM
Larry,

Thank you for the feedback.

The problem is to find the right balance between the artistic vision and the programming requirements.

I am always trying hard to keep the memory usage as low as possible, for Bubble it tooks me a full day before i could reduce it from 89% down to 3% ;)

...
Title: Cubic Dream (visual plugin)
Post by: Patrice Terrier on April 24, 2012, 12:18:52 PM
Cubic Dream (ZIP file is attached to the first post of this thread)

In this new plugin i have checked a new texture mapping technic, to see if i could produce glossy effects, without impacting too much the CPU. And so far, i should say that i am pleased of the result, thus i am sharing it with you  :)

To realy see what is going on, play it full screen.

...
Title: Re: BassBox 2011 (version 2.60)
Post by: Jürgen Huhn on July 20, 2012, 10:07:26 PM
That was a nice surprise to see , you've written the bubble BBPlugin now. I still remember the day when you had the idea for it.
Very nice work..!!  :) Also the Cubic Dream BBPlugin is really nice, best view in Fullscreen.
And i like the new Trackbar Buttons.. ;D

I have 0% CPU-usage with the bubbles in Fullscreen and high FPS mode on my 3,2 GHz ICore7, 8 GB DDR3 Ram.

...