##### Lynx Grid Programmer

##### Lynx Grid Programmer

Home -> Magazines -> Issues -> Articles in this issue -> View Show Page Scans 2

## Lynx Grid Programmer | |

*A rhythmic program*

**Chris Everard presents the first step towards making your Lynx a musical Mastermind**

This is just the first part of the software we've designed that enables you to use your Lynx computer to send out series of variable trigger pulses using a grid system. The method used is similar to the programming system found on quite a few commercially available drum computers, such as the TR606 from Roland.

When you run the program, a grid will be drawn which will consist of a large box and a smaller one beneath. The largest will contain the Entering grid which is made up of small squares assembled in rows. Each row is made up of 16 squares in four groups of four. The small box beneath the grid box contains the commands for the entering system.

The aim is to make this program as variable as possible and so new software is constantly being developed. The way you WRITE trig pulses into the memory is via a moving, controllable dot which moves from square to square. When you wish to enter, a pulse, or beat, into the memory, the square concerned gets shaded in and this gives you an immediate visual display of the information stored. Some of the other functions we've already worked out will enable the user to START/STOP (obvious), JUMP the control dot left and right by one group, EDIT trigger sequences, STEP backwards and forwards by one beat, SEQUENCE STEP and play and also to call up selected segments and play them in chains. Another time-saving function is the ability to move vertically over the grid, utilising the up and down keys. This means that if you're on the last square of the second group and there are no other pulses to be entered before that same position on the line below, you can just hop down using the down key and carry on programming.

If you should accidentally depress a wrong key while the program is running a phrase will appear on screen which says — "NO SUCH FUNCTION, PLEASE RETRY". A "?" will appear if you try to enter a trig pulse between any of the boxes.

This is only the first part of the software which is really just the grid itself and some of the essential, basic commands. Because this is only the first part, some of the lines may look a bit out of place and you may think that some of it isn't logical; as the next parts are published things should become clearer.

On lines 330, 1110 and 1160, do not enter the words between the speech marks. These are commands used to just blank out previous on-screen information. Only enter the spaces indicated between the speech marks using the space bar.

The aim is to make this as flexible as possible, so you may find that in future issues amendments to previous parts of software published may be made to update the system and/or to make it faster etc.

There's no reason why extras can't be added to this program to give it the capability of controlling more than one or two things at a time. In fact — like all computer programs — the world is your oyster (until the memory runs out), and eventually this software could be adapted to turn your Lynx into the 'brain' of your instrument setup. Pulses could be used to control drum machines' Start/Stop functions and the same could be applied to sequencers not receiving direct clocking from the Lynx. Using a computer as a central control unit for even just one piece of equipment makes things a lot easier on stage and also in the studio.

1. TEXT

4. VDU24

8. PRINT @ 10, 10; "(c) KNUTHOUSE SOFTWARE 1984"

10. VDU25

12. PAUSE 20000

14. OUT &0086, 12

16. REPEAT

18. FOR A = 1 TO 13

20. PAUSE 1900

22. OUT (&0087), A

24. NEXT A

26. OUT (&0086), 13

28. FOR A = 1 TO 33

30. OUT (&0087), A

32. PAUSE 777

34. NEXT A

36. PAUSE 5000

38. OUT (&0086), 12

40. OUT (&0087), 0

42. OUT (&0086), 13

44. OUT (&0087), 0

100. DIM T (400)

110. FOR V = 1 TO 400

120. LET T (V) = 0

130. NEXT V

140. LET 1 = 0

150. PROC SCREEN

160. PROC TRIGS

170. REM

180. PROTECT MAGENTA

190. INK GREEN

200. REM —- MAIN SECTION

210. VDU20

220. LET A$ = GETS

230. IF A$ = "S" THEN PROC EXECUTIVE

240. IF A$ = "W" THEN PROC WRITE

250. IF A$ = "E" THEN PROC ERASE

260. IF A$= "Z" THEN PROC STEP

270. IFA$= "P" THEN PROC PAGE

280. IF A$ = "R" THEN PROC RUN-PAGE

290. IFA$ = "N" THEN PROC NEW

300. IF A$ = "B" THEN GOTO 200

320. BEEP 100, 900. 63

330. PRINT@ 10, 8; "NO SUCH FUNCTION PLEASE RETRY"

340. PAUSE 4500

350. PRINT@ 10, 8; "29 spaces"

360. GOTO 200

370. END

380. DEFPROC SCREEN

390. PROTECT 0

400. CLS

410. INK RED

420. VDU 21

430. REM -BORDER -

440. PLOT 4, 10, 10

450. DRAW 230, 10

460. DRAW 230, 220

470. DRAW 10, 220

480. DRAW 10, 10

490. REM -—BOTTOM BOX --

