function _init() local bgm=build_bgm() local free_patterns={} for i=4,63 do add(free_patterns,i) end bgm:build(free_patterns,0) cstore(0x3100,0x3100,0x1200) music(0) end function _update() end function _draw() cls(0) print("enjoy the music!") end function build_bgm() local bgm=track:new() bgm:add(32) bgm:add(32) bgm:add(32) bgm:add(32) local bassline=instrument:new(devil(8,2,7,4)) local yowler=instrument:new(devil(9,2,7,4)) local melo1=instrument:new(melo1) local drums=instrument:new(drums) local p0=performer:new(bgm,0,bassline,0,{10}) local p1=performer:new(bgm,1,yowler,0,{10}) local p2=performer:new(bgm,2,melo1,0,{10}) local pd=performer:new(bgm,2,drums,0,{0}) local ph=performer:new(bgm,2,drums,0,{0}) --local pm=performer:new(bgm,2,melo1,0,{48-2}) conductor:new(bgm,0):perform( {p0,p1,p2,pd,ph}, pitchblocks:new(4) :add(8,{0,7,15,27}) :add(4,{0,8,15,27}) :add(4,{5,9,15,27}) :add(8,{3,10,15,27}) :add(4,{5,9,15,27}) :add(4,{5,8,15,27}) , { "Aa.Aa.Aa.Aaa..Aa" .. "Aa.Aa.A.Aa..Aaaa", "Aa.BbbBbbAaa..Aa" .. "Aa.BbbBbbBbbBbbb", "Aa.CccCccAaa..Aa" .. "Aa.CccCccCccCccc", "@...!...@...!..." .. "@...!...@.@.!.@.", "..'...'...'...'." .. "..'...'...'...'." } ) conductor:new(bgm,32):perform( {p0,p1,p2,pd,ph}, pitchblocks:new(4) :add(4,{0,7,15,27}) :add(4,{0,10,15,27}) :add(4,{5,12,15,29}) :add(4,{5,14,15,29}) :add(4,{3,12,15,31}) :add(4,{3,10,15,31}) :add(4,{5,9,15,33}) :add(4,{5,8,15,32}) , { "Aa.Aa.A.Aa..Aaab" .. "BA.Aa.Aa.Aa...Aa", "Bb.BbbBbbBbb..Cc" .. "Cc.BbbBbbBbbBbbb", "Cc.CccCccDdd..Dd" .. "Dd.DddDddDddDddd", "@.@.!.@.@.@.!.@." .. "@...!...@.@...@.", "..''..'...''..'." .. "..'...'...'...'." } ) return bgm end function devil(w,e,v0,v1) return function(duration,pitch,verbs) local out={} for i=1,duration do local v=v1 if (i == 1) v=v0 out[i]=nflags:new{p=pitch,v=v,w=w,e=e} end if (verbs.slide and #out>0) out[1].e=1 if (verbs.chop and #out>0) out[1].e=3 return out end end function drums(duration,pitch,verbs) if verbs.kick then return { -- kind of a cool sidechained bass effect, but not useful here -- nflags:new{p=10,v=7,w=8,e=0}, -- nflags:new{p=0,v=5,w=8,e=1} nflags:new{p=19,v=7,w=10,e=0}, -- nflags:new{p=12,v=5,w=2,e=0} } end if (verbs.snare) return {nflags:new{p=30,v=7,w=6,e=3}} if (verbs.hihat) return {nflags:new{p=30,v=2,w=11,e=3}} return {} end function melo1(duration,pitch,verbs) do return {} end local v=3 local out={} for i=1,duration do out[i]=nflags:new{p=pitch,w=1,v=v,e=5} end return out end