{{ exp021.spin }} CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 DAT f_number long 1294309430,1371273070,1452813200,1539201960 long 1630727660,1727695770,1830429900,1939272920 long 2054588080,2176760240,2306197130,2443330740 OBJ midiIn : "MidiIn03" midiOut : "MidiOut01" audio : "AudioOut06" Num : "E_Numbers01" TV : "E_TV_Terminal01" PUB Main | dummy, para, p1 Num.Init { Num.Init MUST be called before first object use. } para := TV.Start(12) dummy := para // 10 TV.Str(string("TV_port_Cog =")) TV.Str(Num.ToStr(dummy, Num#DEC)) dummy := para / 10 TV.Str(string(", Graphic_driver_Cog =")) TV.Str(Num.ToStr(dummy, Num#DEC)) dummy := midiIn.start(7) TV.Str(string(", MIDI_input_Cog =")) TV.Str(Num.ToStr(dummy, Num#DEC)) dummy := midiOut.start(6) TV.Str(string(", MIDI_output_Cog =")) TV.Str(Num.ToStr(dummy, Num#DEC)) dummy := audio.start(10, 11) TV.Str(string(", Audio_output_Cog =")) TV.Str(Num.ToStr(dummy, Num#DEC)) repeat dummy := midiIn.event if dummy <> -1 midiOut.fifoset(dummy) TV.Str(Num.ToStr(dummy, Num#HEX7)) if (dummy & $FF00FF) == $900064 audio.change2(0) p1 := (dummy & $007F00) >> 8 para := f_number[ (p1+4) // 12 ] >> ( (127-p1) / 12 ) audio.change1(para) elseif (dummy & $FF00FF) == $900000 audio.change2(7) elseif (dummy & $FFFF00) == $B00000 para := dummy & $000007 audio.change2(para)