Music Educator I

Date: 1983
Type: Cassette
Platform(s): TS 1000
Tags: Education

Music Educator I is an interactive music theory tutorial that teaches note reading on the treble (G) clef staff, note types (whole, half, quarter, and eighth notes), and beat values in 4/4 meter. The program uses block graphics characters extensively to render a five-line staff, bar lines, time signatures, and individual note shapes (noteheads, stems, flags, and beams) directly on screen. Three scored quizzes test the student on note names (using the mnemonics “Every Good Boy Does Fine” and “FACE”), note type identification, and beat counting, with a final letter grade computed from the average of the three scores. A separate subroutine at line 2000 handles note rendering, branching on the current note type variable T$ and vertical position variable K to draw the correct notehead style and stem.


Program Analysis

Program Structure

The program is organized as a linear instructional sequence controlled by a main thread and a set of subroutines. The major phases are:

  1. Title screen and staff introduction (lines 19–41)
  2. Lines-notes mnemonic (“Every Good Boy Does Fine”) display (lines 51–98)
  3. Space-notes mnemonic (“FACE”) display (lines 101–131)
  4. Note name quiz — 9 random notes over 3 rounds, scored out of 100 (lines 189–296)
  5. Note type demonstration — cycling through E/Q/H/W shapes (lines 299–472)
  6. Note type quiz — 12 questions, scored out of 100 (lines 501–581)
  7. Rhythm / beat-value instruction (lines 582–791)
  8. Beat-value quiz — 8 questions, scored out of 100 (lines 800–893)
  9. Score summary and letter grade (lines 894–999)

Key subroutines are collected at high line numbers:

Line(s)Purpose
1000–1099Clear screen to staff background (five ledger lines as solid-block rows)
2000–3999Draw a single note at row K, column M, type T$
5010–5099Map position K to note-name string A$
6000–6999Draw staff decoration: bar lines, time signature, instructional text
8001–8099Draw the G-clef symbol using block graphics
9000–9010SAVE and RUN (utility lines at the end)

Staff Rendering Technique

The five staff lines are drawn at line 1000 as a single large PRINT AT 0,0 string containing rows of (lower-half block) characters at every fourth character row, separated by blank rows. Because the ZX81 display is character-mapped at 32 columns × 24 rows, the program treats each display row as a staff position; the vertical index K steps in increments of 4 (one staff space) or 2 (a ledger line). Staff lines fall at rows 2, 6, 10, 14, and 18 when K is mapped back to screen coordinates via PRINT AT K+3,....

Bar lines are added by subroutines 6100/6110 (left bar, using /) and 6120/6130 (right bar, using /). The G-clef at subroutine 8001 is built from multiple PRINT AT statements each placing a sequence of block-graphic characters that approximate the clef’s curved shape.

Note Drawing Subroutine (Lines 2000–3999)

The note-drawing code branches on two variables: K (odd values 1–17 represent the nine valid note positions on and between the five staff lines) and T$ (one of "E", "Q", "H", "W" for eighth, quarter, half, whole). The logic flow is:

  • Whole notes (T$="W") branch directly to line 2300, bypassing stem/flag drawing.
  • Notes with K<=9 (lower half of staff) jump to line 2300 for the lower-staff note shape, while K>9 uses the upper-staff path starting at line 2050.
  • Stem direction and flag (for eighth notes) are drawn with additional PRINT AT statements using , , , , and characters to suggest stems and flags.
  • Lines 3071–3130 handle the lower-staff note shapes including the flag tail for eighth notes.

Several GOTO targets within subroutine 2000 reference lines that do not exist in the listing (e.g., lines 2000, 2200, 2206, 2208, 2400, 2500), which means those branches fall through to the next present line or exit. This is an intentional technique for conditional execution without explicit RETURN at intermediate points, though it also means some note variants may be rendered incompletely.

Note-Name Mapping (Subroutine 5000)

Subroutine 5010–5099 maps the odd-valued position K to a letter name in A$. The mapping covers K=1,15→F; K=3,17→E; K=5→D; K=7→C; K=9→B; K=11→A; K=13→G. This places middle C and the surrounding notes of the treble clef across the nine positions. Note that K=17 (top ledger line) maps to E and K=1 (bottom ledger line) maps to F, consistent with the range of the treble staff shown.

Quiz Mechanics and Scoring

