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)
...
Hi Patrice,
Ring is good, but I like Interference a bit more - it looks more alive to me.
But both are very nice ones :)
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.
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.
...
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...".
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.
Hi Patrice,
thanks for the info!
New version works perfectly - fullscreen mode has no round corner artifacts and it is really "fullscreen".
The Acoustic Room is a new plugin based on the work of Jürgen Huhn.
It requires two new textures:
cdrom.png
note.png
...
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.
...
QuoteI think it`s better! Let me now, if something wrong..
Yes, that does it, thank you.
...
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!
...
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 ;)
...
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.
...
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.
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 ;)
...
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.
...
Very nice Patrice,
it might be inspired by my code, but it has completely new dimension with the reaction to sound played!
Petr
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 ;)
...
It looks fantastic with music which has great differences in volume and tempo, very very good!
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
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!! :)
..
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
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.
...
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...
...
Jürgen,
Thank you for the screenshots, they are looking promising.
...
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
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.
...
Anyone here using BassBox with Windows 7 ?
...
A problem with WMA files has been fixed:
The "offset" and "length" parameters were improperly declared as DWORD instead of QUAD.
...
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
...
Thanks for the tip Patrice!
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.
...
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.
...
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
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..
...
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)
;)
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
...
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!
...
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.
... ;)
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
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!
:)
...
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)
...
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
...
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.
... :)
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.
...
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)
...
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)
...
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.
Running in full aero crystal mode on windows 7
(http://www.zapsolution.com/pictures/TheMatrix06.jpg)
...
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)
...
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).
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!!
...
;)
Jürgen (and others)
I have attached to this post three more Matrix backgrounds that i think you may like...
...
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.
...
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.
...
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)
...
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!
:)
Bonjour Patrice,
votre MatrixFont La texture est très bon - le job idéal!
Dois vous remercier!
Thank You very much!!
..
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).
...
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!!
...
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
...
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.
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)
...
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! :>)
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
...
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.
...
Ok Patrice,
but just over night it`s downloaded four times. ???
Thanks`for your Information!
...
Quotebut just over night it`s downloaded four times
That's funny, isn't it? :D
...
Jürgen,
Here are some other good candidates, as i like them: http://vimeo.com/169308 (http://vimeo.com/169308)
:)
...
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)
;)
Jürgen,
I have reworked the eyes, may be you will like it as well ;)
...
:)
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)
...
Jürgen
This 100 gigapixel view of Paris, is really amazing, i didn't know it. Thanks for sharing.
...
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!
..
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
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!
...
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!
...
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
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?
...
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.
...
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
...
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
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?
...
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
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...
GL_STACK_OVERFLOW, that seems to be the error with ATI, no error with NVIDIA...
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
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.
...
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.
...
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
Quotemultiple calls to glFlush(),
is not the cause of the error, still investigating...
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.
...
Hi Patrice,
thanks for letting us know, this option did not occurred to me.
Good catch!,
Petr
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:
- the latest plugins,
- mp3 ID3 tag "cover art" support,
- optional higher FPS rate.
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.
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".
...
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 ;)
...
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)
...
The other plugins seem to be working but bubbles does funny stuff on my computer.(http://cur-ion.net/basBoxBubbles.png)
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
...
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
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% ;)
...
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.
...
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.
...