On the Beautiful Blue Danube

Date: 198x
Type: Program
Platform(s): TS 2068
Tags: Music

Plays an arrangement of Johann Strauss’s waltz On the Beautiful Blue Danube through the speaker, from the introduction through the waltz sections with their repeats. It opens with “**BLUE DANUBE**” built up in large letters one dot at a time, each dot shot in from the corner of the screen with a click. A picture follows: a sailboat on rows of waves under a white sky, with the title and the note “This will be the ENTIRE SCORE (I’ve improvised some) ENJOY!” When the music ends it starts again from the beginning.

REMs identify it as Rev. 3 by Wm. J. Tilley, with graphics from SINCUS News by J. Colonna, August 1984. The title effect is a routine by Eddie Duncan-Dunlap from Your Sinclair, reprinted by ZX-Appeal in September 1986 and run in SINCUS News in November/December 1986, which Tilley turned into a subroutine.

Program Analysis

Structure

  • Lines 2–20: credits, the title and picture subroutines, and the player: READ d,p, divide the length by 10 and BEEP.
  • Lines 25–2000: the score as DATA pairs of length and pitch, with REMs naming the sections, sharps and flats. The pair 999,999 ends it, and line 2010 restores and plays it again.
  • Lines 8000–8310: the title effect. Lines 8400–8650: the river picture.

The Title Effect

The title is printed small in the top row, then each of its pixels is tested with POINT (x,y+168). Each lit pixel is enlarged to a point at 2*x,3*y+80, and a line is drawn and undrawn from 0,0 with DRAW OVER 1 so it looks like a shot fired from the corner.

Notable Techniques

  • Gaps between notes are written as pitch 69, the highest note BEEP allows, so every DATA item can go straight to BEEP without a special case.
  • The waves are rows of arcs drawn with the third parameter of DRAW, and the sky is 320 spaces printed in white paper.
  • The DATA lines contain spaces after the commas, grouping the length and pitch of each note for easier editing.

Potential Issues

  • The music repeats forever; BREAK is the only way to stop it.
  • Line 63 and line 72 contain a pitch of 60 among the 69 rests, which appears to be a typing slip for 69.

This program came from an Oliger (JLO SAFE) disk and was converted to load from tape. The program already saved with a plain SAVE; the author’s street address was removed from the credit REM in line 2 (his name is kept). It was tested in ZEsarUX.

Appears On

Music with pictures, printer utilities, drawing tools, games and home programs: over fifty programs from the SINCUS library tape that followed tape 103, rescued from disk.

Related Content

Image Gallery

