--- title: "On the Beautiful Blue Danube" id: 72282 type: "computer_media" slug: "on-the-beautiful-blue-danube" url: "http://localhost/computer_media/on-the-beautiful-blue-danube/" markdown_url: "http://localhost/computer_media/on-the-beautiful-blue-danube.md" published_at: "2026-10-23T07:47:21+00:00" modified_at: "2026-10-23T07:47:21+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/bluedanube-2.png" excerpt: "Plays an arrangement of Strauss's Blue Danube waltz with BEEP from DATA, after a shooting-letters title and a picture of a sailboat on the river." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "John Colonna" slug: "john-colonna" taxonomy: "indiv" url: "http://localhost/indiv/john-colonna/" - name: "William Tilley" slug: "william-tilley" taxonomy: "indiv" url: "http://localhost/indiv/william-tilley/" genre: - name: "Music" slug: "music" taxonomy: "genre" url: "http://localhost/type/music/" media_contents: - id: 72439 title: "SINCUS Exchange Tape 104" type: "computer_media" url: "http://localhost/computer_media/sincus-exchange-tape-104/" media_type: "Program" programmers: - name: "William Tilley" slug: "william-tilley" taxonomy: "indiv" url: "http://localhost/indiv/william-tilley/" - name: "John Colonna" slug: "john-colonna" taxonomy: "indiv" url: "http://localhost/indiv/john-colonna/" download_url: "https://archive.org/download/timex-sinclair-software-archive/On%20the%20Beautiful%20Blue%20Danube%20%28198x%29%28Tilley%2C%20William%3B%20Colonna%2C%20John%29%28TS2068%29%28US%29%28Program%29.zip" tsrun_member: "On the Beautiful Blue Danube (198x)(Tilley, William; Colonna, John)(TS2068)(US)(Program)/On the Beautiful Blue Danube (198x)(Tilley, William; Colonna, John)(TS2068)(US)(Program).tap" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/10/bluedanube-2.png" related_content: - id: 55726 title: "Santa" type: "computer_media" url: "http://localhost/computer_media/santa/" - id: 24807 title: "Sinclair Computer Users Society (SINCUS)" type: "usergroup" url: "http://localhost/usergroup/sinclair-computer-users-society-sincus/" media_type_tags: "Music" license: false --- # On the Beautiful Blue Danube 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. ## 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 "" ```