Enclosed is the BASIC source for a Patch librarian for the Korg DS-8. By D.O.Bowker (houdi!dob) 5 OUT 817,255:OUT 817,63 6 FOR I%=1 TO 700:JUNK%=INP(816):NEXT I% 10 DIM PAR%(200) 20 DIM P$(200) 30 NULL$=CHR$(0) 50 COLOR 15,1:CLS 60 PRINT"PATCHLIB.BAS - Patch Librarian for KORG DS-8" 61 COLOR 4,1:PRINT" D.O.Bowker - 8/31/87":COLOR 15,1:PRINT 65 PRINT:PRINT 68 PRINT"read patch (1)":PRINT"write patch (2)":PRINT"read combination (3)":PRINT"write combination (4)":PRINT"list patches (5)":PRINT"list combinations (6)":PRINT"quit (7)":PRINT:PRINT"ENTER 69 RESP$=INKEY$:IF LEN(RESP$)=0 THEN 69 70 IF RESP$<>"1" AND RESP$<>"2" AND RESP$<>"3" AND RESP$<>"4" AND RESP$<>"5" AND RESP$<>"6" AND RESP$<>"7" THEN 65 72 PRINT 75 IF RESP$="2" THEN GOSUB 800 88 IF RESP$="1" THEN GOSUB 600 90 IF RESP$="5" THEN GOSUB 150 92 IF RESP$="6" THEN GOSUB 100 94 IF RESP$="3" THEN GOSUB 2600 96 IF RESP$="4" THEN GOSUB 2800 99 END 100 REM LIST COMBINATION FILES IN LIBRARY************************************* 115 PRINT:PRINT"COMBINATION FILES IN LIBRARY" 116 FILES"*.cmb" 149 RETURN 65 150 REM LIST PATCH FILES IN LIBRARY***************************************** 165 PRINT:PRINT"PATCH FILES IN LIBRARY" 166 FILES"*.pat" 199 RETURN 65 600 REM ADD PATCH TO LIBRARY*************************************************** 601 PRINT"enter name of patch output file";:INPUT FIL$:FIL$=FIL$+".pat":OPEN FIL$ FOR OUTPUT AS #1 603 GOSUB 1600 605 OUT 817,255:OUT 817,63 610 GOSUB 1600 612 CHAN%=0 615 PRINT:BEEP:PRINT"SELECT DESIRED PATCH ON SYNTH" 620 IF INP(816)<>240 GOTO 620 621 IF INP(816)<>66 GOTO 620 622 IF INP(816)<>48+CHAN% GOTO 620 623 IF INP(816)<>19 GOTO 620 624 IF INP(816)<>64 GOTO 620 630 FOR I%=1 TO 96 635 PAR%(I%)=INP(816) 637 WRITE #1,PAR%(I%) 640 NEXT I% 645 IF INP(816)=247 GOTO 650 647 PRINT"NO END OF DATA FROM SYNTH - RETURNING TO MAIN MENU" 648 FOR I%=1 TO 500:NEXT I%:CLOSE #1:RETURN 65 650 PRINT"Patch Dump Completed...stored in ";FIL$:CLOSE #1:RETURN 65 800 REM WRITE A LIBRARY PATCH TO THE SYNTH************************************* 805 PRINT:PRINT:INPUT"enter patch file to write to synth";FIL$:FIL$=FIL$+".pat":OPEN FIL$ FOR INPUT AS #2 807 INPUT"select patch then press return when ready";RESP$ 814 FOR I%=1 TO 96:INPUT #2,PAR%(I%):NEXT I% 815 GOSUB 1600 816 OUT 817,255 817 OUT 817,63 818 FOR I%=1 TO 1000:JUNK%=INP(816):NEXT I% 828 OUT 816,240:OUT 816,66:OUT 816,48:OUT 816,19:OUT 816,64 830 FOR I%=1 TO 96 840 OUT 816,PAR%(I%) 850 NEXT I% 860 OUT 816,247 890 PRINT FIL$;" written to DS-8:PRINT 892 CLOSE #2 895 RETURN 65 1600 REM ROUTINE TO FLUSH ACCUMULATED DATA FROM PORT ************************** 1610 JUNK%=INP(816):IF INP(817)<190 GOTO 1610 1620 RETURN 2600 REM ADD COMBINATION TO LIBRARY******************************************** 2601 PRINT"enter name of combination output file";:INPUT FIL$:FIL$=FIL$+".cmb":OPEN FIL$ FOR OUTPUT AS #1 2603 GOSUB 1600 2605 OUT 817,255:OUT 817,63 2610 GOSUB 1600 2612 CHAN%=0 2615 PRINT:BEEP:PRINT"SELECT DESIRED COMBINATION ON SYNTH" 2620 IF INP(816)<>240 GOTO 2620 2621 IF INP(816)<>66 GOTO 2620 2622 IF INP(816)<>48+CHAN% GOTO 2620 2623 IF INP(816)<>19 GOTO 2620 2624 IF INP(816)<>73 GOTO 2620 2630 FOR I%=1 TO 56 2635 PAR%(I%)=INP(816) 2637 WRITE #1,PAR%(I%) 2640 NEXT I% 2645 IF INP(816)=247 GOTO 2650 2647 PRINT"NO END OF DATA FROM SYNTH - RETURNING TO MAIN MENU" 2648 FOR I%=1 TO 500:NEXT I%:CLOSE #1:RETURN 65 2650 PRINT"Combination Dump Completed...stored in ";FIL$:CLOSE #1:RETURN 65 2800 REM WRITE A LIBRARY COMBINATION TO THE SYNTH******************************* 2805 PRINT:PRINT:INPUT"enter combination file to write to synth";FIL$:FIL$=FIL$+".cmb":OPEN FIL$ FOR INPUT AS #2 2807 INPUT"select combination then press return when ready";RESP$ 2814 FOR I%=1 TO 56:INPUT #2,PAR%(I%):NEXT I% 2815 GOSUB 1600 2816 OUT 817,255 2817 OUT 817,63 2818 FOR I%=1 TO 1000:JUNK%=INP(816):NEXT I% 2828 OUT 816,240:OUT 816,66:OUT 816,48:OUT 816,19:OUT 816,73 2830 FOR I%=1 TO 56 2840 OUT 816,PAR%(I%) 2850 NEXT I% 2860 OUT 816,247 2890 PRINT FIL$;" written to DS-8:PRINT 2892 CLOSE #2 2895 RETURN 65