local Screen = require("screen") local scrn, w, h, its local noise function _init() scrn = Screen:new("Envelope", 14, 3) scrn:autocolor() w,h = scrn:size() noise = audio.new() audio.samplelength(noise, 32) audio.sampleloop(noise, 0, audio.samplelength(noise)) audio.play(0, noise) audio.play(3, noise) for x=0,audio.samplelength(noise)-1 do audio.samplevalue(noise, x, math.sin(x/audio.samplelength(noise)*math.pi*2)*127) end end function _step(t) scrn:step() if input.hotkey() == "q" then return sys.exit() end local mx,my,mb = input.mouse() mx = mx / 10 my = math.min(math.max(-128, my - 180), 127) if mb > 0 then audio.samplevalue(noise, mx, my) end gfx.cls() gfx.fgcolor(1) lineto(650,180) lineto(-10,180) gfx.fgcolor(2) lineto(-5, 180+audio.samplevalue(noise, audio.samplelength(noise)-1)) for x=0,audio.samplelength(noise)-1 do lineto(5+10*x, 180+audio.samplevalue(noise, x)) end lineto(5+10*audio.samplelength(noise), 180+audio.samplevalue(noise, 0)) end local _x, _y = -8,-8 function lineto(x,y) gfx.line(_x,_y, x,y) _x,_y = x,y end