The note name quiz (lines 189–290) runs 3 rounds of 3 notes each, for 9 total questions. Each correct answer adds 11.12 points, giving a theoretical maximum of approximately 100. The DIM Y(17) array at line 10 is used as a “used” flag to prevent repeating note positions within a round; it is reset implicitly only at the start of each outer loop iteration since Y is never explicitly cleared between rounds, which could reduce variety in later rounds.

The note type quiz (lines 501–550) asks 12 questions worth 8.34 each (~100 total). The beat-value quiz (lines 800–880) asks 8 questions worth 12.5 each (exactly 100 total). All three scores are accumulated in S, S1, and S2 respectively, then averaged at line 902 and converted to a letter grade at lines 919–923 using a standard 60/70/80/90 scale.

Note Type Demonstration Loop (Lines 299–472)

After the note name quiz, the program demonstrates note shapes in a loop that cycles through E→Q→H→W using a chain of IF T$=... THEN GOTO tests at lines 470–472. The entry point at line 299 sets T$="E", and after drawing eight random notes, control falls to the type-check chain. Each type redirects to a block that sets the next type and GOTOs line 400 (which is not explicitly listed; line 403 is the actual first line of the note-drawing loop). This effectively creates a four-phase animation of different note shapes.

Key BASIC Idioms

  • The double INKEY$ pattern (IF INKEY$<>"" THEN GOTO n followed by IF INKEY$="" THEN GOTO n+1) at lines 40–41, 97–98, etc., is the standard keypress-wait idiom: the first loop flushes any held key, the second waits for a fresh press.
  • SLOW at line 5 puts the machine in its slower display-refresh mode, ensuring screen output is visible.
  • Random note positions are generated with INT(RND*17)+1 and then filtered to odd values only (lines 211, 411, 516), since even values represent spaces between staff lines rather than note positions.
  • TAB is used extensively inside single PRINT AT statements to place multiple block graphic characters in one statement, reducing code length and improving speed.

Bugs and Anomalies

  • The DIM Y(17) array is never reset between the three outer quiz rounds (line 190 FOR N=1 TO 3), so by the third round, many positions are already flagged and the inner loop at line 210–213 may spin for a long time seeking an unused slot.
  • Lines 301–331 set T$ and print a label, then all GOTO 400. Line 400 does not exist; execution continues at line 403. This is harmless but slightly confusing.
  • Several subroutine 2000 internal GOTO targets (2200, 2206, 2208, 2400, 2500) are absent from the listing; control falls through to the next available line in each case, which may cause some note types to render partially or incorrectly.
  • Lines 3118–3120 contain a conditional IF K=9 THEN GOTO 3121, but line 3121 is the very next line, making the branch a no-op.
  • Lines 2201–2209 and 3086–3130 contain partial eighth-note flag code but some PRINT statements reference lines that do not appear (e.g., lines 2206, 2207 are absent; line 2209 appears but the preceding branch at 2203 references 2206 which is missing). This suggests the flag rendering is incomplete for some note positions.

Content

Appears On

Related Products

Excellent starting point for learning the notes of the scale. Shows name and timing of notes with plenty of graphical...

Related Articles

Related Content

Image Gallery

