aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Winamp Modern/scripts/beatvisualization.m
diff options
context:
space:
mode:
Diffstat (limited to 'Src/resources/skins/Winamp Modern/scripts/beatvisualization.m')
-rw-r--r--Src/resources/skins/Winamp Modern/scripts/beatvisualization.m139
1 files changed, 139 insertions, 0 deletions
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 <lib/std.mi>
+#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<lastBeatLeft) {
+ frameLeft=lastBeatLeft-1;
+ if (frameLeft<0) frameLeft=0;
+ }
+
+ if (frameRight<lastBeatRight) {
+ frameRight=lastBeatRight-1;
+ if (frameRight<0) frameRight=0;
+ }
+
+ lastBeatLeft=frameLeft;
+ lastBeatRight=frameRight;
+
+ beatbarLeft.gotoframe(frameLeft);
+ beatbarRight.gotoframe(frameRight);
+}
+
+beatvisualization_attrib.onDataChanged() {
+ setObjects();
+}
+
+System.onKeyDown(String key) {
+ if (key == "shift+ctrl+alt") {
+ dobeat2 = 1;
+ complete;
+ } else dobeat2 = 0;
+}
+
+Toggler.onLeftClick() {
+ if ( beatvisualization_attrib.getData()=="1" ) {
+ beatvisualization_attrib.setData("0");
+ } else {
+ beatvisualization_attrib.setData("1");
+ }
+}
+
+Toggler2.onActivate(boolean on) {
+ if (!dobeat2) { Toggler.leftClick(); return; }
+ refreshEQ.stop();
+
+ if (on) {
+ beatbarLeft.setXMLParam("image","player.display.beat.left2");
+ beatbarRight.setXMLParam("image","player.display.beat.right2");
+ beatOverlay.hide();
+ } else {
+ beatbarLeft.setXMLParam("image","player.display.beat.left");
+ beatbarRight.setXMLParam("image","player.display.beat.right");
+ beatOverlay.show();
+ }
+ setObjects();
+}