-odac sr = 44100 kr = 4410 nchnls = 2 0dbfs = 1 giopl init 0 instr main giopl, aL, aR opl outs aL, aR oplpatchchange giopl, 0, 89 oplpatchchange giopl, 1, 12 oplpatchchange giopl, 2, 72 oplpatchchange giopl, 3, 96 event_i "i", "sequencer", 0, p3 endin opcode playchord, 0, kkkk[]kk kinstr, kduration, kbase, kintervals[], ktimeinc, kreadmode xin ktime = 0 if (kreadmode == 0) then kdx = 0 while (kdx < lenarray(kintervals)) do event "i", kinstr, ktime, kduration, kbase+kintervals[kdx] ktime += ktimeinc kdx += 1 od else kdx = lenarray(kintervals) - 1 while (kdx > -1) do event "i", kinstr, ktime, kduration, kbase+kintervals[kdx] ktime += ktimeinc kdx -= 1 od endif endop instr sequencer itempo = 120 ibeatduration = 60/itempo kintervals[] fillarray 0, 4, 5, 9 knotes[] fillarray 50, 54, 56, 48 knotedx init 0 kbeat metro itempo/60 kbar0 init 0 if (kbeat == 1) then if (kbar0 == 0) then playchord 3, ibeatduration*4, knotes[knotedx], kintervals, 0, 0 elseif (kbar0 == 1) then playchord 2, ibeatduration, knotes[knotedx], kintervals, ibeatduration/4, 0 elseif (kbar0 == 2) then playchord 1, ibeatduration, knotes[knotedx]+12, kintervals, 0, 0 elseif (kbar0 == 3) then playchord 4, ibeatduration, knotes[knotedx]+12, kintervals, ibeatduration/4, 1 endif if (kbar0 < 3) then kbar0 += 1 else if (knotedx < 3) then knotedx += 1 else knotedx = 0 endif kbar0 = 0 endif endif endin instr 1 oplnote giopl, 0, p4, 120 endin instr 2 oplnote giopl, 1, p4, 100 endin instr 3 oplnote giopl, 2, p4, 100 endin instr 4 oplnote giopl, 3, p4, 100 endin ; ============================================== i"main" 0 3600