emoWaveAt :: TimeStamp -> Word64
demoWaveAt (TimeStamp x) =
    let
        period = 3600 * 3
        f = 1/period                                    -- instances per second
        w = 2 * pi * f :: Double
        t = ((/ 1e9) . fromRational . toRational) x
        y = sin (w * t)
    in
        doubleToWord y

demoWaveAt :: TimeStamp -> Word64
demoWaveAt (TimeStamp x) =
    let
        period = 3600 * 3
        f = 1/period                                    -- instances per second
        w = 2 * pi * f :: Double
        t = ((/ 1e9) . fromRational . toRational) x
        y = sin (w * t)
    in
        doubleToWord y
demoWaveAt (TimeStamp x) =
    let
        period = 3600 * 3
        f = 1/period                                    -- instances per second
        w = 2 * pi * f :: Double
        t = ((/ 1e9) . fromRational . toRational) x
        y = sin (w * t)
    in
        doubleToWord y