From 7d1cac6e2ea442543134f1f1b5e92b0ae8e943bc Mon Sep 17 00:00:00 2001 From: ivan tkachenko Date: Sat, 19 Jul 2025 22:51:52 +0300 Subject: [PATCH] Add lyrics, flickering and fade out transitions to many tracks --- MuzikaGromche/Plugin.cs | 174 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 1 deletion(-) diff --git a/MuzikaGromche/Plugin.cs b/MuzikaGromche/Plugin.cs index d563206..0a78dba 100644 --- a/MuzikaGromche/Plugin.cs +++ b/MuzikaGromche/Plugin.cs @@ -32,10 +32,37 @@ namespace MuzikaGromche WindUpTimer = 46.3f, Bars = 16, BeatsOffset = 0.0f, + FadeOutBeat = -3, + FadeOutDuration = 3, ColorTransitionIn = 0.25f, ColorTransitionOut = 0.25f, ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-5, 29, 61], Palette = Palette.Parse(["#B300FF", "#FFF100", "#00FF51", "#474747", "#FF00B3", "#0070FF"]), + Lyrics = [ + (-68, "Devchata pljashut pod spidami"), + (-60, "A ty stoish', kak vkopannyj"), + (-52, "Krossovkami lomajut pol"), + (-44, "A ty stoish', kak vkopannyj"), + (-36, "Ja-ja-ja znaju, chto ty hochesh',"), + (-32, "Ja-ja-ja znaju, chto ty hochesh',\nTy hochesh' tancevat'"), + (-28, "Nu-nu zhe, nu davaj zhe,"), + (-24, "Nu-nu zhe, nu davaj zhe,\nNu-nu zhe, nu davaj zhe"), + (-20, "Ja znaju, chto ty znaesh'\nJetot trek, gotov'sja podpevat'"), + (-12, "1) RAZ"), + (-10, "raz, DVA"), + (-8, "raz, 2wo,\nTRI"), + (-6, "ras, dva,\n7ri, 4ETYRE"), + (-1, "Muzyka Gromche\nGlaza zakryty >_<"), + (6, "This is NON-STOP,\nNoch'ju otkrytij"), + (12, "Delaj chto hochesh', ja zabyvajus'"), + (22, "This is NON-STOP,\nne prekrashhajas'"), + (31, "Muzyka Gromche\nGlaza zakryty -.-"), + (38, "This is NON-STOP,\nNoch'ju otkrytij"), + (46, "Budu s toboju,\nsamoj primernoju"), + (54, "Utro v okne\nyi my budem pervye"), + (63, "Muzyka Gromche\nGlaza zakryty >_<"), + ], }, new Track { @@ -44,15 +71,33 @@ namespace MuzikaGromche Language = Language.RUSSIAN, WindUpTimer = 38.28f, Bars = 16, + LoopOffset = 0, BeatsOffset = 0.25f, + FadeOutBeat = -3, + FadeOutDuration = 2.5f, ColorTransitionIn = 0.25f, ColorTransitionOut = 0.25f, ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-5, 29, 59], Palette = Palette.Parse(["#FF7F00", "#FFB600", "#FFED00", "#00D1FF", "#6696FB", "#704DF8"]).Use(palette => palette * 5 + new Palette(palette.Colors[0..2]) // stretch the second (OOOO oooo OO ooo) part, keep the colors perfectly cycled + (new Palette(palette.Colors[2..]) + palette * 2).Stretch(2) ), + Lyrics = [ + (-30, "VSE V ZALE\nDvigajtes' s nami"), + (-24, "Chtob sotrjasalis'\nSami my, steny i pol!"), + (-14, "Vse znaem - jeto examen na dom nam zadan"), + (-4, "HIP-HOP, HOUSE & ROCK-N-ROLL"), + (2, "VSE V ZALE\nDvigajtes' s nami"), + (8, "Chtob sotrjasalis'\nSami my, steny i pol!"), + (18, "Vse znaem - jeto examen na dom nam zadan"), + (28, "HIP-HOP, HOUSE & ROCK-N-ROLL"), + (32, "O-o-o-o! Zdes' startuet hip-hop party"), + (44, "Tolstyj paren', nam igraj!"), + (48, "O-o-o-o! Pesen i devchonok hvatit!"), + (60, "Everybody shake your body"), + ], }, new Track { @@ -61,11 +106,41 @@ namespace MuzikaGromche Language = Language.RUSSIAN, WindUpTimer = 40.68f, Bars = 8, + LoopOffset = 32, BeatsOffset = 0.2f, + FadeOutBeat = -6, + FadeOutDuration = 4, ColorTransitionIn = 0.25f, ColorTransitionOut = 0.25f, ColorTransitionEasing = Easing.OutExpo, + FlickerLightsTimeSeries = [-101, -93, -77, -61, -37, -5, 27], Palette = Palette.Parse(["#217F87", "#BAFF00", "#73BE25", "#78AB4E", "#FFFF00"]), + Lyrics = [ + (-79, "Deploy Destroy, porjadok eto otstoj"), + (-71, "Krushi, lomaj, trjasi bashkoju pustoj"), + (-63, "Dopej, razbej i novuju otkryvaj"), + (-55, "Davaj-davaj!"), + (-47, "Chestnoe slovo ja nevinoven"), + (-43, "Ja ne pomnju, otkuda stol'ko krovi"), + (-39, "Na moih ladonjah\nyi moej odezhde"), + (-35, "Ja nikogda nikogo\nne bil prezhde"), + (-31, "Ja nikogda nichego\nne pil prezhde"), + (-27, "Byl tih, spokoen,\nso vsemi vezhliv"), + (-23, "Vsegda tol'ko v urnu\nbrosal musor"), + (-19, "Obhodil storonoj shumnye tusy"), + (-15, "Zapreshhjonnyh veshhestv nikakih ne juzal"), + (-11, "Byl polozhitel'nej samogo pljusa"), + (-7, "A potom kak-to raz\njetu pesnju uslyshal"), + (-3, "I vsjo proshhaj, moja krysha"), + (1, "Deploy Destroy, porjadok eto otstoj"), + (9, "Krushi, lomaj, trjasi bashkoju pustoj"), + (17, "Dopej, razbej i novuju otkryvaj"), + (25, "Davaj-davaj!"), + (33, "Deploy Destroy, porjadok eto otstoj"), + (41, "Krushi, lomaj, trjasi bashkoju pustoj"), + (49, "Dopej, razbej i novuju otkryvaj"), + (57, "Davaj-davaj!"), + ], }, new Track { @@ -126,6 +201,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.25f, ColorTransitionEasing = Easing.InExpo, Palette = Palette.Parse(["#42367E", "#FF9400", "#932A04", "#FF9400", "#932A04", "#42367E", "#FF9400", "#932A04"]), + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [20], + Lyrics = [], }, new Track { @@ -139,6 +219,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.3f, ColorTransitionEasing = Easing.OutExpo, Palette = Palette.Parse(["#5986FE", "#FEFEDC", "#FF4FDF", "#FEFEDC", "#FFAA23", "#FEFEDC", "#F95A5A", "#FEFEDC"]), + LoopOffset = 0, + FadeOutBeat = -7, + FadeOutDuration = 7, + FlickerLightsTimeSeries = [-9], + Lyrics = [], }, new Track { @@ -152,6 +237,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.4f, ColorTransitionEasing = Easing.OutExpo, Palette = Palette.Parse(["#4C8AC5", "#AF326A", "#0B1666", "#AFD2FC", "#C55297", "#540070"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5, 31], + Lyrics = [], }, new Track { @@ -165,6 +255,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.5f, ColorTransitionEasing = Easing.OutCubic, Palette = Palette.Parse(["#FBDBDB", "#4B81FF", "#564242", "#C90AE2", "#FBDBDB", "#61CBE3", "#564242", "#ED3131"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5], + Lyrics = [], }, new Track { @@ -178,6 +273,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.5f, ColorTransitionEasing = Easing.OutCubic, Palette = Palette.Parse(["#FC6F3C", "#3CB0FC", "#FCD489", "#564242", "#FC6F3C", "#3CB0FC", "#63E98C", "#866868"]), + LoopOffset = 0, + FadeOutBeat = -4.5f, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5.5f, 31, 63.9f], + Lyrics = [], }, new Track { @@ -191,6 +291,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.3f, ColorTransitionEasing = Easing.InCubic, Palette = Palette.Parse(["#FFD3E3", "#78A0FF", "#FFD3E3", "#74A392", "#FFD3E3", "#E4B082", "#FFD3E3", "#E277AA"]), + LoopOffset = 0, + FadeOutBeat = -2, + FadeOutDuration = 2, + FlickerLightsTimeSeries = [2.5f], + Lyrics = [], }, new Track { @@ -204,6 +309,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.4f, ColorTransitionEasing = Easing.OutExpo, Palette = Palette.Parse(["#65C7FA", "#FCEB3C", "#89FC8F", "#FEE9E9", "#FC3C9D", "#FCEB3C", "#89FC8F", "#FC3C9D"]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-8, 31], + Lyrics = [], }, new Track { @@ -217,6 +327,11 @@ namespace MuzikaGromche ColorTransitionOut = 0.35f, ColorTransitionEasing = Easing.OutExpo, Palette = Palette.Parse(["#C0402D", "#906F0B", "#DC8044", "#70190A", "#929FAF", "#4248A2", "#AE2727", "#2D2D42"]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5], + Lyrics = [], }, new Track { @@ -233,6 +348,11 @@ namespace MuzikaGromche "#A01471", "#CB2243", "#4CAF50", "#F01D7A", "#AF005A", "#EF355F", "#FFD85D", "#FF66B2", "#A01471", "#4CAF50", "#CB2243", "#F01D7A", "#AF005A", "#FFD85D", "#EF355F", "#FF66B2", ]), + LoopOffset = 0, + FadeOutBeat = -4, + FadeOutDuration = 4, + FlickerLightsTimeSeries = [-5, 27, 29, 59, 61], + Lyrics = [], }, new Track { @@ -254,6 +374,53 @@ namespace MuzikaGromche var instrumental = gray8.Stretch(4); return lyrics * 2 + instrumental * 2; }), + LoopOffset = 0, + FadeOutBeat = -8, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-136, -72, -12, 88], + Lyrics = [ + (-190, "These Russian hackers have been"), + (-184, "in these US governments\nsince March"), + (-172, "and it is an extraordinary invasion of our cyberspace"), + (-152, "Russian hackers got access to sensitive"), + (-142, "parts of the White House email system..."), + (-134, "[They began to recognize...]"), + (-126, "<>Russian hackers"), + (-118, "<>Russian hackers\nO_o"), + (-110, "Gonna crack your"), + (-102, "Gonna crack your\nStrongest pa$$words"), + (-94, "You popped online"), + (-86, "You popped online\nTo look for sneakers"), + (-78, "My hand just popped"), + (-70, "My hand just popped\nRight in your knickers >_<"), + (-62, "Keystrokes like Uzi"), + (-54, "Keystrokes like Uzi\nWill make you go all goosey"), + (-46, "Kicking down your backdoor"), + (-38, "Kicking down your backdoor\nCount down before you lose it"), + (-30, "Keystrokes like Uzi"), + (-22, "Keystrokes like Uzi\nWill make you go all goosey"), + (-14, "Kicking down your backdoor"), + (-6, "Kicking down your backdoor\nCount down before you lose it"), + (0, "C:\\> $Ru55ian hack3rs"), + (4, "C:\\> $Ru55ian hack3rs\nO_o"), + (8, "Infamous White House attackers"), + (16, "Stealing your cookies\nto this beat"), + (24, "Counting crypto to\nembarrass Wall Street"), + (32, "Яushan h@ckers###"), + (36, "Яushan h@ckers###\nO_o"), + (40, "Infamous White House attackers"), + (48, "Stealing your cookies\nto this beat"), + (56, "Counting crypto to\nembarrass Wall Street"), + (80, "Instling min3r.exe"), + (82, "Instling min3r.exe\n00% [=> ]"), + (84, "Instling min3r.exe\n33% [====> ]"), + (86, "Instling min3r.exe\n66% [=========> ]"), + (88, "Instling min3r.exe\n95% [============> ]"), + (90, "Instling min3r.exe\n99% [=============>]"), + (92, "Encrpt1ng f!les..\n99% [=============>]"), + (94, "Encrpt1ng f!les...\n100% enj0y \\o/"), + ], + // TODO: More personalized pranks involving Environment.UserName? }, new Track { @@ -273,6 +440,11 @@ namespace MuzikaGromche "#CA6935", "#A82615", "#A7AA43", "#A7AA43", "#4C2B81", "#2E802B", "#C952E7", "#C952E7", ]), + LoopOffset = 0, + FadeOutBeat = -6, + FadeOutDuration = 6, + FlickerLightsTimeSeries = [-8, 44, 45], + Lyrics = [], }, ]; @@ -531,7 +703,7 @@ namespace MuzikaGromche } } - public float[] _LyricsTimeSeries = null; + public float[] _LyricsTimeSeries = []; public float[] LyricsTimeSeries { get => Config.LyricsTimeSeriesOverride ?? _LyricsTimeSeries;