-- Includes for LOVE #INCLUDE "vector.inc" VAL INT RATE IS 44100: VAL INT BPM IS 120: -- approx VAL INT TICKS IS 4: -- ticks per beat VAL INT CHUNK.SIZE IS (RATE * 60) / (BPM * TICKS): -- samples per tick VAL REAL32 ACTUAL.BPM IS (REAL32 ROUND (RATE * 60)) / (REAL32 ROUND (CHUNK.SIZE * TICKS)): VAL INT PERIOD IS INT TRUNC ((1000000.0 * (REAL32 ROUND CHUNK.SIZE)) / (REAL32 ROUND RATE)): VAL INT BPB IS 4: DATA TYPE CHUNK IS MOBILE []REAL32: VAL INT MIDI.NOTE.ON IS 0: VAL INT MIDI.NOTE.OFF IS 1: DATA TYPE MIDI RECORD INT type: INT note: REAL32 velocity: : CHAN TYPE STREAM.WIRE MOBILE RECORD CHAN CHUNK c?: : CHAN TYPE MIDI.WIRE MOBILE RECORD CHAN MIDI c?: : VAL INT MAX.WIRES IS 10: PROTOCOL PORT.REQ CASE connect.stream; STREAM.WIRE! connect.midi; MIDI.WIRE! disconnect; INT : PROTOCOL PORT.RESP CASE connect.ok; INT disconnect.stream.ok; STREAM.WIRE! disconnect.midi.ok; MIDI.WIRE! fail : CHAN TYPE PORT.CTL MOBILE RECORD CHAN PORT.REQ req?: CHAN PORT.RESP resp!: : CHAN TYPE PROC.UI MOBILE RECORD CHAN MOBILE []VEC.ENTRY disp!: CHAN VEC.EVENT event?: : PROTOCOL PROC.RESP CASE reg.counts; INT; INT reg.stream.in; STREAM.WIRE! reg.midi.in; MIDI.WIRE! reg.stream.out; PORT.CTL! reg.midi.out; PORT.CTL! reg.ui; PROC.UI! reg.done : CHAN TYPE PROC.CTL MOBILE RECORD CHAN PROC.RESP resp!: :