Terrapin Resources

A Single Line

Marc Weyl, a long-time Logo enthusiast, sent us the code listed below. It shows the power of Logo and is a wonderful illustration of how you can create complex drawings with just a few instructions.

His program combines music, art, and math with Logo code.

He calls it, “A single line. Each image is but a single line, bent but unbroken.”

The beautiful lines are accompanied by random musical notes, sometimes individual pitches, at other times chords.

Can you figure out how it works? It’s elegant and simple at the same time.

See a video of his ‘A Single Line’ Logo program in action.

Marc’s fascination with evolving geometric shapes can also be seen in Dulcimoo (code listed at the end of this page by that name).

SingleLine.lgo

 TO SINGLE_LINE
 HIDETURTLE
 WINDOW
 CLEARSCREEN
 SETBG "BLACK
 SETPC "WHITE
 PENDOWN
 TT [A SINGLE LINE]
 WAIT 3000
 CLEARSCREEN
 SETBG "BLACK
 SETPC "WHITE
 PENDOWN
 TT [EACH IMAGE IS BUT A SINGLE LINE]
 WAIT 3000
 CLEARSCREEN
 SETBG "BLACK
 SETPC "WHITE
 PENDOWN
 TT [BENT BUT UNBROKEN...]
 WAIT 3000
 FOR [TWIST 0 720 1] [
 CLEARSCREEN
 SETBG "BLACK
 RT :TWIST
 PD
 FOR [WALK 0 3200 1] [FD :WALK RIGHT :TWIST]
 PU
 MAKE "S RANDOM 42
 IF (:S = 1) [PLAY [I107 T120 O4 C]]
 IF (:S = 2) [PLAY [I107 T120 O4 D]]
 IF (:S = 3) [PLAY [I107 T120 O4 F]]
 IF (:S = 4) [PLAY [I107 T120 O4 G]]
 IF (:S = 5) [PLAY [I107 T120 O4 A]]
 IF (:S = 6) [PLAY [I107 T120 O5 C]]
 IF (:S = 7) [PLAY [I107 T120 O5 F]]
 IF (:S = 8) [PLAY [I107 T120 O5 G]]
 IF (:S = 9) [PLAY [I107 T120 O3 C ]]
 IF (:S = 10) [PLAY [I107 T90 O3 F]]
 IF (:S = 11) [PLAY [I107 T90 O3 G]]
 IF (:S = 12) [PLAY [I107 T90 O3 C]]
 IF (:S = 13) [PLAY [I107 T60 O3 C]]
 IF (:S = 14) [PLAY [I107 T120 O5 F]]
 IF (:S = 15) [PLAY [I107 T120 O5 G]]
 IF (:S = 16) [PLAY [I107 T120 O4 C ]]
 IF (:S = 17) [PLAY [I107 T120 O3 C ]]
 IF (:S = 18) [PLAY [I107 T60 O3 C ]]
 IF (:S = 19) [PLAY [I107 T120 O4 [C F]]]
 IF (:S = 20) [PLAY [I107 T120 O4 [D F]]]
 IF (:S = 21) [PLAY [I107 T120 O4 [C G]]]
 IF (:S = 22) [PLAY [I107 T120 O4 [D G]]]
 IF (:S = 23) [PLAY [I107 T120 O4 [C F]]]
 IF (:S = 24) [PLAY [I107 T120 O4 [D F]]]
 IF (:S = 25) [PLAY [I107 T120 O4 [C G]]]
 IF (:S = 26) [PLAY [I107 T120 O4 [D G]]] 
 IF (:S = 27) [PLAY [I107 T120 O4 [D F]]]
 IF (:S = 28) [PLAY [I107 T120 O4 [C G]]]
 IF (:S = 29) [PLAY [I107 T120 O4 [D G]]]
 IF (:S = 30) [PLAY [I107 T120 O4 [A C]]]
 IF (:S = 31) [PLAY [I107 T240 O5 C D F G]]
 IF (:S = 32) [PLAY [I107 T240 O5 G F D C]]
 IF (:S = 33) [PLAY [I107 T60 O3 F]]
 IF (:S = 34) [PLAY [I107 T60 O3 G]]
 IF (:S = 35) [PLAY [I107 T60 O3 C]]
 IF (:S = 36) [PLAY [I107 T60 O3 C]]
 IF (:S > 36) [WAIT 100]  
 ]
 CLEARSCREEN
 SETBG "BLACK
 SETPC "WHITE
 PENDOWN
 TT [FIN]
 WAIT 3000
 CLEARSCREEN
 SETBG "BLACK
 SETPC "WHITE
 PENDOWN
 TT [A SINGLE LINE]
 PU BK 200 PD
 TT [BY MARC WEYL]
 END

 TO DULCIMOO
	DRAW
	CTURTLES 6
	HIDETURTLE
	SETBG "BLACK
	SETPC "WHITE
	SETSPEED 1
	SETWIDTH 5
	PENDOWN
	FOR [X 0 4 1] [
		FOR [COUNT 0 360 1] [
			CLEAN
			SETBG "WHITE
			TELL 0 SETPC "BLUE
			TELL 1 SETPC "RED
			TELL 2 SETPC "ORANGE
			TELL 3 SETPC "BLACK
			TELL 4 SETPC "GREEN
			TELL 5 SETPC "GOLD
			TELLALL 0 5
			RIGHT 3
			FORWARD :COUNT
			RIGHT 120
			FORWARD :COUNT
			RIGHT 120
			FORWARD :COUNT
			RIGHT 120
			WAIT 10
		]

		FOR [COUNT 360 0 -1] [
			CLEAN
			SETBG "BLACK
			TELL 0 SETPC "BLUE
			TELL 1 SETPC "RED
			TELL 2 SETPC "GOLD
			TELL 3 SETPC "WHITE
			TELL 4 SETPC "ORANGE
			TELL 5 SETPC "GREEN
			TELLALL 0 5
			RIGHT 3
			FORWARD :COUNT
			RIGHT 120
			FORWARD :COUNT
			RIGHT 120
			FORWARD :COUNT
			RIGHT 120
			WAIT 10
		]

	]
	PLAY "|~HOME/sounds/cow|
	TOPLEVEL
END

Description Each a single line with musical accompaniment: simple, yet complex
Procedure SINGLE_LINE
Level Advanced
Tags Math, Drawing, Complex Images, Music