diff --git a/Inter-Regular.otf b/Inter-Regular.otf deleted file mode 100644 index e94fa45..0000000 Binary files a/Inter-Regular.otf and /dev/null differ diff --git a/README.md b/README.md index b5ec166..9abb1a9 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,4 @@ Then launch the game like so: https://love2d.org/wiki/Getting_Started#Running_Ga ![Previewing eases](./screenshot1.png) -![Mixing eases](./screenshot2.png) - -## Attributions - -Inter V Font: by The Inter Project Authors \ No newline at end of file +![Mixing eases](./screenshot2.png) \ No newline at end of file diff --git a/conf.lua b/conf.lua index 0044594..e4d7dda 100644 --- a/conf.lua +++ b/conf.lua @@ -2,8 +2,6 @@ function love.conf(t) t.identity = 'box-of-eases' t.version = '11.3' - t.window.width = 1080 - t.window.height = 800 t.window.resizable = true t.window.title = 'Box of Eases' t.window.icon = 'logo.png' diff --git a/dropdown.lua b/dropdown.lua index ddd79c8..36b84fa 100644 --- a/dropdown.lua +++ b/dropdown.lua @@ -1,20 +1,8 @@ local self = {} -local icon = { - inease = love.graphics.newImage('inease-icon.png'), - outease = love.graphics.newImage('outease-icon.png'), - inoutease = love.graphics.newImage('inoutease-icon.png'), - transientease = love.graphics.newImage('transientease-icon.png'), - unknownease = love.graphics.newImage('unknownease-icon.png'), - linearease = love.graphics.newImage('linearease-icon.png'), - instantease = love.graphics.newImage('instantease-icon.png'), - pulseease = love.graphics.newImage('pulseease-icon.png'), -} - local dropdowns = {} local dropdownValueCache = {} -local dropdownScrollCache = {} local maxDropdown = 16 @@ -31,22 +19,6 @@ local function skeys(t) return k2 end -local function icons(keys) - local e = {} - for i,v in ipairs(keys) do - table.insert(e, (ease.eases[v].type or 'unknown') .. 'ease') - end - return e -end - -local function params(keys) - local e = {} - for i,v in ipairs(keys) do - table.insert(e, ease.eases[v].params) - end - return e -end - function self.get(index) return dropdowns[index] end @@ -97,17 +69,13 @@ function self.createDropdowns() local param1 = {} local param2 = {} - local eases = skeys(ease.eases) - if d[dropdownId].selected == 1 then -- preview ease insertDropdown(d, { x = outerpadding + dropdownWidth + padding, y = outerpadding, width = dropdownWidth, - options = eases, - name = 'ease1', - icons = icons(eases), - params = params(eases) + options = skeys(ease.eases), + name = 'ease1' }) local _e = ease.eases[d[dropdownId].options[d[dropdownId].selected]] param1[1] = slider.kvalue(_e.name .. 'param11') or (_e.params[1] and _e.params[1].default) or 1 @@ -120,19 +88,15 @@ function self.createDropdowns() x = outerpadding + dropdownWidth + padding, y = outerpadding, width = dropdownWidth, - options = eases, - name = 'ease1', - icons = icons(eases), - params = params(eases) + options = skeys(ease.eases), + name = 'ease1' }) insertDropdown(d, { x = outerpadding + dropdownWidth + padding + dropdownWidth + padding, y = outerpadding, width = dropdownWidth, - options = eases, - name = 'ease2', - icons = icons(eases), - params = params(eases) + options = skeys(ease.eases), + name = 'ease2' }) local _e1 = ease.eases[d[dropdownId - 1].options[d[dropdownId - 1].selected]] @@ -147,9 +111,8 @@ function self.createDropdowns() x = outerpadding + dropdownWidth + padding, y = outerpadding, width = dropdownWidth, - options = eases, - name = 'ease1', - icons = icons(eases) + options = skeys(ease.eases), + name = 'ease1' }) end @@ -179,7 +142,7 @@ function self.render() for i,v in ipairs(dropdowns) do local x, y, w, h = v.x, v.y, v.width, fontHeight + margin - love.graphics.setColor(0.06, 0.06, 0.12, 0.6) + love.graphics.setColor(0.06, 0.06, 0.12, 0.3) if love.mouse.getX() > x and love.mouse.getX() < x + w and love.mouse.getY() > y and love.mouse.getY() < y + h then love.graphics.setColor(0.8, 0.8, 1, love.mouse.isDown(1) and 0.4 or 0.3) end @@ -188,16 +151,8 @@ function self.render() love.graphics.setColor(1, 1, 1, 1) love.graphics.rectangle('line', x, y, w, h) - - if v.icons and v.icons[v.selected] then - local sprite = icon[v.icons[v.selected]] - love.graphics.draw(sprite, x + 2, y + 2, 0, fontHeight / sprite:getWidth(), fontHeight / sprite:getHeight()) - love.graphics.print(self.selected(i), x + margin/2 + fontHeight, y + margin/2) - else - love.graphics.print(self.selected(i), x + margin/2, y + margin/2) - end + love.graphics.print(self.selected(i), x + margin/2, y + margin/2) -- love.graphics.rectangle('line', x + w - h, y, h, h) - love.graphics.setLineWidth(1) love.graphics.polygon('line', x + w - h/2 + 0.3 * h, y + h/2 - 0.3 * h, x + w - h/2 - 0.3 * h, y + h/2 - 0.3 * h, x + w - h/2, y + h/2 + 0.3 * h) if self.openDropdown == i or v.open > 0.01 then @@ -213,9 +168,9 @@ function self.render() -- help local a = (1 - math.min(math.max((1 - (maxDropdown - gi)) * (1 - (math.abs(dropdownScrollE) / (#v.options - maxDropdown + 1))), 0), 1)) * math.max(math.min(gi - 1, 1), 0) * v.open - love.graphics.setColor(0.06, 0.06, 0.12, 0.6 * a) + love.graphics.setColor(0.06, 0.06, 0.12, 0.3 * a) if mx > x and mx < x + w and my > y and my < y + h then - love.graphics.setColor(0.4, 0.4, 1, (love.mouse.isDown(1) and 0.8 or 0.7) * a) + love.graphics.setColor(0.8, 0.8, 1, (love.mouse.isDown(1) and 0.4 or 0.3) * a) end love.graphics.rectangle('fill', x, y, w, h) @@ -223,32 +178,7 @@ function self.render() love.graphics.rectangle('line', x, y, w, h) love.graphics.setColor(1, 1, 1, 1 * a) - if i == v.selected then - love.graphics.setColor(0.5, 0.5, 1, 1 * a) - end - - if v.icons and v.icons[i] then - local sprite = icon[v.icons[i]] - love.graphics.draw(sprite, x + 2, y + 2, 0, fontHeight / sprite:getWidth(), fontHeight / sprite:getHeight()) - love.graphics.print(v.options[i], x + 2 + fontHeight, y + 2) - else - love.graphics.print(v.options[i], x + 2, y + 2) - end - - if v.params and v.params[i] then - local str = '' - for _,p in ipairs(v.params[i]) do - str = str .. ' ' .. string.sub(p.name, 1, 1) - end - - love.graphics.push() - love.graphics.translate(x + w, y + lineWidth/2) - love.graphics.shear(-0.2, 0) - love.graphics.scale(0.8, 0.8) - love.graphics.setColor(0.8, 0.8, 1, 0.8 * a) - love.graphics.printf(str, -w, -lineWidth/2, w - 2, 'right') - love.graphics.pop() - end + love.graphics.print(v.options[i], x + 2, y + 2) ::continue:: end @@ -258,13 +188,12 @@ function self.render() if #v.options > maxDropdown then local displayed = maxDropdown / (#v.options) local scroll = math.abs(dropdownScrollE) / (#v.options - maxDropdown + 1) - local size = 3 + local size = margin - love.graphics.setColor(1, 1, 1, 0.8 * v.open) + love.graphics.setColor(1, 1, 1, 0.9 * v.open) love.graphics.rectangle('fill', x + w - size, y + h + scroll * (1 - displayed) * (maxDropdown - 1) * h * v.open, size, displayed * (maxDropdown - 1) * h * v.open) end end - love.graphics.setLineWidth(lineWidth) end end @@ -277,8 +206,8 @@ function self.mousepressed(x, y, m) if m == 1 then self.openDropdown = i clickedDropdown = true - dropdownScroll = dropdownScrollCache[i] or 0 - dropdownScrollE = dropdownScrollCache[i] or 0 + dropdownScroll = 0 + dropdownScrollE = 0 elseif m == 3 then dropdowns[i].selected = math.random(1, #dropdowns[i].options) createUI() @@ -292,7 +221,6 @@ function self.mousepressed(x, y, m) end if not clickedDropdown and m == 1 then - dropdownScrollCache[self.openDropdown] = dropdownScroll self.openDropdown = 0 return true end @@ -306,7 +234,6 @@ function self.mousereleased(x, y, m) v.selected = math.floor((y - v.y) / h - dropdownScrollE) self.openDropdown = 0 dropdownValueCache[v.name] = {selected = v.selected} - dropdownScrollCache[i] = dropdownScroll createUI() end end diff --git a/ease.lua b/ease.lua index 793f8f5..8a5fbce 100644 --- a/ease.lua +++ b/ease.lua @@ -37,8 +37,7 @@ for i,v in pairs(easelib) do min = min, i = i, name = v[1], - params = params, - type = v.type + params = params } end diff --git a/easelib.lua b/easelib.lua index 35aee15..706381e 100644 --- a/easelib.lua +++ b/easelib.lua @@ -19,52 +19,52 @@ self = setmetatable(self, { end }) -table.insert(self, {'linear', function(t) return t end, type = 'linear'}) -table.insert(self, {'instant', function() return 1 end, type = 'instant'}) +table.insert(self, {'linear', function(t) return t end}) +table.insert(self, {'instant', function() return 1 end}) -table.insert(self, {'bounce', function(t) return 4 * t * (1 - t) end, type = 'transient'}) -table.insert(self, {'tri', function(t) return 1 - abs(2 * t - 1) end, type = 'transient'}) -table.insert(self, {'bell', function(t) return self.inOutQuint(self.tri(t)) end, type = 'transient'}) -table.insert(self, {'pop', function(t) return 3.5 * (1 - t) * (1 - t) * sqrt(t) end, type = 'transient'}) -table.insert(self, {'tap', function(t) return 3.5 * t * t * sqrt(1 - t) end, type = 'transient'}) -table.insert(self, {'pulse', function(t) return t < .5 and self.tap(t * 2) or -self.pop(t * 2 - 1) end, type = 'pulse'}) +table.insert(self, {'bounce', function(t) return 4 * t * (1 - t) end}) +table.insert(self, {'tri', function(t) return 1 - abs(2 * t - 1) end}) +table.insert(self, {'bell', function(t) return self.inOutQuint(self.tri(t)) end}) +table.insert(self, {'pop', function(t) return 3.5 * (1 - t) * (1 - t) * sqrt(t) end}) +table.insert(self, {'tap', function(t) return 3.5 * t * t * sqrt(1 - t) end}) +table.insert(self, {'pulse', function(t) return t < .5 and self.tap(t * 2) or -self.pop(t * 2 - 1) end}) -table.insert(self, {'spike', function(t) return exp(-10 * abs(2 * t - 1)) end, type = 'transient'}) -table.insert(self, {'inverse', function(t) return t * t * (1 - t) * (1 - t) / (0.5 - t) end, type = 'pulse'}) +table.insert(self, {'spike', function(t) return exp(-10 * abs(2 * t - 1)) end}) +table.insert(self, {'inverse', function(t) return t * t * (1 - t) * (1 - t) / (0.5 - t) end}) table.insert(self, {'popElastic', function(t, damp, count) return (1000 ^ -(t ^ damp) - 0.001) * sin(count * pi * t) -end, {0, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}, type = 'pulse'}) +end, {1, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}}) table.insert(self, {'tapElastic', function(t, damp, count) return (1000 ^ -((1 - t) ^ damp) - 0.001) * sin(count * pi * (1 - t)) -end, {0, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}, type = 'pulse'}) +end, {1, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}}) table.insert(self, {'pulseElastic', function(t, damp, count) if t < .5 then return self.tapElastic(t * 2, damp, count) else return -self.popElastic(t * 2 - 1, damp, count) end -end, {0, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}, type = 'pulse'}) +end, {1, 10, 1.4, 'damp'}, {1, 25, 6, 'count'}}) table.insert(self, {'impulse', function(t, damp) t = t ^ damp return t * (1000 ^ -t - 0.001) * 18.6 -end, {0, 10, 0.9, 'damp'}, type = 'transient'}) +end, {0, 10, 0.9, 'damp'}}) table.insert(self, {'inSine', function(x) return 1 - cos(x * (pi * 0.5)) -end, type = 'in'}) +end}) table.insert(self, {'outSine', function(x) return sin(x * (pi * 0.5)) -end, type = 'out'}) +end}) table.insert(self, {'inOutSine', function(x) return 0.5 - 0.5 * cos(x * pi) -end, type = 'inout'}) +end}) -table.insert(self, {'inQuad', function(t) return t * t end, type = 'in'}) -table.insert(self, {'outQuad', function(t) return -t * (t - 2) end, type = 'out'}) +table.insert(self, {'inQuad', function(t) return t * t end}) +table.insert(self, {'outQuad', function(t) return -t * (t - 2) end}) table.insert(self, {'inOutQuad', function(t) t = t * 2 if t < 1 then @@ -72,9 +72,9 @@ table.insert(self, {'inOutQuad', function(t) else return 1 - 0.5 * (2 - t) ^ 2 end -end, type = 'inout'}) -table.insert(self, {'inCubic', function(t) return t * t * t end, type = 'in'}) -table.insert(self, {'outCubic', function(t) return 1 - (1 - t) ^ 3 end, type = 'out'}) +end}) +table.insert(self, {'inCubic', function(t) return t * t * t end}) +table.insert(self, {'outCubic', function(t) return 1 - (1 - t) ^ 3 end}) table.insert(self, {'inOutCubic', function(t) t = t * 2 if t < 1 then @@ -82,9 +82,9 @@ table.insert(self, {'inOutCubic', function(t) else return 1 - 0.5 * (2 - t) ^ 3 end -end, type = 'inout'}) -table.insert(self, {'inQuart', function(t) return t * t * t * t end, type = 'in'}) -table.insert(self, {'outQuart', function(t) return 1 - (1 - t) ^ 4 end, type = 'out'}) +end}) +table.insert(self, {'inQuart', function(t) return t * t * t * t end}) +table.insert(self, {'outQuart', function(t) return 1 - (1 - t) ^ 4 end}) table.insert(self, {'inOutQuart', function(t) t = t * 2 if t < 1 then @@ -92,9 +92,9 @@ table.insert(self, {'inOutQuart', function(t) else return 1 - 0.5 * (2 - t) ^ 4 end -end, type = 'inout'}) -table.insert(self, {'inQuint', function(t) return t ^ 5 end, type = 'in'}) -table.insert(self, {'outQuint', function(t) return 1 - (1 - t) ^ 5 end, type = 'out'}) +end}) +table.insert(self, {'inQuint', function(t) return t ^ 5 end}) +table.insert(self, {'outQuint', function(t) return 1 - (1 - t) ^ 5 end}) table.insert(self, {'inOutQuint', function(t) t = t * 2 if t < 1 then @@ -102,9 +102,9 @@ table.insert(self, {'inOutQuint', function(t) else return 1 - 0.5 * (2 - t) ^ 5 end -end, type = 'inout'}) -table.insert(self, {'inExpo', function(t) return 1000 ^ (t - 1) - 0.001 end, type = 'in'}) -table.insert(self, {'outExpo', function(t) return 1.001 - 1000 ^ -t end, type = 'out'}) +end}) +table.insert(self, {'inExpo', function(t) return 1000 ^ (t - 1) - 0.001 end}) +table.insert(self, {'outExpo', function(t) return 1.001 - 1000 ^ -t end}) table.insert(self, {'inOutExpo', function(t) t = t * 2 if t < 1 then @@ -112,9 +112,9 @@ table.insert(self, {'inOutExpo', function(t) else return 1.0005 - 0.5 * 1000 ^ (1 - t) end -end, type = 'inout'}) -table.insert(self, {'inCirc', function(t) return 1 - sqrt(1 - t * t) end, type = 'in'}) -table.insert(self, {'outCirc', function(t) return sqrt(-t * t + 2 * t) end, type = 'out'}) +end}) +table.insert(self, {'inCirc', function(t) return 1 - sqrt(1 - t * t) end}) +table.insert(self, {'outCirc', function(t) return sqrt(-t * t + 2 * t) end}) table.insert(self, {'inOutCirc', function(t) t = t * 2 if t < 1 then @@ -123,9 +123,9 @@ table.insert(self, {'inOutCirc', function(t) t = t - 2 return 0.5 + 0.5 * sqrt(1 - t * t) end -end, type = 'inout'}) +end}) -table.insert(self, {'inBounce', function(t) return 1 - self.outBounce(1 - t) end, type = 'in'}) +table.insert(self, {'inBounce', function(t) return 1 - self.outBounce(1 - t) end}) table.insert(self, {'outBounce', function(t) if t < 1 / 2.75 then return 7.5625 * t * t @@ -139,37 +139,37 @@ table.insert(self, {'outBounce', function(t) t = t - 2.625 / 2.75 return 7.5625 * t * t + 0.984375 end -end, type = 'out'}) +end}) table.insert(self, {'inOutBounce', function(t) if t < 0.5 then return self.inBounce(t * 2) * 0.5 else return self.outBounce(t * 2 - 1) * 0.5 + 0.5 end -end, type = 'inout'}) +end}) table.insert(self, {'inElastic', function(t, a, p) return 1 - self.outElastic(1 - t, a, p) -end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true, type = 'in'}) +end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true}) table.insert(self, {'outElastic', function(t, a, p) return a * pow(2, -10 * t) * sin((t - p / (2 * pi) * asin(1/a)) * 2 * pi / p) + 1 -end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true, type = 'out'}) +end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true}) table.insert(self, {'inOutElastic', function(t, a, p) return t < 0.5 and 0.5 * self.inElastic(t * 2, a, p) or 0.5 + 0.5 * self.outElastic(t * 2 - 1, a, p) -end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true, type = 'inout'}) +end, {1, 3, 1, 'a'}, {0, 2, 0.3, 'p'}, overridemin = true}) table.insert(self, {'inBack', function(t, a) return t * t * (a * t + t - a) -end, {0, 3, 1.70158, 'a'}, overridemin = true, type = 'in'}) +end, {0, 3, 1.70158, 'a'}}) table.insert(self, {'outBack', function(t, a) t = t - 1 return t * t * ((a + 1) * t + a) + 1 -end, {0, 3, 1.70158, 'a'}, overridemin = true, type = 'out'}) +end, {0, 3, 1.70158, 'a'}}) table.insert(self, {'inOutBack', function(t, a) return t < 0.5 and 0.5 * self.inBack(t * 2, a) or 0.5 + 0.5 * self.outBack(t * 2 - 1, a) -end, {0, 3, 1.70158, 'a'}, overridemin = true, type = 'inout'}) +end, {0, 3, 1.70158, 'a'}}) return self diff --git a/graph.lua b/graph.lua index 4f1b771..30ae18f 100644 --- a/graph.lua +++ b/graph.lua @@ -37,7 +37,7 @@ function self.update(dt) local mx, my = love.mouse.getPosition() if not (love.mouse.isDown(1) and mx > x and mx < x + w and my > y and my < y + h) then - timer = (timer + dt * (slider.kvalue('bpm')/120)) % 2 + timer = (timer + dt) % 2 else timer = mix(timer, (mx - x) / w, dt * 14) end diff --git a/inease-icon.png b/inease-icon.png deleted file mode 100644 index e559a14..0000000 Binary files a/inease-icon.png and /dev/null differ diff --git a/inoutease-icon.png b/inoutease-icon.png deleted file mode 100644 index 2483479..0000000 Binary files a/inoutease-icon.png and /dev/null differ diff --git a/instantease-icon.png b/instantease-icon.png deleted file mode 100644 index 7b733c3..0000000 Binary files a/instantease-icon.png and /dev/null differ diff --git a/linearease-icon.png b/linearease-icon.png deleted file mode 100644 index 5b41296..0000000 Binary files a/linearease-icon.png and /dev/null differ diff --git a/main.lua b/main.lua index 3c1042d..cc95a1a 100644 --- a/main.lua +++ b/main.lua @@ -3,9 +3,6 @@ for k, v in pairs(_G) do table.insert(default_G, k) end -love.graphics.setDefaultFilter('nearest', 'nearest') -interfaceFont = love.graphics.newFont('Inter-Regular.otf', 20) - ease = require 'ease' slider = require 'slider' @@ -24,8 +21,7 @@ require 'util' -- exports into global table padding = 16 outerpadding = 22 margin = 6 -dropdownWidth = 186 -lineWidth = 2 +dropdownWidth = 128 fontHeight = love.graphics.getFont():getHeight() -- global for convinience's sake @@ -33,7 +29,6 @@ fontHeight = love.graphics.getFont():getHeight() mode = nil function love.load() - love.graphics.setFont(interfaceFont) fontHeight = love.graphics.getFont():getHeight() createUI() end @@ -48,8 +43,6 @@ function love.draw() local sw, sh = love.graphics.getDimensions() local mx, my = love.mouse.getPosition() - love.graphics.setLineWidth(2) - love.graphics.setColor(0.09, 0.09, 0.12, 1) love.graphics.rectangle('fill', 0, 0, sw, sh) love.graphics.setColor(0.08, 0.08, 0.1, 1) diff --git a/outease-icon.png b/outease-icon.png deleted file mode 100644 index 32b6f23..0000000 Binary files a/outease-icon.png and /dev/null differ diff --git a/pulseease-icon.png b/pulseease-icon.png deleted file mode 100644 index fcb7692..0000000 Binary files a/pulseease-icon.png and /dev/null differ diff --git a/slider.lua b/slider.lua index d2bcb2a..fd880a6 100644 --- a/slider.lua +++ b/slider.lua @@ -29,9 +29,6 @@ local function insertSlider(tab, f) f.oldvalue = (self.kget(f.name) or {oldvalue = f.value}).oldvalue f.spintimer = (self.kget(f.name) or {spintimer = 0}).spintimer f.spin = (self.kget(f.name) or {spin = 0}).spin - if f.snap then - f.value = math.floor(f.value / f.snap) * f.snap - end return table.insert(tab, f) end function self.createSliders() @@ -50,19 +47,6 @@ function self.createSliders() displayname = 'Mix' }) end - if mode == 1 or mode == 2 then -- bpm slider - insertSlider(s, { - x = outerpadding, - y = love.graphics.getHeight() - outerpadding - fontHeight * 3 - padding, - width = dropdownWidth, - min = 80, - max = 220, - default = 120, - name = 'bpm', - displayname = 'BPM', - snap = 1, - }) - end local ease1 = ease.eases[dropdown.kselected('ease1')] local ease2 = ease.eases[dropdown.kselected('ease2')] @@ -124,7 +108,7 @@ function self.render() local mx, my = love.mouse.getPosition() for i, v in ipairs(sliders) do - local x, y, w, h = v.x, v.y, v.width, fontHeight * 1.25 + local x, y, w, h = v.x, v.y, v.width, 32 love.graphics.setColor(0.7, 0.7, 0.7, 0.4) love.graphics.line(x, y + h/2, x + w, y + h/2) @@ -137,7 +121,7 @@ function self.render() love.graphics.line(x + normaldefault * w, y, x + normaldefault * w, y + h) local sx, sy = x + w * normaloldvalue, y + h/2 - local ssize = h * 0.75 + local ssize = h * 0.5 love.graphics.push() @@ -162,7 +146,7 @@ function self.render() love.graphics.pop() - love.graphics.printf(v.displayname, v.x + margin * 2 - ssize * 6, v.y - ssize, ssize * 12, 'center') + love.graphics.printf(v.displayname, v.x + margin * 2 - ssize * 6, v.y - 8, ssize * 12, 'center') if dragging then v.value = ((mx - (x + 1)) / (w - 2)) * (v.max - v.min) + v.min diff --git a/transientease-icon.png b/transientease-icon.png deleted file mode 100644 index 2e2c61f..0000000 Binary files a/transientease-icon.png and /dev/null differ diff --git a/unknownease-icon.png b/unknownease-icon.png deleted file mode 100644 index 77a446a..0000000 Binary files a/unknownease-icon.png and /dev/null differ