Source Code

   1 REM MUSIC EDUCATOR 1
   5 SLOW
  10 DIM Y(17)
  19 PRINT AT 10,7;"MUSIC EDUCATOR 1"
  20 PRINT AT 11,7;"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  21 FOR J=1 TO 80
  22 NEXT J
  28 GOSUB 1000
  29 GOSUB 6000
  30 PRINT AT 20,1;"THIS PROGRAM TEACHES THE NOTES"
  31 PRINT AT 21,1;"ON THE TREBLE OR G CLEF STAFF."
  32 GOSUB 8000
  33 PRINT AT 11,10;"<--G CLEF"
  34 FOR N=1 TO 60
  35 NEXT N
  36 PRINT AT 19,7;"[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]"
  40 IF INKEY$ <>"" THEN GOTO 40
  41 IF INKEY$ ="" THEN GOTO 41
  51 GOSUB 1000
  67 LET K=17
  68 LET T$="Q"
  69 LET M=0
  70 FOR I=1 TO 5
  75 GOSUB 2000
  80 LET M=M+6
  81 LET K=K-4
  89 NEXT I
  90 PRINT AT 15,2;"E"
  91 PRINT AT 11,8;"G"
  92 PRINT AT 7,14;"B"
  93 PRINT AT 3,20;"D"
  94 PRINT AT 4,26;"F"
  95 PRINT AT 19,6;"E[V][E][R][Y] G[O][O][D] B[O][Y] D[O][E][S] F[I][N][E]"
  96 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
  97 IF INKEY$ <>"" THEN GOTO 97
  98 IF INKEY$ ="" THEN GOTO 98
 101 LET K=15
 102 LET M=2
 103 GOSUB 1000
 105 FOR I=1 TO 4
 106 GOSUB 2000
 108 LET K=K-4
 109 LET M=M+7
 110 NEXT I
 120 PRINT AT 12,4;"F"
 121 PRINT AT 8,11;"A"
 122 PRINT AT 4,18;"C"
 123 PRINT AT 0,25;"E"
 125 PRINT AT 19,0;"   NOTES IN SPACES SPELL FACE   "
 128 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 130 IF INKEY$ <>"" THEN GOTO 130
 131 IF INKEY$ ="" THEN GOTO 131
 189 LET S=0
 190 FOR N=1 TO 3
 192 LET M=11
 201 GOSUB 1000
 203 PRINT AT 0,11;"NOTE TEST"
 204 GOSUB 6000
 205 GOSUB 8000
 207 FOR I=1 TO 3
 210 LET K=INT (RND*17)+1
 211 IF K=2 OR K=4 OR K=6 OR K=8 OR K=10 OR K=12 OR K=14 OR K=16 THEN GOTO 210
 212 IF Y(K)=1 THEN GOTO 210
 213 LET Y(K)=1
 220 GOSUB 5000
 224 PRINT AT 21,18;"          "
 225 GOSUB 2000
 249 PRINT AT 21,0;"WHAT IS THIS NOTE? (A THRU G)"
 250 INPUT N$
 255 IF N$=A$ THEN GOTO 275
 256 PRINT AT 21,18;" [I][N][C][O][R][R][E][C][T]    "
 258 LET M=M+7
 274 GOTO 279
 275 PRINT AT 21,18;" CORRECT      "
 276 PRINT AT K+3,M+2;A$
 277 LET S=S+11.12
 278 LET M=M+7
 279 NEXT I
 280 FOR L=1 TO 30
 281 NEXT L
 290 NEXT N
 291 PRINT AT 20,0;"           SCORE=";INT S;"     "
 292 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 295 IF INKEY$ <>"" THEN GOTO 295
 296 IF INKEY$ ="" THEN GOTO 296
 299 GOSUB 1000
 301 LET T$="E"
 302 PRINT AT 21,6;" EIGHTH NOTES (E)"
 303 GOTO 400
 304 LET T$="Q"
 305 GOSUB 1000
 309 PRINT AT 21,6;"QUARTER NOTES (Q)"
 310 GOTO 400
 315 GOSUB 1000
 325 LET T$="H"
 326 PRINT AT 21,6;" HALF NOTES (H)  "
 327 GOTO 400
 328 GOSUB 1000
 330 LET T$="W"
 331 PRINT AT 21,6;" WHOLE NOTES (W)"
 403 LET M=1
 406 FOR I=1 TO 8
 408 LET K=INT (RND*17)+1
 410 IF T$="E" AND K=11 THEN GOTO 408
 411 IF K=2 OR K=4 OR K=6 OR K=8 OR K=10 OR K=12 OR K=14 OR K=16 THEN GOTO 408
 412 GOSUB 2000
 413 IF I=8 THEN GOTO 430
 414 LET M=M+8
 415 IF M>25 THEN GOTO 417
 416 GOTO 430
 417 LET M=1
 418 FOR L=1 TO 30
 419 NEXT L
 421 GOSUB 1000
 430 NEXT I
 450 FOR N=1 TO 30
 451 NEXT N
 470 IF T$="E" THEN GOTO 304
 471 IF T$="Q" THEN GOTO 315
 472 IF T$="H" THEN GOTO 328
 501 LET M=1
 502 LET S1=0
 503 GOSUB 1000
 504 FOR I=1 TO 12
 515 LET K=INT (RND*17)+1
 516 IF K=11 OR K=2 OR K=4 OR K=6 OR K=8 OR K=10 OR K=12 OR K=14 OR K=16 THEN GOTO 515
 517 IF T$="E" AND K=11 THEN GOTO 515
 519 IF K=17 OR K=13 OR K=3 THEN LET T$="H"
 520 IF K=1 OR K=7 THEN LET T$="E"
 521 IF K=5 OR K=11 THEN LET T$="Q"
 522 IF K=9 OR K=15 THEN LET T$="W"
 523 PRINT AT 20,11;"         "
 524 PRINT AT 0,8;"NOTE TYPE TEST"
 525 GOSUB 2000
 526 PRINT AT 21,0;"ENTER TYPE OF NOTE;(E,Q,H, OR W)"
 527 INPUT A$
 528 IF A$=T$ THEN GOTO 535
 530 PRINT AT 20,11;"[I][N][C][O][R][R][E][C][T]  "
 534 GOTO 540
 535 PRINT AT 20,11;" CORRECT "
 536 PRINT AT K+3,M+2;T$
 537 LET S1=S1+8.34
 540 LET M=M+8
 541 IF I=12 THEN GOTO 550
 542 IF M>25 THEN GOTO 545
 543 GOTO 550
 545 LET M=1
 546 FOR J=1 TO 30
 547 NEXT J
 549 GOSUB 1000
 550 NEXT I
 574 PRINT AT 20,11;"             "
 575 PRINT AT 20,11;"SCORE=";INT S1
 576 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 580 IF INKEY$ <>"" THEN GOTO 580
 581 IF INKEY$ ="" THEN GOTO 581
 582 LET K=3
 585 GOSUB 1000
 586 GOSUB 6000
 587 GOSUB 6120
 590 GOSUB 6135
 601 GOSUB 1000
 602 LET M=1
 603 LET T$="E"
 605 PRINT AT 18,0;" EIGHTH NOTES GET 1/2 BEAT EACH."
 607 GOSUB 2000
 610 LET M=9
 612 LET T$="Q"
 615 PRINT AT 19,0;"QUARTER NOTES GET ONE BEAT EACH."
 617 GOSUB 2000
 620 LET M=17
 621 LET T$="H"
 625 PRINT AT 20,0;" HALF NOTES GET TWO BEATS EACH. "
 627 GOSUB 2000
 630 LET M=24
 631 LET T$="W"
 632 LET K=5
 635 PRINT AT 21,0;"WHOLE NOTES GET FOUR BEATS EACH."
 637 GOSUB 2000
 639 PRINT AT 0,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 640 IF INKEY$ <>"" THEN GOTO 640
 641 IF INKEY$ ="" THEN GOTO 641
 642 GOSUB 1000
 643 GOSUB 6000
 644 FOR J=1 TO 2
 647 LET T$="E"
 648 LET K=1
 649 PRINT AT 21,0;" EIGHTH NOTES GET ONE/HALF BEAT"
 650 FOR M=1 TO 25 STEP 8
 651 GOSUB 2000
 655 PRINT AT 19,M+2;"1/2"
 668 LET K=K+2
 669 NEXT M
 670 FOR I=1 TO 20
 671 NEXT I
 675 IF J=2 THEN GOTO 680
 676 GOSUB 1000
 677 GOSUB 6120
 678 NEXT J
 698 LET K=3
 699 LET T$="Q"
 700 GOSUB 1000
 701 GOSUB 6000
 702 GOSUB 6120
 703 PRINT AT 21,0;"   QUARTER NOTES GET ONE BEAT"
 704 FOR M=1 TO 25 STEP 8
 710 GOSUB 2000
 711 PRINT AT 19,M+2;"1"
 715 NEXT M
 720 FOR I=1 TO 40
 722 NEXT I
 725 LET T$="H"
 726 LET M=1
 727 LET K=7
 730 GOSUB 1000
 731 GOSUB 6000
 732 GOSUB 6120
 735 PRINT AT 21,0;"    HALF NOTES GET TWO BEATS"
 737 GOSUB 2000
 738 PRINT AT 19,M+2;"2"
 739 LET M=17
 740 GOSUB 2000
 741 PRINT AT 19,M+2;"2"
 742 FOR I=1 TO 40
 743 NEXT I
 745 GOSUB 1000
 746 GOSUB 6000
 747 GOSUB 6120
 750 LET T$="W"
 751 LET M=1
 752 LET K=11
 753 PRINT AT 21,0;"   WHOLE NOTES GET FOUR BEATS"
 755 GOSUB 2000
 756 PRINT AT 19,M+2;"4"
 760 FOR I=1 TO 40
 761 NEXT I
 762 CLS
 765 PRINT AT 2,12;"SUMMARY"
 766 PRINT AT 3,12;"▀▀▀▀▀▀▀"
 768 PRINT AT 5,2;"4 BEATS PER BAR IN 4/4 METER"
 769 PRINT AT 6,2;"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 770 PRINT AT 8,1;"EIGHTH NOTES GET ONE/HALF BEAT"
 772 PRINT AT 10,3;"QUARTER NOTES GET ONE BEAT"
 774 PRINT AT 12,4;"HALF NOTES GET TWO BEATS"
 776 PRINT AT 14,3;"WHOLE NOTES GET FOUR BEATS"
 789 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 790 IF INKEY$ <>"" THEN GOTO 790
 791 IF INKEY$ ="" THEN GOTO 791
 800 LET S2=0
 802 LET K=5
 803 LET M=1
 804 GOSUB 1000
 805 PRINT AT 0,8;"NOTE BEAT TEST"
 806 LET T$="Q"
 807 FOR I=1 TO 8
 809 IF S2>=50 AND S2<62.5 THEN LET T$="W"
 811 IF T$="H" THEN GOTO 816
 812 IF T$="W" THEN LET T$="H"
 813 IF T$="E" THEN LET T$="W"
 814 IF T$="Q" THEN LET T$="E"
 815 GOTO 817
 816 LET T$="Q"
 817 GOSUB 2000
 818 PRINT AT 20,0;"ENTER THE NUMBER OF BEATS THIS"
 820 PRINT AT 21,0;"NOTE GETS: (1/2, 1, 2 OR 4)"
 825 INPUT B$
 828 IF B$="0.5" THEN LET B$="1/2"
 829 IF B$=".5" THEN LET B$="1/2"
 830 IF T$="E" AND B$="1/2" THEN GOTO 850
 831 IF T$="Q" AND B$="1" THEN GOTO 850
 832 IF T$="H" AND B$="2" THEN GOTO 850
 833 IF T$="W" AND B$="4" THEN GOTO 850
 835 PRINT AT 19,10;"[I][N][C][O][R][R][E][C][T]  "
 849 GOTO 870
 850 PRINT AT 19,10;" CORRECT "
 852 PRINT AT K+3,M+2;B$
 853 LET S2=S2+12.5
 870 LET M=M+8
 871 IF I=8 THEN GOTO 880
 872 IF M>25 THEN GOTO 875
 873 GOTO 880
 875 LET M=1
 876 FOR J=1 TO 30
 877 NEXT J
 879 GOSUB 1000
 880 NEXT I
 887 PRINT AT 19,10;"          "
 888 PRINT AT 20,0;"                                "
 889 PRINT AT 21,0;"                                "
 890 PRINT AT 20,11;"SCORE=";INT S2
 891 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 892 IF INKEY$ <>"" THEN GOTO 892
 893 IF INKEY$ ="" THEN GOTO 893
 894 CLS
 901 PRINT AT 4,7;"SUMMARY OF SCORES"
 902 LET A=(INT S+INT S1+INT S2)/3
 903 PRINT AT 5,7;"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
 905 PRINT AT 7,6;"NOTE NAME TEST...";INT S
 906 PRINT AT 9,6;"NOTE TYPE TEST...";INT S1
 907 PRINT AT 11,6;"NOTE BEAT TEST...";INT S2
 908 PRINT AT 12,6;"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
 910 PRINT AT 14,6;"AVERAGE..........";INT A
 919 IF A<60 THEN LET G$="F"
 920 IF A>=60 THEN LET G$="D"
 921 IF A>=70 THEN LET G$="C"
 922 IF A>=80 THEN LET G$="B"
 923 IF A>=90 THEN LET G$="A"
 925 PRINT AT 17,11;"GRADE...";G$
 997 PAUSE 10000
 998 PRINT AT 21,8;"█[E][N][D]█[O][F]█[P][R][O][G][R][A][M]█"
 999 STOP
 1000 PRINT AT 0,0;"                                ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                                                                                ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                                                                                ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                                                                                ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                                                                                ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                                                                                                                "
 1099 RETURN
 2010 IF T$="W" THEN GOTO 2300
 2050 IF K<=9 THEN GOTO 2300
 2060 IF K=3 OR K=7 OR K=11 OR K=15 THEN GOTO 2070
 2065 PRINT AT K-12,M+5;"▙";TAB M+37;"▌";TAB M+69;"▌";TAB M+101;"▌";TAB M+133;"▙";TAB M+165;"▌";TAB M+197;"▌";TAB M+229;"▌"
 2066 PRINT AT K-4,M+5;"▙";TAB M+37;"▌";TAB M+69;"▌";TAB M+101;"▌"
 2067 GOTO 2190
 2070 IF K=15 THEN GOTO 2074
 2071 PRINT AT K-12,M+5;"▙";TAB M+37;"▌";TAB M+69;"▌";TAB M+101;"▌";TAB M+133;"▙";TAB M+165;"▌";TAB M+197;"▌";TAB M+229;"▌"
 2072 GOTO 2075
 2074 PRINT AT K-12,M+5;"▌";TAB M+37;"▌";TAB M+69;"▙";TAB M+101;"▌";TAB M+133;"▌";TAB M+165;"▌";TAB M+197;"▙";TAB M+229;"▌"
 2075 PRINT AT K-4,M+5;"▌";TAB M+37;"▌";TAB M+69;"▙";TAB M+101;"▌"
 2190 IF T$="E" THEN GOTO 2200
 2199 GOTO 2300
 2201 PRINT AT K-12,M+5;"▛▖";TAB M+38;"▐"
 2203 IF K=3 OR K=7 OR K=11 OR K=15 THEN GOTO 2206
 2204 PRINT AT K-10,M+6;"▐"
 2205 GOTO 2208
 2207 PRINT AT K-10,M+6;"▟"
 2209 PRINT AT K-9,M+6;"▞"
 2298 IF T$="Q" THEN GOTO 2400
 2310 PRINT AT K-1,M+1;"▞▀▀▚"
 2315 IF K=3 OR K=7 OR K=11 OR K=15 THEN GOTO 2325
 2320 PRINT AT K,M;"▟▄▄▄▄▙";TAB M+32;"▝▖  ▗▘";TAB M+65;"▝▀▀▘"
 2324 GOTO 2341
 2325 PRINT AT K,M;"▐    ▌";TAB M+32;"▝▖  ▗▘";TAB M+65;"▟██▙"
 2398 IF T$="H" THEN GOTO 3000
 2399 IF T$="W" THEN GOTO 3999
 2410 PRINT AT K-1,M+1;"▟██▙";TAB M+33;"████";TAB M+65;"████"
 2435 IF K=3 OR K=7 OR K=11 OR K=15 THEN GOTO 2445
 2440 PRINT AT K+2,M+2;"▀▀"
 2441 GOTO 2500
 2445 PRINT AT K+2,M+1;"▟██▙"
 3010 IF K>9 THEN GOTO 3999
 3070 IF K=1 OR K=5 OR K=9 THEN GOTO 3095
 3071 PRINT AT K+1,M;"▐";TAB M+32;"▟";TAB M+64;"▐";TAB M+96;"▐";TAB M+128;"▐";TAB M+160;"▟";TAB M+192;"▐";TAB M+224;"▐"
 3079 PRINT AT K+9,M;"▐";TAB M+32;"▟";TAB M+64;"▐";TAB M+96;"▐";TAB M+128;"▝"
 3084 IF T$="E" THEN GOTO 3086
 3085 GOTO 3999
 3086 PRINT AT K+13,M;"▀"
 3087 PRINT AT K+12,M-1;"▚"
 3088 PRINT AT K+11,M-1;"▌"
 3089 PRINT AT K+10,M-1;"▙"
 3090 PRINT AT K+9,M-1;"▞"
 3094 GOTO 3999
 3095 PRINT AT K+1,M;"▐";TAB M+32;"▐";TAB M+64;"▐";TAB M+96;"▟";TAB M+128;"▐";TAB M+160;"▐";TAB M+192;"▐";TAB M+224;"▟"
 3113 PRINT AT K+9,M;"▐";TAB M+32;"▐";TAB M+64;"▐"
 3118 IF K=9 THEN GOTO 3121
 3121 IF T$="E" THEN GOTO 3125
 3122 GOTO 3999
 3126 PRINT AT K+11,M-1;"▝▟"
 3127 PRINT AT K+10,M-1;"▌"
 3128 PRINT AT K+9,M-1;"▌"
 3129 PRINT AT K+8,M-1;"▌"
 3130 PRINT AT K+7,M-1;"▞"
 3999 RETURN
 5010 IF K=1 OR K=15 THEN LET A$="F"
 5011 IF K=3 OR K=17 THEN LET A$="E"
 5012 IF K=7 THEN LET A$="C"
 5013 IF K=5 THEN LET A$="D"
 5014 IF K=9 THEN LET A$="B"
 5015 IF K=11 THEN LET A$="A"
 5016 IF K=13 THEN LET A$="G"
 5099 RETURN
 6100 PRINT AT 2,0;"▌";TAB 32;"▌";TAB 64;"▌";TAB 96;"▙";TAB 128;"▌";TAB 160;"▌";TAB 192;"▌";TAB 224;"▙"
 6110 PRINT AT 10,0;"▌";TAB 32;"▌";TAB 64;"▌";TAB 96;"▙";TAB 128;"▌";TAB 160;"▌";TAB 192;"▌";TAB 224;"▙"
 6115 RETURN
 6120 PRINT AT 2,31;"▐";TAB 63;"▐";TAB 95;"▐";TAB 127;"▟";TAB 159;"▐";TAB 191;"▐";TAB 223;"▐";TAB 255;"▟"
 6130 PRINT AT 10,31;"▐";TAB 63;"▐";TAB 95;"▐";TAB 127;"▟";TAB 159;"▐";TAB 191;"▐";TAB 223;"▐";TAB 255;"▟"
 6131 RETURN
 6135 PRINT AT 4,1;"<--BAR LINE";TAB 20;"BAR LINE-->"
 6140 PRINT AT 11,9;"THIS IS A BAR"
 6145 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 6150 IF INKEY$ <>"" THEN GOTO 6150
 6151 IF INKEY$ ="" THEN GOTO 6151
 6155 PRINT AT 4,1;"           "
 6200 PRINT AT 3,5;"<--TIME SIGNATURE"
 6250 PRINT AT 19,0;"THE FOLLOWING INSTRUCTION IS FOR"
 6260 PRINT AT 20,0;"MUSIC WRITTEN IN 4/4 METER."
 6300 PRINT AT 2,4;"▄";TAB 35;"▞▐";TAB 66;"▞ ▐";TAB 97;"▟▄▄▟▄";TAB 129;"▝▀▀▜▀";TAB 164;"▐";TAB 196;"▐"
 6400 PRINT AT 10,4;"▄";TAB 35;"▞▐";TAB 66;"▞ ▐";TAB 97;"▟▄▄▟▄";TAB 129;"▝▀▀▜▀";TAB 164;"▐";TAB 196;"▐"
 6500 PRINT AT 7,7;"FOUR BEATS PER BAR"
 6600 PRINT AT 15,5;"QUARTER NOTE GETS ONE BEAT"
 6800 PRINT AT 21,0;"███[P][R][E][S][S]█[A][N][Y]█[K][E][Y]█[T][O]█[C][O][N][T][I][N][U][E]████"
 6980 IF INKEY$ <>"" THEN GOTO 6980
 6981 IF INKEY$ ="" THEN GOTO 6981
 6999 RETURN
 8001 PRINT AT 0,6;"▙";TAB 38;"▙▙";TAB 70;"▌ ▚";TAB 102;"▌  ▌";TAB 134;"▌ ▞";TAB 166;"▙▟";TAB 198;"▛";TAB 229;"▞▌"
 8002 PRINT AT 8,4;"▞ ▌";TAB 35;"▟▄▄▙";TAB 66;"▞ ▞▀▛▀▚";TAB 97;"▗▘▐  ▌  ▚";TAB 129;"▐ ▐  ▌  ▝▖";TAB 161;"▟▄▄▙▄▙▄▄▄▙";TAB 194;"▌   ▌  ▗▘";TAB 226;"▝▖  ▌  ▞"
 8003 PRINT AT 16,3;"▝▖ ▌ ▞";TAB 36;"▟███";TAB 70;"▌";TAB 101;"▝▘"
 8099 RETURN
 9000 SAVE "MUSI[C]"
 9010 RUN 

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top