From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- .../Winamp Modern/scripts/beatvisualization.m | 139 +++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Src/resources/skins/Winamp Modern/scripts/beatvisualization.m (limited to 'Src/resources/skins/Winamp Modern/scripts/beatvisualization.m') diff --git a/Src/resources/skins/Winamp Modern/scripts/beatvisualization.m b/Src/resources/skins/Winamp Modern/scripts/beatvisualization.m new file mode 100644 index 00000000..af142e9d --- /dev/null +++ b/Src/resources/skins/Winamp Modern/scripts/beatvisualization.m @@ -0,0 +1,139 @@ +#include +#include "attribs.m" + +Function setObjects(); + +Global Group frameGroup,beatdisplay; +Global Layer beatOverlay,DisplayRight,DisplayRightOverlay,DisplaySongtickerBG,VisOverlay; +Global Timer refreshEQ; +Global AnimatedLayer beatbarLeft,beatbarRight; +Global int lastBeatLeft,lastBeatRight; +Global Button Toggler,Toggler2; +Global Int dobeat2; + +System.onScriptLoaded() { + initAttribs(); + frameGroup = getScriptGroup(); + beatdisplay = frameGroup.findObject("player.normal.display.beatvisualization"); + beatOverlay = frameGroup.findObject("beatdisplayoverlay"); + beatbarLeft = frameGroup.findObject("beatleft"); + beatbarRight = frameGroup.findObject("beatright"); + + Toggler = frameGroup.findObject("beatvisualization"); + Toggler2 = frameGroup.findObject("beatvisualization2"); + + DisplayRight = frameGroup.findObject("display.right"); + DisplayRightOverlay = frameGroup.findObject("display.right.overlay2"); + DisplaySongtickerBG = frameGroup.findObject("display.st.right"); + VisOverlay = frameGroup.findObject("visualization.overlay"); + + lastBeatLeft = 0; + lastBeatRight = 0; + + refreshEQ = new Timer; + refreshEQ.setDelay(10); +} + +System.onscriptunloading() { + delete refreshEQ; +} + +setObjects() { + int group_width = frameGroup.getWidth(); + + if ( group_width % 2 !=0 ) { + DisplayRight.setXmlParam("image","player.display.right"); + DisplayRightOverlay.setXmlParam("image","player.display.right"); + DisplaySongtickerBG.setXmlParam("image","player.display.songticker.bg.right"); + VisOverlay.setXmlParam("image","player.visualization.overlay"); + } else { + DisplayRight.setXmlParam("image","player.display.right2"); + DisplayRightOverlay.setXmlParam("image","player.display.right2"); + DisplaySongtickerBG.setXmlParam("image","player.display.songticker.bg.right2"); + VisOverlay.setXmlParam("image","player.visualization.overlay2"); + } + + if ( group_width > 480 ) { + int newXpos = (group_width-60)/2; + beatdisplay.setXmlParam("x", IntegerToString(newXpos)); + beatdisplay.show(); + + if ( beatvisualization_attrib.getData()=="1" ) { + refreshEQ.stop(); + refreshEQ.start(); + } else { + refreshEQ.stop(); + beatbarLeft.gotoframe(0); + beatbarRight.gotoframe(0); + } + } else { + beatdisplay.hide(); + refreshEQ.stop(); + } +} + +frameGroup.onResize(int x, int y, int w, int h) { + setObjects(); +} + +refreshEQ.onTimer() { + int beatLeft= System.getLeftVuMeter(); + int beatRight= System.getRightVuMeter(); + + int frameLeft=beatLeft/16; + int frameRight=beatRight/16; + + if (frameLeft>14) frameLeft=14; + if (frameRight>14) frameRight=14; + + if (frameLeft