Source Code

    2 REM :::: bluedanube" Rev. 3        Wm. J. Tilley
    3 GO SUB 8000
    4 CLS 
    5 REM GRAPHICS FROM SINCUS NEWS   J. COLONNA AUG/84
    6 GO SUB 8400
    9 REM :::: in SPECTRUM rod PLAY c SPECTRUM ion SPECTRUM empo  di VALSE
   10 READ d,p: LET d=d/10
   15 IF p=999 THEN GO TO 2010
   20 BEEP d,p: GO TO 10
   25 REM :::: Introduction
   30 DATA 2,9,2,8,4,9,4,69,2,11,2,10,4,11,4,69,2,13,2,11,4,13,4,14,4,16,4,18,4,69,2,16,2,15,4,16,4,69,2,18,2,17,4,18
   33 DATA 4,69,2,18,2,17,4,18,4,19,4,21,4,23,4,69,2,19,2,21,2,23,2,9,12,19,4,19,2,19,2,21,2,23,2,9,12,18,4,18
   36 DATA 2,18,2,19,2,21,2,9,2,16,2,69,2,19,2,69,2,9,2,69,2,14,2,69,2,19,2,69,2,9,2,69,2,13,2,69,2,19,2,69,2,9,2,69,2,11,2,69,2,16,2,69,2,7,2,69
   39 DATA 2,9,2,69,2,14,2,69,2,6,2,69,2,7,2,69,2,13,2,69,2,4,2,69,12,69
   41 REM :::: #1 Tempo di Valse
   42 DATA 4,2, 4,6, 4,9, 12,9, 12,9, 4,9, 4,69, 4,2, 4,2, 4,6, 4,9, 12,9, 12,9, 4,9, 4,69
   45 DATA 4,1, 4,1, 4,4, 4,11, 12,11, 12,11, 4,11, 4,69, 4,1, 4,1, 4,6, 4,9, 12,11, 12,11, 4,9, 4,69
   48 DATA 4,2, 4,2, 4,6, 4,9, 12,14, 12,14, 4,14, 4,69, 4,2, 4,2, 4,6, 4,9, 12,14, 12,14, 4,14
   51 DATA 4,69, 4,4, 4,4, 4,7, 2,11, 2,69, 12,11, 2,11, 4,11, 4,8, 4,9, 12,18, 4,18
   53 REM :::: STILL  C & F SHARP
   54 DATA 4,26, 4,18, 10,11, 2,69, 10,13, 2,69, 4,14, 2,69, 2,18, 4,18
   56 REM :::: F,G,C SHARP
   57 DATA 4,69, 2,18, 2,69, 2,16, 2,69
   59 REM :::: leggiero C,F,G SHARP
   60 DATA 2,25, 2,69, 2,23, 2,69, 2,23, 2,69, 4,69, 2,23, 2,69, 2,22, 2,69, 2,22, 2,69, 2,23, 2,69, 2,23, 2,69, 4,69, 2,16, 2,69, 2,16, 2,69, 8,18, 4,16, 4,69, 2,16, 2,69, 2,16, 2,69, 8,23, 4,23
   63 DATA 4,69, 2,26, 2,69, 2,25, 2,69, 2,25, 2,69, 2,23, 2,69, 2,23, 2,60, 4,69, 2,23, 2,25,2,69, 2,28, 2,69, 2,26, 2,69, 2,26, 2,69, 4,69
   66 DATA 2,20, 2,69, 2,23, 2,69, 8,23, 4,23, 6,20, 2,18, 2,14, 2,11, 2,18, 2,18, 2,18, 4,18, 4,16
   69 DATA 4,9, 2,26, 2,69, 2,25, 2,69
   71 REM :::: REPEAT
   72 DATA 4,69, 2,26, 2,69, 2,25, 2,69, 2,25, 2,69, 2,23, 2,69, 2,23, 2,60, 4,69, 2,23, 2,25,2,69, 2,28, 2,69, 2,26, 2,69, 2,26, 2,69, 4,69
   75 DATA 2,20, 2,69, 2,23, 2,69, 8,23, 4,23, 6,20, 2,18, 2,14, 2,11, 2,18, 2,18, 2,18, 4,18, 4,16
   78 DATA 4,9, 4,69, 4,69, 12,21, 12,21, 4,21, 4,69, 4,69
   80 REM :::: End Part 1, Start 2
   82 REM :::: C & F SHARP
   83 DATA 4,9
   86 DATA 4,7, 4,69, 4,9, 4,7, 4,69, 4,9, 12,18, 4,18, 4,16, 4,9, 4,6, 4,69, 4,9, 4,6, 4,69, 4,9, 12,16, 4,16, 4,14, 4,9, 4,7, 4,69
   89 DATA 4,9, 4,7, 4,69, 4,9, 12,18, 4,18, 4,16, 4,9, 4,14, 4,16, 4,18, 8,21, 4,19, 2,18, 2,18, 4,18, 2,16, 2,9, 2,69
   92 DATA 4,14, 4,69, 4,9
   93 REM Repeat 8 bars
   95 DATA 4,7, 4,69, 4,9, 4,7, 4,69, 4,9, 12,18, 4,18, 4,16, 4,9, 4,6, 4,69, 4,9, 4,6, 4,69, 4,9, 12,16, 4,16, 4,14, 4,9, 4,7, 4,69
   98 DATA 4,9, 4,7, 4,69, 4,9, 12,18, 4,18, 4,16, 4,9, 4,14, 4,16, 4,18, 8,21, 4,19, 2,18, 2,18, 4,18, 2,16, 2,9, 2,69
  101 DATA 4,14, 4,69, 4,26, 4,14, 4,69
  102 REM :::: A & F natural, B & E     FLAT sostenuto
  104 DATA 12,26, 4,26, 4,27, 4,26, 4,23, 4,23, 4,21, 12,19, 2,23, 2,69, 4,69
  107 DATA 4,23, 2,23, 2,17, 6,19,2,17, 4,17, 4,14, 4,17, 4,15, 4,14, 4,16
  110 DATA 12,26, 4,26, 4,27, 4,26, 4,24, 4,23, 4,21, 12,19
  113 DATA 4,18, 4,69, 4,17, 4,69, 6,19, 2,22, 12,21, 4,21, 4,69, 4,9 
  115 REM START OF PART 3,F SHARP    tranquillo
  116 DATA 4,2
  119 DATA 4,11, 4,69, 4,11, 4,11, 6,14, 2,12, 4,11, 2,2, 2,69, 4,2, 8,2, 4,2, 4,11, 4,69, 4,11, 4,11, 6,16, 2,14, 4,12, 2,6, 2,69, 4,6, 12,6
  122 DATA 4,12, 4,69, 4,12, 4,12, 4,18, 2,16, 4,19, 2,11, 2,69, 4,11, 8,11, 4,11, 4,10, 4,69, 4,9, 12,11
  125 DATA 4,11, 4,69, 4,2
  126 REM repeat 15 bars
  128 DATA 4,11, 4,69, 4,11, 4,11, 6,14, 2,12, 4,11, 2,2, 2,69, 4,2, 8,2, 4,2, 4,11, 4,69, 4,11, 4,11, 6,16, 2,14, 4,12, 2,6, 2,69, 4,6, 12,6
  131 DATA 4,12, 4,69, 4,12, 4,12, 4,18, 2,16, 4,19, 2,11, 2,69, 4,11, 8,11, 4,11, 4,10, 4,69, 4,9, 12,11
  134 DATA 4,11, 2,69, 2,11, 2,12, 2,11
  136 REM (2nd. time gva ad lib.)     F SHARP
  137 DATA 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,6, 2,7, 4,14, 2,14, 2,12, 2,12, 2,69
  140 DATA 2,12, 2,69, 2,12, 2,69, 2,11, 2,69, 2,11, 2,69, 2,11, 2,9, 2,8, 2,9, 2,11, 2,9
  143 DATA 2,9, 2,7, 2,6, 2,7, 4,19, 2,19, 2,18, 2,18, 2,69, 2,18, 2,69, 2,16, 2,69, 2,14, 2,69, 2,14, 2,69
  146 DATA 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,6, 2,7, 4,14, 2,14, 2,12, 2,12, 2,69, 2,12, 2,69
  149 DATA 2,12, 2,69, 2,11, 2,69, 2,11, 2,69, 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,23, 2,69, 2,69, 2,19, 6,18, 2,16, 2,12, 2,9
  150 REM  Ending 1
  152 DATA 4,7, 2,69, 2,11, 2,12, 2,11
  153 REM :::: Repeat 15 bars
  155 DATA 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,6, 2,7, 4,14, 2,14, 2,12, 2,12, 2,69
  158 DATA 2,12, 2,69, 2,12, 2,69, 2,11, 2,69, 2,11, 2,69, 2,11, 2,9, 2,8, 2,9, 2,11, 2,9
  161 DATA 2,9, 2,7, 2,6, 2,7, 4,19, 2,19, 2,18, 2,18, 2,69, 2,18, 2,69, 2,16, 2,69, 2,14, 2,69, 2,14, 2,69
  164 DATA 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,6, 2,7, 4,14, 2,14, 2,12, 2,12, 2,69, 2,12, 2,69
  167 DATA 2,12, 2,69, 2,11, 2,69, 2,11, 2,69, 2,11, 2,9, 2,8, 2,9, 2,11, 2,9, 2,9, 2,7, 2,23, 2,69, 2,69, 2,19, 6,18, 2,16, 2,12, 2,9
  168 REM :::: Ending 2
  170 DATA 4,7, 4,69, 4,69
  171 REM start Part 4 key of C
  173 DATA 12,7, 12,7, 4,12, 2,0, 2,0, 4,0, 4,69, 4,69, 4,0
  174 REM   allargando B FLAT
  176 DATA 2,0, 2,5, 2,9, 2,12, 4,4, 2,16, 2,69, 12,16
  179 DATA 4,13, 4,14, 2,16, 2,69, 12,16, 4,11, 4,12, 4,14, 12,12, 2,0, 2,5, 2,9, 2,12, 4,21, 4,21, 4,19, 4,17, 4,16, 4,17, 2,19, 2,69, 12,19 
  181 REM Ending 1
  182 DATA 4,17, 4,9, 4,14, 4,12, 4,7, 4,9, 12,5, 4,5, 4,69, 4,0
  185 DATA 2,0, 2,5, 2,9, 2,12, 4,4, 2,16, 2,69, 12,16
  188 DATA 4,13, 4,14, 2,16, 2,69, 12,16, 4,11, 4,12, 4,14, 12,12, 2,0, 2,5, 2,9, 2,12, 4,21, 4,21, 4,19, 4,17, 4,16, 4,17, 2,19, 2,69, 12,19 
  190 REM  Ending 2
  191 DATA 4,17, 4,16, 4,14, 12,14, 4,13, 4,69, 4,69, 4,69, 4,24, 2,23
  193 REM :::: b flat line # 194        to be REPEATED
  194 DATA 12,24, 4,24, 6,24, 2,23, 12,24, 4,24, 4,29, 4,21, 6,22, 2,26, 4,16, 2,69
  197 DATA 2,19, 4,19, 4,21, 4,22, 2,26, 4,16, 4,69, 2,19, 2,21, 2,22, 2,23, 12,24, 4,24, 6,24, 2,23, 12,24, 4,24, 4,33, 4,24 
  200 DATA 4,23, 2,29, 4,29, 2,29, 2,28, 4,28, 4,26, 2,26, 2,26, 4,26, 4,24 
  202 REM :: 1st. ENDING
  203 DATA 4,17, 6,24, 2,23
  206 DATA 12,24, 4,24, 6,24, 2,23, 12,24, 4,24, 4,29, 4,21, 6,22, 2,26, 4,16, 2,69
  209 DATA 2,19, 4,19, 4,21, 4,22, 2,26, 4,16, 4,69, 2,19, 2,21, 2,22, 2,23, 12,24, 4,24, 6,24, 2,23, 12,24, 4,24, 4,33, 4,24 
  212 DATA 4,23, 2,29, 4,29, 2,29, 2,28, 4,28, 4,26, 2,26, 2,26, 4,26, 4,24 
  214 REM 2nd. Ending
  215 DATA 4,17, 4,69, 4,69
  217 REM :: start PART 5, C,F,G       are SHARP 
  218 DATA 12,12, 8,14, 4,15, 4,16, 2,13, 2,16, 2,21, 2,25, 2,28, 2,69, 2,26, 2,69, 2,25, 2,69
  221 DATA 4,25, 2,25, 2,24, 2,25, 2,26, 2,25, 2,23, 2,21, 2,20, 2,20, 4,20, 4,21 
  224 DATA 4,18, 4,69, 4,69, 2,30, 2,69, 4,69, 4,69, 2,30, 2,69, 4,69, 4,69, 4,9, 4,11, 4,13
  226 REM cantando & to REPEAT
  227 DATA 4,14, 6,6, 2,9, 4,14, 6,6, 2,9, 12,14, 4,14, 4,13, 4,11, 4,13, 6,4, 2,9
  230 DATA 4,13, 6,4, 2,9, 12,13, 4,13, 4,11, 4,9, 4,8, 4,11, 4,20, 4,29, 4,18, 4,14, 12,13, 4,13, 4,11, 4,9
  232 REM ENDING 1
  233 DATA 4,8, 4,11, 4,18, 4,18, 4,16, 4,8, 12,9, 4,9, 4,11, 4,13
  235 REM repeat
  236 DATA 4,14, 6,6, 2,9, 4,14, 6,6, 2,9, 12,14, 4,14, 4,13, 4,11, 4,13, 6,4, 2,9
  239 DATA 4,13, 6,4, 2,9, 12,13, 4,13, 4,11, 4,9, 4,8, 4,11, 4,20, 4,29, 4,18, 4,14, 12,13, 4,13, 4,11, 4,9
  241 REM ENDING 2
  242 DATA 4,8, 4,9, 4,11, 4,12, 4,13, 4,14, 4,16, 2,16, 2,16, 4,16, 4,16, 4,16,4,16
  244 REM to be repeated,            brillante
  245 DATA 4,25, 4,69, 4,69, 4,25, 4,69, 4,69, 12,25, 4,25, 2,16, 2,20, 2,21, 2,23, 4,69, 4,69, 2,23, 4,69, 4,69, 12,26, 4,26, 2,18, 2,22, 2,23, 2,25, 4,26, 4,69, 4,69 
  247 REM 1st. Ending
  248 DATA 4,26, 4,69, 4,69, 12,30, 4,30, 4,28, 4,25, 12,30, 4,30, 4,28, 4,26, 4,25, 4,69, 4,69, 12,69
  250 REM repeat
  251 DATA 4,25, 4,69, 4,69, 4,25, 4,69, 4,69, 12,25, 4,25, 2,16, 2,20, 2,21, 2,23, 4,69, 4,69, 2,23, 4,69, 4,69, 12,26, 4,26, 2,18, 2,22, 2,23, 2,25, 4,26, 4,69, 4,69 
  253 REM #2 Ending
  254 DATA 4,30, 12,33, 4,33, 4,32, 4,30, 4,30, 4,28, 4,27, 4,26, 4,25, 4,23, 12,21, 4,21 
  255 REM >END.< back to intro 
 2000 DATA 999,999
 2010 RESTORE : GO TO 10
 8000 CLS 
 8010 REM "p16" WAS shooting titles in SINCUS --I changed to use  as a subroutine
 8020 REM SINCUS NEWS NOV/DEC 86
 8030 REM :::: ENTER YOUR TITLE IN LINE 8120 (USE 16 SPACES) REMOVE LINE 4 & START PGM.
 8040 REM by Eddie Duncan-Dunlap,     Bridgen, Mid Glamorgan   
 8050 REM from "Your Sinclair"
 8060 REM reprinted by "ZX-Appeal"-Vancouver Sinclair Users Group 
 8070 REM September 1986
 8090 BORDER 1
 8100 REM changes to effect-RAND   the x value or drop NOT out of  line 8150
 8120 PRINT AT 0,0; INK 7;"**BLUE  DANUBE**"
 8130 FOR x=0 TO 127
 8140 FOR y=0 TO 7
 8150 IF NOT POINT (x,y+168) THEN GO TO 8220
 8160 PLOT 2*x,3*y+80
 8170 PLOT 0,0: DRAW OVER 1;2*x,3*y+79
 8180 PLOT 0,0: DRAW OVER 1;2*x,3*y+79
 8190 PRINT AT 21,0;
 8200 BEEP .01,7
 8210 PLOT 2*x,3*y+81
 8220 NEXT y
 8300 NEXT x
 8305 PAUSE 150
 8310 RETURN 
 8400 REM SCREEN DISPLAY
 8420 BORDER 1: PAPER 1: CLS 
 8425 LET Y=10
 8430 FOR J=1 TO 5
 8435 PLOT 8,Y
 8440 FOR i=1 TO 12
 8445 DRAW INK 7;20,0,.2*PI
 8450 NEXT i
 8455 LET y=y+20
 8460 NEXT j
 8570 FOR i=1 TO 320
 8575 PRINT PAPER 7;" ";
 8580 NEXT i
 8585 PLOT 150,95
 8590 DRAW 30,20
 8595 DRAW -120,0
 8600 DRAW 30,-20
 8605 PLOT 120,115
 8610 DRAW 0,50
 8620 DRAW -40,-40
 8630 DRAW 40,0
 8632 INK 1
 8635 PRINT INK 7;AT 0,0;" ON THE BEAUTIFUL BLUE DANUBE   "
 8640 PRINT INK 7;AT 20,0;" This will be the ENTIRE SCORE  "
 8645 PRINT INK 7;AT 21,1;"(I've improvised some) ENJOY! "
 8650 RETURN 
 9999 SAVE "bluedanube": SAVE "bluedanube": CLS : PRINT AT 10,0;"To VERIFY, rewind tape & PLAY": VERIFY "": VERIFY ""

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