--- title: "Program Printout: Beethoven" type: "article" slug: "program-printout-beethoven" url: "http://localhost/article/program-printout-beethoven/" markdown_url: "http://localhost/article/program-printout-beethoven.md" published_at: "2020-10-27T17:09:13+00:00" modified_at: "2026-06-21T23:37:29+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "Beethoven is a remarkable program which allows you to produce music from your T/S1000/ZX81. Stephane Crainic of Paris has linked hex values to the tones available from the speaker of your television set and has produced a table allowing you to convert the notes of the musical scale into those values. When you have typed…" category: - name: "Timex Sinclair User" slug: "timex-sinclair-user" taxonomy: "category" url: "http://localhost/category/periodicals/timex-sinclair-user/" post_tag: - name: "1983" slug: "year-1983" taxonomy: "post_tag" url: "http://localhost/tag/year-1983/" - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Full Text" slug: "fulltext" taxonomy: "post_tag" url: "http://localhost/tag/fulltext/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" - name: "Type-in program" slug: "type-in-program" taxonomy: "post_tag" url: "http://localhost/tag/type-in-program/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "Stephane Crainic" slug: "stephane-crainic" taxonomy: "indiv" url: "http://localhost/indiv/stephane-crainic/" publication: "Timex Sinclair User" publication_r: id: 10278 title: "Timex Sinclair User" type: "periodical" url: "http://localhost/periodical/timex-sinclair-user/" authors: "Stephane Crainic" volume: "1" issue: "1" issues_articles: - id: 26866 title: "Timex Sinclair User n1" type: "issue" url: "http://localhost/issue/timex-sinclair-user-n1/" pages: "36" pubdate: "June 1983" archive_link: false volumeissue: "v1n1" article_media: - id: 58442 title: "Beethoven" type: "computer_media" url: "http://localhost/computer_media/beethoven-2/" --- # Program Printout: Beethoven Beethoven is a remarkable program which allows you to produce music from your T/S1000/ZX81. Stephane Crainic of Paris has linked hex values to the tones available from the speaker of your television set and has produced a table allowing you to convert the notes of the musical scale into those values. When you have typed in the program, enter GOTO 110 so that you can read the instructions and the table of scales and hex codes. Then transpose your tune into hex. After reading the instructions and pressing keys to continue, the screen will show 0/9998. Enter LIST 10, EDIT, and alter the A$ to the list of the hex values into which you have converted your tune. Increase the volume of your TV, enter GOTO 1 and your tune will be produced. The notes produced are all off-key but the quality is certainly acceptable when you consider how they are made. Lower-case letters in our listing signify inverse video. ## Source Code: Beethoven ``` 1 REM 7B3D20FDC96E05EAFBB28CDBFECD8240D3FFCD8240185E5D20FD10E8C921B740CD8740237EFEFF20F7C92020 2 REM B8B80B80A5A50B8B808B8B09494949400B8B80B80A5A50B8B808B8B0949494940B8B80B8060606073737308B8B8B094940A5A5A506B6B06B737309494083830949494FF83083836B6B9C9C83839494C3C307A83083836B6B9C9C838394947A7A07A8394A5B8B8C3C3B8B8FF1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B 10 LET A$="... " 20 LET A$=A$+"FFF" 25 LET O=16567 30 FOR I=1 TO LEN A$-1 STEP 2 40 POKE O,(CODE A$(I)-28)*16+CODE A$(I+1)-28 50 LET O=O+1 60 NEXT I 70 FAST 80 LET K=USR 16546 99 STOP 100 SAVE "BEETHOVE%N" 110 PRINT "********************************************BEETHOVEN*******************************************" 120 PRINT ,,"PROGRAMME CREATED BY S. CRAINIC FOR THE SINCLAIR ZX81 +16K" 130 PRINT ,,"EACH SOUND CORRESPONDS TO AN HE-XADECIMAL VALUE. IN ORDER TO OB-TAIN THE DESIRED MELODY,YOU MUSTENTER SUCCESSIVELY IN LINE 10 (LET A$=""... ..."") THE HEXADECI-MAL CODE OF EACH SOUND IN THEIR ORDER IN THE MELODY." 140 PRINT " THE SOUNDS HAVE EQUAL LENGTHS. A LONGER DURATION OF A GIVEN SOUND COULD BE OBTAINED BY ENTE-RING MANY TIMES SUCCESSIVELY THECODE CORRESPONDING TO THE SAME SOUND. INTERVALS ARE OBTAINED BYENTERING THE ""00"" VALUE." 145 PRINT AT 21,0;"HIT A KEY TO CONT." 150 IF INKEY$="" THEN GOTO 150 155 CLS 160 PRINT " NOTE 1ST SCALE 2ND SCALE--------------------------------" 165 DIM B$(2,24) 170 LET B$(1)="F0E5D8CFC3B8ADA59C948BA3" 175 LET B$(2)="7A736B67605A56514B484440" 180 LET C$="C C+;D-D D+;E-E F F+;G-G G+;A-A A+;B-B " 190 FOR I=1 TO 12 200 PRINT C$(I*5-4 TO I*5);TAB 11;B$(1,I*2-1 TO I*2);TAB 24;B$(2,I*2-1 TO I*2) 210 NEXT I 220 PRINT ,,"AS EXAMPLES, SOME MELODIES WERE CODED IN LINES 1000... IF YOU WANT TO ""PLAY"" ONE OF THEM, EN- TER %R%U%N% %1%0%0%0, OR 1010... %>%M%A%K%E% %T%H%E% %T%O%N%E% %O%F% %Y%O%U%R% %T%V% %S%E%T% % % %L%O%U%D%E%R% AND% %N%E%W%L%I%N%E%." 230 PRINT AT 21,0;" HIT A KEY TO CONT " 240 IF INKEY$="" THEN GOTO 240 245 CLS 247 PRINT "EXCUSE ME, I""M WORKING..." 248 FOR I=1 TO 30 249 NEXT I 250 FAST 255 RUN 9990 1000 REM %H%A%P%P%Y% %B%I%R%T%H%D%A%Y 1005 LET A$="B8B800B800A5A500B8B8008B8B00949494940000B8B800B800A5A500B8B8008B8B009494949400B8B800B800606060737373008B8B8B00949400A5A5A5006B6B006B737300949400838300949494" 1009 GOTO 20 1010 REM %4%0%T%H% %S%Y%M%P%H%O%N%Y 1011 LET A$="B8C300C3C300B8C300C3C300B8C300C3C37A7A7A007A8394940094A5B8B800B8C3D8D800D8D8D800C3D800D8D8C3D800D8D800C3D800D8D88383830083949C9C009CB8C3C300C3D8F0F000F0F0007A830083836B6B9C9C83839494C3C3007A830083836B6B9C9C838394947A7A007A8394A5B8B8C3C3B8B8" 1019 GOTO 20 9989 STOP 9990 LET A$="7B3D20FDC906E05EAFBB280CDBFECD8240D3FFCD824018050E050D20FD10E8C921B740CD8740237EFEFF20F7C9" 9991 LET O=16514 9992 FOR I=1 TO LEN A$-1 STEP 2 9993 POKE O,(CODE A$(I)-28)*16+CODE A$(I+1)-28 9994 LET O=O+1 9996 NEXT I 9997 SLOW 9998 CLS ```