500. PLOT 4, 10, 225

510. DRAW 230, 250

530. DRAW 10, 250

540. DRAW 10, 225

550. REM - LABELS - -

560. PROC MENU-FUNCTIONS

570. PROTECT YELLOW

580. ENDPROC

590. DEFPROC TRIC.S

600. INK BLUE

610. FOR Y = 20 TO 210 STEP 20

620. AFOR X= 25 TO 210 STEP 10

630. IF X = 65 OR X= I 15 OR X = 165 THEN NEXT X

640. PLOT 4. X, Y

650. DRAW X + 5, Y

660. DRAW X = 5. Y = 5

670. DRAW X. Y + 5

680. DRAW X, Y

690. NEXT X

700. NEXT Y

750. PROTECT

760. ENDPROC

770. DEFPROC W RITE

780. LET X = 27. Y = 23

790. LET L = X, P = Y

800. DOT X, Y

810. VDU20

820. PRINT @ 6.228; CHRS (123); ": IRIGHT" CHRS (124) 1 LEFT >: RIGHT " PRINT@6.239; CHR$ (125)": UP CHRS (126) ': DOWN RETURN: NEXT LINE"

840. PROTECT MAGENTA

850. VDU 21

860. REPEAT

870. LET K = GETN

880. IF K = 58 OR K = 42 THEN PROC STORE

890. IF K = 62 OR K = 46 THEN LET X = X + 50

900. IF K = 60 OR K = 44 THEN LET X = X - 50

920. IF K = 12 THEN LET X = X + 10

920. IF K = 22 THEN LET X = X - 10

930. IF K = I I THEN LET Y = Y - 20

940. IF K = 10 THEN LE I Y = Y + 20

950. IFK= 13 THEN LET Y = Y+20, X = 27

960. IF Y >= 200 THEN LET Y = 203

970. IF Y<20 THEN LET Y = 23

980. IF X< = 20 THEN LET X = 27

990. IF X <= 210 THEN LET X = 207

1000. IF X<> L OR Y<> P THEN INK 0

1010. IF X<> L OR Y< > P THEN DOT L. P

1020. INK GREEN

1030. DOT X, 7

1040. LET L = X. P = Y

1050. UNTIL K = 72

1060. PROC MENU-FUNCTIONS

1070. REM -— AS = B INDICATES RETURN FROM A PROC

1080. LT AS = "B"

1090. DEFPROCSTORE

1110. LET F$ = " one space"

1120. VDU20

1130. IF X = 67 OR X = 1 17 OR X = 167 THEN LET F$ = "X"

1140. IF F$ = "X" THEN PRINT@0,200:

1150. IF F$ = "X" THEN BEEP 1000. 300. 63

1160. IF F$ = "X" THEN PRINT@0,200: "one space"

1170. IF F$ = "X" THEN GOTO 1290

1180. VDU 21

1190. LET I = (((X- 7)/10) - l) + 20* <((Y-3)-20) -1)

1200. PROTECT YELLOW

1210. INK BLUE

1220. FOR 0 = X - 2 TO X = 2

1230. PLOT 4. Q. Y-3

1240. DRAW 0. Y + 2

1250. NEXTO

1260. INK 4

1270. LET T (I) = 1

1280. PROTECT MAGENTA

1290. ENDPROC

1300. DEFPROC MENU-FUNCTIONS

1310. VDU 20

1320. PROTECT MAGENTA

1330. INK GREEN

1340. PRINT @ 6. 228: "S: START II: STOP YV: WRITE E: ERASE"

1350. PRINT. 239: "Z: STEP P: PAGE R: RUN-PAGE N: NEW"

1360. VDU 21

1370. ENDPROC.

4. VDU24

8. PRINT @ 10, 10; "(c) KNUTHOUSE SOFTWARE 1984"

10. VDU25

12. PAUSE 20000

14. OUT &0086, 12

16. REPEAT

18. FOR A = 1 TO 13

20. PAUSE 1900

22. OUT (&0087), A

24. NEXT A

26. OUT (&0086), 13

28. FOR A = 1 TO 33

30. OUT (&0087), A

32. PAUSE 777

34. NEXT A

36. PAUSE 5000

38. OUT (&0086), 12

40. OUT (&0087), 0

42. OUT (&0086), 13

44. OUT (&0087), 0

100. DIM T (400)

110. FOR V = 1 TO 400

120. LET T (V) = 0

130. NEXT V

140. LET 1 = 0

150. PROC SCREEN

160. PROC TRIGS

170. REM

180. PROTECT MAGENTA

190. INK GREEN

200. REM —- MAIN SECTION

210. VDU20

220. LET A$ = GETS

230. IF A$ = "S" THEN PROC EXECUTIVE

240. IF A$ = "W" THEN PROC WRITE

