GfABASIC*,††žžžžºÎÎÎPp<B’’°°°°ÌÔÔÔ MCNSPLITIVOICESSP2NOVERVOICEVPRGNASP1SP2SP3BTMCSPLIT1SPLIT2SPLIT4SPLIT3SP4VNNOVERCZTSIN_RANGELOHINUMBERVOICESPOVOFFSETVPRGABXCDDUN BEGIN_PROGRAMMONOSET CHECK_RANGEProgram CZOVERLY nBy Jim Pierson-Perry 1(C) 1988 Antic Publishing  CHOverlay up to 4 separate mono voices on the CZ (1 base + 3 overlays) BEach of the overlay voices can be offset up/down the scale from 4the base voice (e.g. play oactave or fifth apart)  v›F”¶¸FF *ä» !ä» Fè|F;4Initialize overlay offset and patch number arrays ¯”àE¸G»FM äà E¸FF äà E¸FF ¯vàFYFE"Get CZ MIDI channel for sending F(:ÞEnter MIDI base channel (1-13) "âFrMé¹!ßP!â Fn ° ZâF¯¾Fa âEâ¹FBIdentify brand of CZ synth for use in selecting patch programs Fd$ÞWhat is your brand of CZ synth:F¢» "Þ1 = CZ-101/1000F¢» "Þ2 = CZ-3000/5000F "¢» "Þ3 = Other (CZ-230S/CZ-1)FhF (:Þ What is your brand (1, 2, or 3) "âFMé¹!»!â Fr ± ZâF°ØFaYF#FGet number of overlay voices, their offset (in MIDI key terms) from <the base voice and their associated patch program numbers F(:Þ Enter # of overlay voices (1-3) "â FMé¹!»!â Fr ±òZâF±ªFa²HàE¹Gâ F6¢» "Þ)Enter MIDI key offset for overlay voice #"à"F:äà F ²àFrYF´ÄàE¸Gâ F&ÞEnter selection for voice #"à¹Fà ³Jâ¹JFF8¢» "Þ-Source (Preset=1, Internal=2, Cartridge=3) = "F :âFÞMé¹!»!â Fr ²îZâF²FaF"¢» "ÞProgram Number (1-16) = "F:âFÞMé¹!ß!â F ³@ZâF²òFa-èFâ F ´râºJFF(¢» "ÞSource (Preset=1, Memory=2) = "F:âFÞMé¹!»!â Fâ ³¨ZâF³ZFaF&¢» "ÞBank (A=1, B=2, C=3, D=4) = "F:âFÞMé¹!ß!â F ³þZâF³¬FaF"¢» "ÞProgram Number (1-8) = "F :âFÞMé¹!ß!â F ´PZâF´FaâEÝ#â¹ âF--èF FâE¹F¢» "Þ Program # = "F:âFÞè|FÞFäà Eß#â¹ â¹F ²ZàF4Subroutine to set up mono playing mode for the CZ ,éâ!â !à FIYF(Þ"CZ setup complete - ready to play.Fr8Þ2Press PORTMENTO ON/OFF button on CZ to end programF*Real-time MIDI data processing section fè|FeGet current MIDI byte âEa» Fè|F 8If it is Portamento button on/off then branch to exit  ¶âß0âJFF-èFâ FTest for note on command n ¶”â ßâJFF2Not a note on - pass it straight through to CZ oE»!âF -èFF ¸˜F Note on processing section aFGet the following MIDI key data byte (tells what note was pressed) âEa» Fè|F &Get the note on velocity data byte eâ Ea» F&Turn on the base and overlay voices ·ÚàE¸Gâ FE»!ÝâàFo>For each voice add the offset to the note on key data byte aE»!âäà FlE»!â F ·hàFDTest next MIDI byte for command byte or another note on data pair âEa» F ¸fâßJF It was another note on event -èFâ ¸”FIt was a new command byte âEâFß-èFF F Fè|FF6Exit gracefully - first clear out the MIDI pipeline ¸ð±» ¸FâEa» F¸ÔFF*Return Local control to the CZ keyboard E»!Ý0âFE»!ÝtFâE»!Ý~Fâ&Reset the Portamento on/off button oE»!Ý0âFE»!ÝFâE»!¸F"Return CZ to poly playing mode tE»!Ý0âFE»!Ý~FâE»!¸F.Find out if user wants to run program again 0:Þ(Would you like to start over (N to exit)"áF º\;á@¹ ÞN;á@¹ ÞnFœF!ˆF! F-èF;<Procedure to set up CZ in N+1 separate monophonic voices e(Max # of voices is 4) i+éâ!â !à Fi.Mc = base MIDI channel that CZ receives on pN = # of voices - 1 @Vprg = array with patch ID program values for the N+1 voices p p<First turn off local keyboard control, all notes will now &come solely from MIDI in to the CZ oE»!Ý0âFE»!ÝtF#E»!¸FSet CZ to mono mode E»!Ý0âFE»!Ý|FâE»!ÝFâ6Set the N+1 patches for MIDI channels Mc thru Mc+N l¼„àE¸Gâ FE»!Ý@âàFy E»!äà F ¼\àF 6Clear out the MIDI pipeline before starting to play ¼Ö±» ¸FâEa» F¼ºFF.F+éâ!â!â FbâE#ââ #â â F ½<âF0Þ+Please enter a number in the correct range.F F+.FEß ·ˆ°ÿÿÿÿ¾,¾µœµÂ¸ž·´š¯4€º¸€¼Ú