a simple timer utility

I needed a small timer for work
I though Codea could help
Here is the code


--# Bip
Bip = class()

function Bip:init(s,t,message)
    self.running = false
    self.delay = t
    self.sound = s 
    self.message = message
end

function Bip:start()
    self.running = true
    self.time = ElapsedTime + self.delay
end

function Bip:play()
    if self.running and self.time < ElapsedTime then
        self.running = false
        if self.sound == 1 then sound(SOUND_BLIT, 45394) end
        if self.sound == 2 then sound("Game Sounds One:Pop 1") end
        if self.message then 
            return(self.message)
        end
    end
end



--# Sequence
Sequence = class()

function Sequence:init(t)
    local t0 = 1.0
    local t1 = t0 + t
    self.bip = {Bip(2, 0, "Ready..?"),
                Bip(2, t0, "3"), Bip(2, t0+0.5, "2"), Bip(2, t0+1, "1"), Bip(1, t0+1.5, "Press!"), 
                Bip(2, t1, "3"), Bip(2, t1+0.5, "2"), Bip(2, t1+1, "1"), Bip(1, t1+1.5, "Release!")}
    self:resetMessage()
end
function Sequence:resetMessage()
    self.message = "Tap to start"
end
function Sequence:start()
    for i,bip in ipairs(self.bip) do
        bip:start()
    end
end

function Sequence:draw()
    local message
    for i,bip in ipairs(self.bip) do
        message = bip:play()
        if message then self.message = message end
    end
    if self.message then text(self.message, WIDTH/2,HEIGHT/2) end
end

function Sequence:touched(touch)
    self:start()
end

--# Main
-- timer_00

-- Use this function to perform your initial setup
function setup()
    print("Acquisition Timer")
    duration = 2.8
    print("duration = "..duration.." s")
    seq = Sequence(2.8)
end

-- This function gets called once every frame
function draw()
    -- This sets a dark background color 
    background(40, 40, 50)

    -- This sets the line thickness
    strokeWidth(5)
    fontSize(100)
    fill(255, 218, 0, 255)
    -- Do your drawing here
    seq:draw()
end

function touched(t)
    if t.state==BEGAN then
        seq:start()
    end
end