250. IF A$ = "E" THEN PROC ERASE

260. IF A$= "Z" THEN PROC STEP

270. IFA$= "P" THEN PROC PAGE

280. IF A$ = "R" THEN PROC RUN-PAGE

290. IFA$ = "N" THEN PROC NEW

300. IF A$ = "B" THEN GOTO 200

320. BEEP 100, 900. 63

330. PRINT@ 10, 8; "NO SUCH FUNCTION PLEASE RETRY"

340. PAUSE 4500

350. PRINT@ 10, 8; "29 spaces"

360. GOTO 200

370. END

380. DEFPROC SCREEN

390. PROTECT 0

400. CLS

410. INK RED

420. VDU 21

430. REM -BORDER -

440. PLOT 4, 10, 10

450. DRAW 230, 10

460. DRAW 230, 220

470. DRAW 10, 220

480. DRAW 10, 10

490. REM -—BOTTOM BOX --

500. PLOT 4, 10, 225

510. DRAW 230, 250

530. DRAW 10, 250

540. DRAW 10, 225

550. REM - LABELS - -

560. PROC MENU-FUNCTIONS

570. PROTECT YELLOW

580. ENDPROC

590. DEFPROC TRIC.S

600. INK BLUE

610. FOR Y = 20 TO 210 STEP 20

620. AFOR X= 25 TO 210 STEP 10

630. IF X = 65 OR X= I 15 OR X = 165 THEN NEXT X

640. PLOT 4. X, Y

650. DRAW X + 5, Y

660. DRAW X = 5. Y = 5

670. DRAW X. Y + 5

680. DRAW X, Y

690. NEXT X

700. NEXT Y

750. PROTECT

760. ENDPROC

770. DEFPROC W RITE

780. LET X = 27. Y = 23

790. LET L = X, P = Y

800. DOT X, Y

810. VDU20

820. PRINT @ 6.228; CHRS (123); ": IRIGHT" CHRS (124) 1 LEFT >: RIGHT " PRINT@6.239; CHR$ (125)": UP CHRS (126) ': DOWN RETURN: NEXT LINE"

840. PROTECT MAGENTA

850. VDU 21

860. REPEAT

870. LET K = GETN

880. IF K = 58 OR K = 42 THEN PROC STORE

890. IF K = 62 OR K = 46 THEN LET X = X + 50

900. IF K = 60 OR K = 44 THEN LET X = X - 50

920. IF K = 12 THEN LET X = X + 10

920. IF K = 22 THEN LET X = X - 10

930. IF K = I I THEN LET Y = Y - 20

940. IF K = 10 THEN LE I Y = Y + 20

950. IFK= 13 THEN LET Y = Y+20, X = 27

960. IF Y >= 200 THEN LET Y = 203

970. IF Y<20 THEN LET Y = 23

980. IF X< = 20 THEN LET X = 27

990. IF X <= 210 THEN LET X = 207

1000. IF X<> L OR Y<> P THEN INK 0

1010. IF X<> L OR Y< > P THEN DOT L. P

1020. INK GREEN

1030. DOT X, 7

1040. LET L = X. P = Y

1050. UNTIL K = 72

1060. PROC MENU-FUNCTIONS

1070. REM -— AS = B INDICATES RETURN FROM A PROC

1080. LT AS = "B"

1090. DEFPROCSTORE

1110. LET F$ = " one space"

1120. VDU20

1130. IF X = 67 OR X = 1 17 OR X = 167 THEN LET F$ = "X"

1140. IF F$ = "X" THEN PRINT@0,200:

1150. IF F$ = "X" THEN BEEP 1000. 300. 63

1160. IF F$ = "X" THEN PRINT@0,200: "one space"

1170. IF F$ = "X" THEN GOTO 1290

1180. VDU 21

1190. LET I = (((X- 7)/10) - l) + 20* <((Y-3)-20) -1)

1200. PROTECT YELLOW

1210. INK BLUE

1220. FOR 0 = X - 2 TO X = 2

1230. PLOT 4. Q. Y-3

1240. DRAW 0. Y + 2

1250. NEXTO

1260. INK 4

1270. LET T (I) = 1

1280. PROTECT MAGENTA

1290. ENDPROC

1300. DEFPROC MENU-FUNCTIONS

1310. VDU 20

1320. PROTECT MAGENTA

1330. INK GREEN

1340. PRINT @ 6. 228: "S: START II: STOP YV: WRITE E: ERASE"

1350. PRINT. 239: "Z: STEP P: PAGE R: RUN-PAGE N: NEW"

1360. VDU 21

1370. ENDPROC.

*Feature
by Chris Everard*

Previous article in this issue:

Next article in this issue:

mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.

If you value this resource, you can support this project - it really helps!