aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Winamp Modern/scripts/visualizer.m
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/resources/skins/Winamp Modern/scripts/visualizer.m
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/resources/skins/Winamp Modern/scripts/visualizer.m')
-rw-r--r--Src/resources/skins/Winamp Modern/scripts/visualizer.m267
1 files changed, 267 insertions, 0 deletions
diff --git a/Src/resources/skins/Winamp Modern/scripts/visualizer.m b/Src/resources/skins/Winamp Modern/scripts/visualizer.m
new file mode 100644
index 00000000..1d2fccc1
--- /dev/null
+++ b/Src/resources/skins/Winamp Modern/scripts/visualizer.m
@@ -0,0 +1,267 @@
+/*---------------------------------------------------
+-----------------------------------------------------
+Filename: visualizer.m
+Version: 1.4
+
+Type: maki
+Date: 07. Okt. 2007 - 19:56
+Author: Martin Poehlmann aka Deimos
+E-Mail: martin@skinconsortium.com
+Internet: www.skinconsortium.com
+ www.martin.deimos.de.vu
+
+Note: This script handles also the timer reflection
+-----------------------------------------------------
+---------------------------------------------------*/
+
+#include <lib/std.mi>
+
+Function refreshVisSettings();
+Function setVis (int mode);
+Function ProcessMenuResult (int a);
+
+Global Group scriptGroup;
+Global Vis visualizer;
+Global Text tmr;
+
+Global PopUpMenu visMenu;
+Global PopUpMenu specmenu;
+Global PopUpMenu oscmenu;
+Global PopUpMenu pksmenu;
+Global PopUpMenu anamenu;
+Global PopUpMenu stylemenu;
+
+Global Int currentMode, a_falloffspeed, p_falloffspeed, a_coloring;
+Global Boolean show_peaks, isShade;
+Global layer trigger;
+
+Global Layout thislayout;
+Global Container main;
+
+System.onScriptLoaded()
+{
+ scriptGroup = getScriptGroup();
+ thislayout = scriptGroup.getParentLayout();
+ main = thislayout.getContainer();
+
+ visualizer = scriptGroup.findObject("visual");
+
+ trigger = scriptGroup.findObject("main.vis.trigger");
+
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+
+ refreshVisSettings ();
+}
+
+refreshVisSettings ()
+{
+ currentMode = getPrivateInt(getSkinName(), "Visualizer Mode", 1);
+ show_peaks = getPrivateInt(getSkinName(), "Visualizer show Peaks", 1);
+ a_falloffspeed = getPrivateInt(getSkinName(), "Visualizer analyzer falloff", 3);
+ p_falloffspeed = getPrivateInt(getSkinName(), "Visualizer peaks falloff", 2);
+ a_coloring = getPrivateInt(getSkinName(), "Visualizer analyzer coloring", 0);
+
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+
+ if (a_coloring == 0)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 1)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 2)
+ {
+ visualizer.setXmlParam("coloring", "Fire");
+ }
+ else if (a_coloring == 3)
+ {
+ visualizer.setXmlParam("coloring", "Line");
+ }
+
+ setVis (currentMode);
+}
+
+trigger.onLeftButtonDown (int x, int y)
+{
+ if (isKeyDown(VK_ALT) && isKeyDown(VK_SHIFT) && isKeyDown(VK_CONTROL))
+ {
+ if (visualizer.getXmlParam("fliph") == "1")
+ {
+ visualizer.setXmlParam("fliph", "0");
+ }
+ else
+ {
+ visualizer.setXmlParam("fliph", "1");
+ }
+ return;
+ }
+
+ currentMode++;
+
+ if (currentMode == 6)
+ {
+ currentMode = 0;
+ }
+
+ setVis (currentMode);
+ complete;
+}
+
+trigger.onRightButtonUp (int x, int y)
+{
+ visMenu = new PopUpMenu;
+ specmenu = new PopUpMenu;
+ oscmenu = new PopUpMenu;
+ pksmenu = new PopUpMenu;
+ anamenu = new PopUpMenu;
+ stylemenu = new PopUpMenu;
+
+ visMenu.addCommand("Presets:", 999, 0, 1);
+ visMenu.addCommand("No Visualization", 100, currentMode == 0, 0);
+ specmenu.addCommand("Thick Bands", 1, currentMode == 1, 0);
+ specmenu.addCommand("Thin Bands", 2, currentMode == 2, 0);
+ visMenu.addSubMenu(specmenu, "Spectrum Analyzer");
+
+ oscmenu.addCommand("Solid", 3, currentMode == 3, 0);
+ oscmenu.addCommand("Dots", 4, currentMode == 4, 0);
+ oscmenu.addCommand("Lines", 5, currentMode == 5, 0);
+ visMenu.addSubMenu(oscmenu, "Oscilloscope");
+
+ visMenu.addSeparator();
+ visMenu.addCommand("Options:", 102, 0, 1);
+ visMenu.addCommand("Show Peaks", 101, show_peaks == 1, 0);
+ pksmenu.addCommand("Slower", 200, p_falloffspeed == 0, 0);
+ pksmenu.addCommand("Slow", 201, p_falloffspeed == 1, 0);
+ pksmenu.addCommand("Moderate", 202, p_falloffspeed == 2, 0);
+ pksmenu.addCommand("Fast", 203, p_falloffspeed == 3, 0);
+ pksmenu.addCommand("Faster", 204, p_falloffspeed == 4, 0);
+ visMenu.addSubMenu(pksmenu, "Peak Falloff Speed");
+ anamenu.addCommand("Slower", 300, a_falloffspeed == 0, 0);
+ anamenu.addCommand("Slow", 301, a_falloffspeed == 1, 0);
+ anamenu.addCommand("Moderate", 302, a_falloffspeed == 2, 0);
+ anamenu.addCommand("Fast", 303, a_falloffspeed == 3, 0);
+ anamenu.addCommand("Faster", 304, a_falloffspeed == 4, 0);
+ visMenu.addSubMenu(anamenu, "Analyzer Falloff Speed");
+ stylemenu.addCommand("Normal", 400, a_coloring == 0, 0);
+ stylemenu.addCommand("Fire", 402, a_coloring == 2, 0);
+ stylemenu.addCommand("Line", 403, a_coloring == 3, 0);
+ //visMenu.addSubMenu(stylemenu, "Analyzer Coloring");
+
+ ProcessMenuResult (visMenu.popAtMouse());
+
+ delete visMenu;
+ delete specmenu;
+ delete oscmenu;
+ delete pksmenu;
+ delete anamenu;
+ delete stylemenu;
+
+ complete;
+}
+
+ProcessMenuResult (int a)
+{
+ if (a < 1) return;
+
+ if (a > 0 && a <= 6 || a == 100)
+ {
+ if (a == 100) a = 0;
+ setVis(a);
+ }
+
+ else if (a == 101)
+ {
+ show_peaks = (show_peaks - 1) * (-1);
+ visualizer.setXmlParam("peaks", integerToString(show_peaks));
+ setPrivateInt(getSkinName(), "Visualizer show Peaks", show_peaks);
+ }
+
+ else if (a >= 200 && a <= 204)
+ {
+ p_falloffspeed = a - 200;
+ visualizer.setXmlParam("peakfalloff", integerToString(p_falloffspeed));
+ setPrivateInt(getSkinName(), "Visualizer peaks falloff", p_falloffspeed);
+ }
+
+ else if (a >= 300 && a <= 304)
+ {
+ a_falloffspeed = a - 300;
+ visualizer.setXmlParam("falloff", integerToString(a_falloffspeed));
+ setPrivateInt(getSkinName(), "Visualizer analyzer falloff", a_falloffspeed);
+ }
+
+ else if (a >= 400 && a <= 403)
+ {
+ a_coloring = a - 400;
+ if (a_coloring == 0)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 1)
+ {
+ visualizer.setXmlParam("coloring", "Normal");
+ }
+ else if (a_coloring == 2)
+ {
+ visualizer.setXmlParam("coloring", "Fire");
+ }
+ else if (a_coloring == 3)
+ {
+ visualizer.setXmlParam("coloring", "Line");
+ }
+ setPrivateInt(getSkinName(), "Visualizer analyzer coloring", a_coloring);
+ }
+}
+
+setVis (int mode)
+{
+ setPrivateInt(getSkinName(), "Visualizer Mode", mode);
+ if (mode == 0)
+ {
+ visualizer.setMode(0);
+ }
+ else if (mode == 1)
+ {
+ visualizer.setXmlParam("bandwidth", "wide");
+ visualizer.setMode(1);
+ }
+ else if (mode == 2)
+ {
+ visualizer.setXmlParam("bandwidth", "thin");
+ visualizer.setMode(1);
+ }
+ else if (mode == 3)
+ {
+ visualizer.setXmlParam("oscstyle", "solid");
+ visualizer.setMode(2);
+ }
+ else if (mode == 4)
+ {
+ visualizer.setXmlParam("oscstyle", "dots");
+ visualizer.setMode(2);
+ }
+ else if (mode == 5)
+ {
+ visualizer.setXmlParam("oscstyle", "lines");
+ visualizer.setMode(2);
+ }
+ currentMode = mode;
+}
+
+// Sync Normal and Shade Layout
+
+main.onBeforeSwitchToLayout(Layout oldlayout, Layout newlayout)
+{
+ if (newlayout != thislayout)
+ {
+ return;
+ }
+
+ refreshVisSettings();
+} \ No newline at end of file