From 7dfb27a1218b0db2e0f61b05004e67e39bbd48c8 Mon Sep 17 00:00:00 2001 From: jill Date: Thu, 31 Dec 2020 02:08:31 +0300 Subject: [PATCH] yet more functions implemented --- plugins/mirinda_ease.xml | 82 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/plugins/mirinda_ease.xml b/plugins/mirinda_ease.xml index 8cb0d45..6af7b6e 100644 --- a/plugins/mirinda_ease.xml +++ b/plugins/mirinda_ease.xml @@ -39,10 +39,11 @@ + beatobj:wiggle0([perc], mod) -beatobj:sharponoff([perc], mod) -- onoff(), but the ease is aligned with the start - beatobj:sharpwiggle0([perc], mod) --beatobj:kick([perc], mod) -- does a createReverse() version of the mod, for making kicks -- beatobj:reverse([perc], mod) --beatobk:velocitymap([perc], mod) -- kick(), but without aligning the ease at 0 --beatobj:temp([perc], mod) -- does a createTemp() version of the mod ++beatobj:kick([perc], mod) -- does a createReverse() version of the mod, for making kicks ++ beatobj:reverse([perc], mod) ++beatobk:velocitymap([perc], mod) -- kick(), but without aligning the ease at 0 ++beatobk:velocitymapwiggle([perc], mod) -- velocitymap(), but it inverts each time +/beatobj:temp([perc], mod) -- does a createTemp() version of the mod +beatobj:addm([perc], mod) -- adds a mod value every beat, useful for offsets -- perc: mod percentage, defaults to 100 -- mod: mod name @@ -263,12 +264,85 @@ ease {v[1], len, bounceease, perc, mod} end + return self + end, + + kick = function(self, perc, mod) + if mod == nil then mod = perc; perc = 100 end + + local function out(a) + return 1 - ((self._ease(a * 0.5 + 0.5) - 0.5) / 0.5) + end + + for _,v in ipairs(self._beats) do + local len = self._length + + ease {v[1], len, out, perc, mod} + end + + return self + end, + velocitymap = function(self, perc, mod) + if mod == nil then mod = perc; perc = 100 end + + local function map(a) + if a < 0.5 then + return self._ease(a / 0.5) + else + return 1 - self._ease(a / 0.5 - 1) + end + end + + for _,v in ipairs(self._beats) do + local len = self._length + + ease {v[1] - len / (1 / self._align), len, map, perc, mod} + end + + return self + end, + velocitymapwiggle = function(self, perc, mod) + if mod == nil then mod = perc; perc = 100 end + + local function map(a) + if a < 0.5 then + return self._ease(a / 0.5) + else + return 1 - self._ease(a / 0.5 - 1) + end + end + + for i,v in ipairs(self._beats) do + local len = self._length + local off = i%2*2-1 + + ease {v[1] - len / (1 / self._align), len, map, perc * off, mod} + end + + return self + end, + + temp = function(self, perc, mod) + if mod == nil then mod = perc; perc = 100 end + + local function temp(a) + if a == 1 then return self._ease(0) end + return self._ease(a) + end + + for i,v in ipairs(self._beats) do + local len = self._length + + ease {v[1] - len / (1 / self._align), len, temp, perc, mod} + end + return self end } -- aliases beatobjTemplate.wiggle0 = beatobjTemplate.onoff + beatobjTemplate.reverse = beatobjTemplate.kick function c2l(start, ending, trunc) local self = copyTable(beatobjTemplate)