Jump to content
IGNORED

help with extended basic error.


Sinphaltimus

Recommended Posts

I have a basic understanding of B.A.S.I.C. and even less so for Extended Basic. Just having fun with the first ever computer I've touched and played with back in '81. Writing a musick/sound program that I wish to share once completed and I'm almost there.

I'm having a very odd issue and I can't seem to figure it out at all.

I'm copying and pasting the following code in to classic99. I know its not efficient but I'm trouble shooting. I've had the character patterns included in the call char statements and I've used data, read. I keep getting the same weird behavior that results in an error.

10 tmp$=0001010303030F06
80 CALL CHAR(33,tmp$)
85 tmp$=C08080000000E46C
86 CALL CHAR(34,tmp$)
87 tmp$=060C0C0C0D191B1B
88 CALL CHAR(35,tmp$)
89 tmp$=383070D89C000000
90 CALL CHAR(36,tmp$)
91 tmp$=AA01800180018055
93 CALL CHAR(37,tmp$)

While pasting I get
*NAME TOO LONG
after line 85 and again after line 91. I've even tried manually typing it in.

I don't know what is wrong.

In the attachedpost-47352-0-19470600-1469834690_thumb.png screen shot you'll see the errors and the lines don't get added.

I am going to try entering this by hand on the actual hardware to see what happens. But I can't load my entire program on it because it's only got 13k free and the program is already larger than that.

Just for the heck of it I'll post the entire program here. Once I get my GUI working I'll tweak some effects and be done.

10 tmp$=0001010303030F06
80 CALL CHAR(33,tmp$)
85 tmp$=C08080000000E46C
86 CALL CHAR(34,tmp$)
87 tmp$=060C0C0C0D191B1B
88 CALL CHAR(35,tmp$)
89 tmp$=383070D89C000000
90 CALL CHAR(36,tmp$)
91 tmp$=AA01800180018055
93 CALL CHAR(37,tmp$)
100 CALL CLEAR
110 CALL SCREEN(15)
120 DATA 7,2,00C4A4948C848484,38,NoteKeys,8,2,00F98888888888F8,39,NoteKeys,9,2,00F9616161616161,40,NoteKeys
130 DATA 10,2,00F00000E00000F0,41,NoteKeys,20,2,0022243838242221,42,NoteKeys
140 DATA 21,2,003E20203C20203E,139,NoteKeys,22,2,0022221408080808,43,NoteKeys
150 DATA 23,2,003C42403C02423C,44,NoteKeys,3,5,000404F403030000,45,volumetxt,4,5,00BDA5A5253D0000,46,volumetxt
160 DATA 5,5,0009090909EF0000,47,volumetxt,6,5,006D6D5545450000,58,volumetxt,7,5,00E01FC01FE00000,59,volumetxt
170 DATA 11,4,7878636263627A78,60,freq,12,4,0000DE129C121200,61,freq,13,4,00007B4272427B00,62,freq
180 DATA 14,4,0000925252D2DE00,63,freq,15,4,0000F486E584F400,64,freq,16,4,0000BDA5A0A4BC00,72,freq
190 DATA 17,4,0F0F2323C3C3CF0F,73,freq,12,7,00000020602E2070,74,noise,13,7,00000097D4B49497,75,noise
200 DATA 14,7,000000B9919190B9,76,noise,15,7,000000EF08EE28EF,77,noise,16,7,0000000F09EF090F,78,noise
210 DATA 21,4,78FCFC7C1C1C3870,79,duration,22,4,001C1212121C0000,80,duration,23,4,0097949795F40000,81,duration
220 DATA 24,4,0019A43C24A40000,82,duration,25,4,00F7424242470000,83,duration,26,4,0079494949790000,84,duration
230 DATA 27,4,0021A16121210100,140,duration,28,4,00F8F8F8F8F8F800,85,duration
240 DATA 3,10,FFFF181818181818,86,Tremolo,4,10,8080007149715149,87,Tremolo,5,10,000000E80DCA08E8,88,Tremolo
250 DATA 6,10,000000BDA5A5A5BD,89,Tremolo,7,10,0000001E121212DE,90,Tremolo,11,9,00007C040810207C,91,SLIDE
260 DATA 12,9,7884807804848478,92,SLIDE,13,9,404040404040407E,93,SLIDE,14,9,3E0808080808083E,94,SLIDE
270 DATA 15,9,3F1010101010103F,95,SLIDE,16,9,1F90909E9090901F,96,SLIDE
280 DATA 17,9,0000183C5A991818,97,SLIDE,11,10,0000183C5A991818,97,SLIDE
290 DATA 17,10,C324181824C30000,98,SLIDE,23,10,78FCCCFCF8C0C0C0,99,PTremolo,24,10,000000F282F311F1,100,PTremolo
300 DATA 25,10,0000009E9090101E,101,PTremolo,26,10,0000009090F79090,102,PTremolo,27,10,0000003824A42438,103,PTremolo
310 DATA 4,16,00456D5545454400,104,ZeroMute,5,16,001711111111E100,105,ZeroMute,6,16,00DE101C10101E00,106,ZeroMute
320 DATA 5,17,1C2222222222221C,107,ZeroMute,13,14,0000000078FCC6C6,108,rtg,14,14,0000000000000072,109,rtg
330 DATA 15,14,0000000000000059,110,rtg,16,14,00000000000000E8,111,rtg,17,14,0000000000000080,112,rtg
340 DATA 13,15,FCD8CCC600EF4949,113,rtg,14,15,8BFA8A8A004B6A5B,114,rtg,15,15,55D5555900C00080,115,rtg
350 DATA 16,15,2D2A28E800000000,116,rtg,17,15,8080808000000000,117,rtg,13,16,494F003B425B4A33,118,rtg
360 DATA 14,16,4A4B00D21A9612D2,119,rtg,15,16,00C000F784E785F4,120,rtg,16,16,00000019A43C24A4,121,rtg
370 DATA 17,16,000000DE9292929E,122,rtg,18,16,000000E090E0A090,123,rtg,9,21,00000F080F010F00,124,spacebar
380 DATA 10,21,0000714A73424200,125,spacebar,11,21,00009E50D0505E00,126,spacebar,12,21,0000F784E784F700,127,spacebar
390 DATA 13,21,000019A53DA52500,128,spacebar,14,21,0000C020C0402000,129,spacebar,15,21,00003C2121213D00,130,spacebar
400 DATA 16,21,0000C92DEB292900,131,spacebar,17,21,00007B4243427B00,132,spacebar,18,21,0000D0109010DE00,133,spacebar
410 DATA 19,21,0000F080F010F000,134,spacebar,24,16,324A4A4A5A390400,135,Quit,25,16,2F26262626CF0000,136,Quit
420 DATA 26,16,7C10101010100000,137,Quit,25,17,7884848484947804,138,Quit
430 FOR DRW=1 TO 87
440 READ COL,ROW,PAT$,CHR,GRP$
450 CALL CHAR(CHR,PAT$)
460 CALL VCHAR(ROW,COL,CHR)
470 NEXT DRW
530 rem CALL KEY(0,KY,STT)
540 rem IF STT=0 THEN 530
550 rem END
560 REM *******************************************************************************************************
580 rem CALL COLOR(3,4,2)
590 rem CALL COLOR(4,4,2)
820 rem DISPLAY AT(23,1):"Musick v0.14 SYMM LLC 2016"
830 READ VOL,DUR,C,D,E,F,G,A,B,KEY,NOTE,MUTE !load default settings on all variables
840 DATA 15,200,262,294,330,349,392,440,494,262,262,0
850 REM PRINT"V";VOL;"D";DUR;"C";C;"D";D;"E";E;"F";F;"G";G;"A";A;"B";B;"K";KEY;"N";NOTE
860 CALL KEY(0,KEY,STATUS)!Check for keyboard input
870 IF STATUS=-1 THEN 1050 !SAME KEY PRESSED
880 IF STATUS=0 THEN 1380 !NO KEY PRESSED
890 REM IF DIFFERENT KEY PRESSED (STATUS=1)
900 IF KEY<>49 THEN 910 :: NOTE=-1 :: GOTO 1380 !one (1) for NOISE = -1
910 IF KEY<>50 THEN 920 :: NOTE=-2 :: GOTO 1380 !two (2) for NOISE = -2
920 IF KEY<>51 THEN 930 :: NOTE=-3 :: GOTO 1380 !three (3) for NOISE = -3
930 IF KEY<>52 THEN 940 :: NOTE=-4 :: GOTO 1380 !four (4) for NOISE = -4
940 IF KEY<>53 THEN 950 :: NOTE=-5 :: GOTO 1380 !five (5) for NOISE = -5
950 IF KEY<>54 THEN 960 :: NOTE=-6 :: GOTO 1380 !six (6) for NOISE = -6
960 IF KEY<>55 THEN 970 :: NOTE=-7 :: GOTO 1380 !seven (7) for NOISE = -7
970 IF KEY<>56 THEN 980 :: NOTE=-8 :: GOTO 1380 !eight (8) for NOISE = 8
980 IF KEY<>67 THEN 990 :: NOTE=C :: GOTO 1380 !Note C © for Frequency = 262
990 IF KEY<>68 THEN 1000 :: NOTE=D :: GOTO 1380 !Note D (d) for Frequency = 294
1000 IF KEY<>69 THEN 1010 :: NOTE=E :: GOTO 1380 !Note E (e) for Frequency = 330
1010 IF KEY<>70 THEN 1020 :: NOTE=F :: GOTO 1380 !Note F (f) for Frequency = 349
1020 IF KEY<>71 THEN 1030 :: NOTE=G :: GOTO 1380 !Note G (g) for Frequency = 392
1030 IF KEY<>65 THEN 1040 :: NOTE=A :: GOTO 1380 !Note A (a) for Frequency = 440
1040 IF KEY<>66 THEN 1050 :: NOTE=B :: GOTO 1380 !Note B (b) for Frequency = 494
1050 IF KEY<>91 THEN 1060 :: NOTE=NOTE-1 :: GOTO 1280 !Open Bracket ([) for NOTE -1 hz Down
1060 IF KEY<>93 THEN 1100 !close Bracket (]) for NOTE +1 hz Up
1070 IF NOTE<=110 THEN 1080 ELSE 1090 !***CHECK TO ENSURE NOISE DOES NOT GET NOTE ADJUSTMENT***
1080 NOTE=110
1090 NOTE=NOTE+1 :: GOTO 1260
1100 IF KEY<>46 THEN 1110 :: DUR=DUR+1 :: GOTO 1310 !PERIOD (.) FOR DUR Up
1110 IF KEY<>44 THEN 1120 :: DUR=DUR-1 :: GOTO 1280 !COMMA (,) FOR DUR Down
1120 IF KEY<>61 THEN 1130 :: VOL=VOL-1 :: GOTO 1350 !MINUS (-) FOR VOL DOWN
1130 IF KEY<>45 THEN 1140 :: VOL=VOL+1 :: GOTO 1330 !EQUALS (=) FOR VOL UP
1140 IF KEY=90 THEN 1400 !Z KEY (z) FOR SLIDE Down
1150 IF KEY=88 THEN 1460 !X KEY (x) FOR SLIDEUp
1160 IF KEY=84 THEN 1530 !T KEY (t) FOR TREMOLO
1170 IF KEY=80 THEN 1770 !P KEY (p) FOR PSYCHODELICK TREMOLO
1180 IF KEY=82 THEN 2040 !R KEY (p) FOR RANDOM NOTE GENERATOR
1190 IF KEY=81 THEN 2140 !Q KEY (q) TO QUIT THE PROGRAM
1200 IF KEY=48 THEN 2100 !ZERO KEY (0) TO MUTE/UNMUTE AUDIO
1210 IF KEY<=159 THEN 1220 ELSE 860 !**********ERROR CHECKING ON KEY PRESSED***********
1220 CALL SOUND(DUR,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 860
1230 REM ********cALL***sOUND***rOUTINE***cHECKS********
1240 IF NOTE<=110 THEN 1250 ELSE 1260 !*check NOTE range lower limit and correct if out of range*
1250 NOTE=110 :: GOTO 1370
1260 IF NOTE>=40000 THEN 1270 ELSE 1370 !*check NOTE range higherlimit and correct if out of range*
1270 NOTE=40000 :: GOTO 1370
1280 IF DUR<=1 THEN 1290 ELSE 1310 !*check DURation range lower limit and correct if out of range*
1290 DUR=1 :: GOTO 1370
1300 REM
1310 IF DUR>=4250 THEN 1320 ELSE 1330 !*check DURation range upper limit and correct if out of range*
1320 DUR=4250
1330 IF VOL>=30 THEN 1340 ELSE 1350 !*check VOLume range upper limit and correct if out of range*
1340 VOL=30 :: GOTO 1370
1350 IF VOL<=0 THEN 1360 ELSE 1380 !*check VOLume range lower limit and correct if out of range*
1360 VOL=0
1370 REM ***CALL SOUND***ROUTINE***
1380 CALL SOUND(DUR,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 860
1390 REM *********sLIDE dOWN rOUTINE*********************
1400 IF NOTE<=210 THEN 1410 ELSE 1420 !check if slide down has valid end range and correct if not.
1410 NOTE=210
1420 FOR SD=1 TO 100 :: NOTE=NOTE-1 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL
1430 DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 860
1440 NEXT SD :: GOTO 860
1450 REM ***********sLIDE uP rOUTINE*****************
1460 IF NOTE>=39900 THEN 1470 ELSE 1480 !check if slide up has valid end range and correct if not.
1470 NOTE=39900
1480 FOR SU=1 TO 100 :: NOTE=NOTE+1
1490 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR
1500 CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 860
1510 NEXT SU :: GOTO 860
1520 REM ***************tREMOLO rOUTINE*****************
1530 IF NOTE<=220 THEN 1540 ELSE 1550
1540 NOTE=221 :: GOTO 1570
1550 IF NOTE>=40000 THEN 1560 ELSE 1570
1560 NOTE=39899
1570 FOR WD=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1580 ELSE 1590
1580 GOSUB 1660
1590 NOTE=NOTE-10 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE
1600 DISPLAY AT(5,20):DUR :: NEXT WD
1610 FOR WU=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1640 ELSE 1620
1620 NOTE=NOTE+10 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE
1630 DISPLAY AT(5,20):DUR :: NEXT WU :: GOTO 1760
1640 GOSUB 1660
1650 REM ********tREMOLO sLIDE rOUTINE***********
1660 IF KEY<>91 THEN 1670 :: NOTE=NOTE-10 :: GOTO 1690 !Open Bracket ([) for NOTE -1 hz Down
1670 IF KEY<>93 THEN 1680 :: NOTE=NOTE+10 :: GOTO 1710 !close Bracket (]) for NOTE +1 hz Up
1680 IF STATUS<>0 THEN 860 :: GOTO 1570
1690 IF NOTE<=220 THEN 1700 ELSE 1710 !t-sLIDE D check NOTE range lower limit and correct if out of range
1700 NOTE=221 :: GOTO 1750
1710 IF NOTE>=40000 THEN 1720 ELSE 1750 !t-sLIDE U check NOTE range higherlimit and correct if out of range
1720 NOTE=39899
1730 REM ***TREMOLO***CALL***SOUND***ROUTINE***
1740 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: RETURN
1750 REM ***TREMOLO***CALL***SOUND***ROUTINE***
1760 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 1530
1770 REM ***************pSYCHODELIC tREMOLO**************
1780 SNOTE=13013 :: TNOTE=31031
1790 IF SNOTE>=40000 THEN 1800 ELSE 1810
1800 SNOTE=40000 :: TNOTE=30000
1810 IF NOTE<=220 THEN 1820 ELSE 1830
1820 NOTE=221 :: GOTO 1850
1830 IF NOTE>=40000 THEN 1840 ELSE 1850
1840 NOTE=39899
1850 FOR WD=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1860 ELSE 1870
1860 GOSUB 1950
1870 NOTE=NOTE-10 :: SNOTE=SNOTE-110 :: TNOTE=TNOTE-100
1880 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: NEXT WD
1890 FOR WU=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1900 ELSE 1910
1900 GOSUB 1950
1910 NOTE=NOTE+10 :: SNOTE=SNOTE+110 :: TNOTE=TNOTE+100
1920 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: NEXT WU
1930 GOTO 2030
1940 REM ********pSYCh***tREMOLO sLIDE rOUTINE***********
1950 IF KEY<>91 THEN 1960 :: NOTE=NOTE-10 :: SNOTE=SNOTE-110 :: TNOTE=TNOTE-100 :: GOTO 1980 !open Bracket ([) for NOTE -1 hz Down
1960 IF KEY<>93 THEN 1970 :: NOTE=NOTE+10 :: SNOTE=SNOTE+110 :: TNOTE=TNOTE+100 :: GOTO 2000 !close Bracket (]) for NOTE +1 hz Up
1970 IF STATUS<>0 THEN 860 :: GOTO 1850
1980 IF NOTE<=220 THEN 1990 ELSE 2000 !pSYCh t-sLIDE Dcheck NOTE range lower limit and correct if out of range
1990 NOTE=221 :: SNOTE=13013 :: TNOTE=31031 :: GOTO 2030
2000 IF NOTE>=40000 THEN 2010 ELSE 2020 !pSYCh t-sLIDE Ucheck NOTE range higherlimit and correct if out of range
2010 NOTE=39899 :: SNOTE=13013 :: TNOTE=31031
2020 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: RETURN
2030 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 1780
2040 REM *************rANDOME nOTE gENERATOR******************
2050 RANDOMIZE
2060 RS1=INT(38000*RND)+111 :: RS2=INT(38000*RND)+111 :: RS3=INT(38000*RND)+111 :: RV1=INT(15*RND):: RV2=INT(15*RND):: RV3=INT(15*RND)
2070 CALL SOUND(DUR,RS1,RV1,RS2,RV2,RS3,RV3):: DISPLAY AT(6,2):RV1 :: DISPLAY AT(5,9):RS1 :: DISPLAY AT(5,20):DUR
2080 CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 860 :: GOTO 2060
2090 REM ********************mute/unmute function*********
2100 IF MUTE<>0 THEN 2130 :: MUTE=1
2110 FOR DELAY=1 TO 10 :: NEXT DELAY :: CALL KEY(0,KEY,STATUS):: IF KEY<>48 THEN 2120 :: GOTO 2100
2120 IF STATUS<>0 THEN 860 ELSE 2110
2130 MUTE=0 :: GOTO 2110
2140 CALL CLEAR
2150 END

 

Link to comment
Share on other sites

Try doing this to it:

 

10 TMP$="0001010303030F06"
80 CALL CHAR(33,TMP$)
85 TMP$="C08080000000E46C"
86 CALL CHAR(34,TMP$)
87 TMP$="060C0C0C0D191B1B"
88 CALL CHAR(35,TMP$)
89 TMP$="383070D89C000000"
90 CALL CHAR(36,TMP$)
91 TMP$="AA01800180018055"

93 CALL CHAR(37,TMP$)

  • Like 2
Link to comment
Share on other sites

As Ksarul says in the post above, you must have quotes around strings. One exception is when using DATA statements. For example:

10 READ A$

20 PRINT A$ !shows that A$ is ABCD

100 DATA ABCD

 

You really don't need the TMP$ here, plus XB lets you define up to 4 characters with one CALL CHAR. So by combining the first 4 strings you can make a single line:

80 CALL CHAR(33,"0001010303030F06C08080000000E46C060C0C0C0D191B1B383070D89C000000")

which does the same thing as your lines 10 - 90 and uses 86 bytes instead of 212.

With tricks like this you should be able to shrink your program to fit the unexpanded console. Of course, once you shrink it you will think of more features to add which will make it too large again!

  • Like 2
Link to comment
Share on other sites

Try doing this to it:

 

10 TMP$="0001010303030F06"
80 CALL CHAR(33,TMP$)
85 TMP$="C08080000000E46C"
86 CALL CHAR(34,TMP$)
87 TMP$="060C0C0C0D191B1B"
88 CALL CHAR(35,TMP$)
89 TMP$="383070D89C000000"
90 CALL CHAR(36,TMP$)
91 TMP$="AA01800180018055"

93 CALL CHAR(37,TMP$)

*FACEPALM* - Thank you. I should probably "sleep on it" before asking in forums. I feel so silly now.

Edited by Sinphaltimus
  • Like 2
Link to comment
Share on other sites

As Ksarul says in the post above, you must have quotes around strings. One exception is when using DATA statements. For example:

10 READ A$

20 PRINT A$ !shows that A$ is ABCD

100 DATA ABCD

 

You really don't need the TMP$ here, plus XB lets you define up to 4 characters with one CALL CHAR. So by combining the first 4 strings you can make a single line:

80 CALL CHAR(33,"0001010303030F06C08080000000E46C060C0C0C0D191B1B383070D89C000000")

which does the same thing as your lines 10 - 90 and uses 86 bytes instead of 212.

With tricks like this you should be able to shrink your program to fit the unexpanded console. Of course, once you shrink it you will think of more features to add which will make it too large again!

Thank much. Yeah the code example was just me simplifying it to try and see the obvious I missed (no "") and yet I still missed it. I'm using data statements in the rest of the code, what I think happened was that I had a typo originally in the data statement so when I broke out those codes above i totally missed " " and was pretty confused. Thank so much for you help.

Link to comment
Share on other sites

I wouldn't worry about it too much, Sinphaltimus--that's what we're here for. Most of us have gone deep into the weeds at times and had the forum folks pull us back to where we needed to be to solve the problem. :) The record of what happened here will also exist online now to help the next person to make the same mistake--and it will happen. I've seen troubleshooting threads resurrected after several years because another person fell into the same hole. . .and found the existing thread to hoist themselves out of it.

Link to comment
Share on other sites

Welcome to the forum!!

 

No silly questions here, save those that go unasked. Youre in the presence of some awesome people here (youve already met a couple of them), so ask away, and have no fear of judgment.

 

Cant wait to see your final program. :)

Edited by Opry99er
Link to comment
Share on other sites

Yooze guyz are awesome. OK.

I've been keeping a cheesey dev blog on my Fb page - the posting is open to the public if you want to follow along:
https://www.facebook.com/SExmortus/posts/10206543271892515

I'm taking a break to get some other tasks completed that aren't computer related.

 

Next I need to tweak the Psycho_D tremolo effect and some noise effects. THEN I will optimize everything by combining commands in to less lines of code>
I want to save a commented version before removing all comments and rem statements in order to shrink the program down enough to fit on the original non-modified hardware (16k ram). I'm having a hard time finding a 32k upgrade that's affordable or the parts/instructions to make one. The email address of the most popular one no longer works and all links are broken :(

Anyway, back on track - Here is my code so far.l It is fully functional with all features in and working.



100 NLOOP=1
110 PRINT " ************************"
120 PRINT "Musick v0.17 SYMM LLC 2016"
130 PRINT " ************************"
140 PRINT
150 PRINT
160 PRINT
170 PRINT "L key toggles sound Loop"
180 PRINT " on/off."
190 PRINT
200 PRINT "Please wait loading."
210 PRINT
220 PRINT
230 PRINT "len@screamingyeti.org"
240 PRINT
250 PRINT
260 PRINT
270 PRINT
280 PRINT
290 PRINT
300 PRINT
310 PRINT
320 PRINT
330 PRINT
340 FOR TDELAY=1 TO 1000
350 NEXT TDELAY
360 DATA 7,2,00C4A4948C848484,38,NoteKeys,8,2,00F98888888888F8,39,NoteKeys,9,2,00F9616161616161,40,NoteKeys
370 DATA 10,2,00F00000E00000F0,41,NoteKeys,20,2,0022243838242221,42,NoteKeys
380 DATA 21,2,003E20203C20203E,139,NoteKeys,22,2,0022221408080808,43,NoteKeys
390 DATA 23,2,003C42403C02423C,44,NoteKeys,3,5,000404F403030000,45,volumetxt,4,5,00BDA5A5253D0000,46,volumetxt
400 DATA 5,5,0009090909EF0000,47,volumetxt,6,5,006D6D5545450000,58,volumetxt,7,5,00E01FC01FE00000,59,volumetxt
410 DATA 11,4,7878636263627A78,60,freq,12,4,0000DE129C121200,61,freq,13,4,00007B4272427B00,62,freq
420 DATA 14,4,0000925252D2DE00,63,freq,15,4,0000F486E584F400,64,freq,16,4,0000BDA5A0A4BC00,72,freq
430 DATA 17,4,0F0F2323C3C3CF0F,73,freq,12,7,00000020602E2070,74,noise,13,7,00000097D4B49497,75,noise
440 DATA 14,7,000000B9919190B9,76,noise,15,7,000000EF08EE28EF,77,noise,16,7,0000000F09EF090F,78,noise
450 DATA 21,4,78FCFC7C1C1C3870,79,duration,22,4,001C1212121C0000,80,duration,23,4,0097949795F40000,81,duration
460 DATA 24,4,0019A43C24A40000,82,duration,25,4,00F7424242470000,83,duration,26,4,0079494949790000,84,duration
470 DATA 27,4,0021A16121210100,140,duration,28,4,00F8F8F8F8F8F800,85,duration
480 DATA 3,10,FFFF181818181818,86,Tremolo,4,10,8080007149715149,87,Tremolo,5,10,000000E80DCA08E8,88,Tremolo
490 DATA 6,10,000000BDA5A5A5BD,89,Tremolo,7,10,0000001E121212DE,90,Tremolo,11,9,00007C040810207C,91,SLIDE
500 DATA 12,9,7884807804848478,92,SLIDE,13,9,404040404040407E,93,SLIDE,14,9,3E0808080808083E,94,SLIDE
510 DATA 15,9,3F1010101010103F,95,SLIDE,16,9,1F90909E9090901F,96,SLIDE
520 DATA 17,9,0000183C5A991818,97,SLIDE,11,10,0000183C5A991818,97,SLIDE
530 DATA 17,10,C324181824C30000,98,SLIDE,23,10,78FCCCFCF8C0C0C0,99,PTremolo,24,10,000000F282F311F1,100,PTremolo
540 DATA 25,10,0000009E9090101E,101,PTremolo,26,10,0000009090F79090,102,PTremolo,27,10,0000003824A42438,103,PTremolo
550 DATA 4,16,00456D5545454400,104,ZeroMute,5,16,001711111111E100,105,ZeroMute,6,16,00DE101C10101E00,106,ZeroMute
560 DATA 5,17,1C2222222222221C,107,ZeroMute,13,14,0000000078FCC6C6,108,rtg,14,14,0000000000000072,109,rtg
570 DATA 15,14,0000000000000059,110,rtg,16,14,00000000000000E8,111,rtg,17,14,0000000000000080,112,rtg
580 DATA 13,15,FCD8CCC600EF4949,113,rtg,14,15,8BFA8A8A004B6A5B,114,rtg,15,15,55D5555900C00080,115,rtg
590 DATA 16,15,2D2A28E800000000,116,rtg,17,15,8080808000000000,117,rtg,13,16,494F003B425B4A33,118,rtg
600 DATA 14,16,4A4B00D21A9612D2,119,rtg,15,16,00C000F784E785F4,120,rtg,16,16,00000019A43C24A4,121,rtg
610 DATA 17,16,000000DE9292929E,122,rtg,18,16,000000E090E0A090,123,rtg,9,21,00000F080F010F00,124,spacebar
620 DATA 10,21,0000714A73424200,125,spacebar,11,21,00009E50D0505E00,126,spacebar,12,21,0000F784E784F700,127,spacebar
630 DATA 13,21,000019A53DA52500,128,spacebar,14,21,0000C020C0402000,129,spacebar,15,21,00003C2121213D00,130,spacebar
640 DATA 16,21,0000C92DEB292900,131,spacebar,17,21,00007B4243427B00,132,spacebar,18,21,0000D0109010DE00,133,spacebar
650 DATA 19,21,0000F080F010F000,134,spacebar,24,16,324A4A4A5A390400,135,Quit,25,16,2F26262626CF0000,136,Quit
660 DATA 26,16,7C10101010100000,137,Quit,25,17,7884848484947804,138,Quit
670 CALL CLEAR :: RESTORE 680
680 DATA 33,07060C0C1818187F,34,33316163666CC8D8,35,8000000000001030,36,60C08080C0E00000,37,FFDBA5DBDBA5DBFF
690 FOR DRW=1 TO 5
700 READ CHR,PAT$
710 CALL CHAR(CHR,PAT$)
720 NEXT DRW
730 CALL SCREEN(15)
740 CLR=13 :: IY=1 :: IX=11
750 CALL SPRITE(#1,37,CLR,IY*8,IX*8)
760 CALL DELSPRITE(#1)
770 DISPLAY AT(2,10):"CDEFGAB"
780 RESTORE 360
790 FOR DRW=1 TO 87
800 READ COL,ROW,PAT$,CHR,GRP$
810 CALL CHAR(CHR,PAT$)
820 CALL VCHAR(ROW,COL,CHR)
830 NEXT DRW
840 TCHR=9
850 CALL SPRITE(#10,33,2,20*8,19*8)
860 CALL SPRITE(#11,34,2,21*8,19*8)
870 CALL SPRITE(#12,35,2,20*8,20*8)
880 CALL SPRITE(#13,36,2,21*8,20*8)
890 RESTORE 920
900 REM DISPLAY AT(23,1):"Musick v0.16 SYMM LLC 2016"
910 READ VOL,DUR,C,D,E,F,G,A,B,KEY,NOTE,MUTE !load default settings on all variables
920 DATA 15,200,262,294,330,349,392,440,494,262,262,0
930 CALL KEY(0,KEY,STATUS)!Check for keyboard input
940 IF STATUS=-1 THEN 1140 !SAME KEY PRESSED
950 IF STATUS=0 THEN 960 ELSE 980 !NO KEY PRESSED CHECK FOR LOOP ELSE CONTINUE
960 IF NLOOP=1 THEN 1500 ELSE 930 !IF NO KEY PRESSED AND NLOOENABLED - PLAY SOUND AGAIN ELSE GO BACK TO KEY PRESS
970 REM IF DIFFERENT KEY PRESSED (STATUS=1)
980 CALL DELSPRITE(#1)
990 IF KEY<>49 THEN 1000 :: NOTE=-1 :: GOTO 1500 !one (1) for NOISE = -1
1000 IF KEY<>50 THEN 1010 :: NOTE=-2 :: GOTO 1500 !two (2) for NOISE = -2
1010 IF KEY<>51 THEN 1020 :: NOTE=-3 :: GOTO 1500 !three (3) for NOISE = -3
1020 IF KEY<>52 THEN 1030 :: NOTE=-4 :: GOTO 1500 !four (4) for NOISE = -4
1030 IF KEY<>53 THEN 1040 :: NOTE=-5 :: GOTO 1500 !five (5) for NOISE = -5
1040 IF KEY<>54 THEN 1050 :: NOTE=-6 :: GOTO 1500 !six (6) for NOISE = -6
1050 IF KEY<>55 THEN 1060 :: NOTE=-7 :: GOTO 1500 !seven (7) for NOISE = -7
1060 IF KEY<>56 THEN 1070 :: NOTE=-8 :: GOTO 1500 !eight (8) for NOISE = 8
1070 IF KEY<>67 THEN 1080 :: NOTE=C :: GOTO 1500 !Note C © for Frequency = 262
1080 IF KEY<>68 THEN 1090 :: NOTE=D :: GOTO 1500 !Note D (d) for Frequency = 294
1090 IF KEY<>69 THEN 1100 :: NOTE=E :: GOTO 1500 !Note E (e) for Frequency = 330
1100 IF KEY<>70 THEN 1110 :: NOTE=F :: GOTO 1500 !Note F (f) for Frequency = 349
1110 IF KEY<>71 THEN 1120 :: NOTE=G :: GOTO 1500 !Note G (g) for Frequency = 392
1120 IF KEY<>65 THEN 1130 :: NOTE=A :: GOTO 1500 !Note A (a) for Frequency = 440
1130 IF KEY<>66 THEN 1140 :: NOTE=B :: GOTO 1500 !Note B (b) for Frequency = 494
1140 IF KEY<>91 THEN 1150 :: NOTE=NOTE-1 :: GOTO 1400 !Open Bracket ([) for NOTE -1 hz Down
1150 IF KEY<>93 THEN 1190 !close Bracket (]) for NOTE +1 hz Up
1160 IF NOTE<=110 THEN 1170 ELSE 1180 !***CHECK TO ENSURE NOISE DOES NOT GET NOTE ADJUSTMENT***
1170 NOTE=110
1180 NOTE=NOTE+1 :: GOTO 1380
1190 IF KEY<>46 THEN 1200 :: DUR=DUR+1 :: GOTO 1430 !PERIOD (.) FOR DUR Up
1200 IF KEY<>44 THEN 1210 :: DUR=DUR-1 :: GOTO 1400 !COMMA (,) FOR DUR Down
1210 IF KEY<>61 THEN 1220 :: VOL=VOL-1 :: GOTO 1470 !MINUS (-) FOR VOL DOWN
1220 IF KEY<>45 THEN 1230 :: VOL=VOL+1 :: GOTO 1450 !EQUALS (=) FOR VOL UP
1230 IF KEY=90 THEN 1710 !Z KEY (z) FOR SLIDE Down
1240 IF KEY=88 THEN 1800 !X KEY (x) FOR SLIDEUp
1250 IF KEY=84 THEN 1900 !T KEY (t) FOR TREMOLO
1260 IF KEY=80 THEN 2180 !P KEY (p) FOR PSYCHODELICK TREMOLO
1270 IF KEY=82 THEN 2480 !R KEY ® FOR RANDOM NOTE GENERATOR
1280 IF KEY=81 THEN 2640 !Q KEY (q) TO QUIT THE PROGRAM
1290 IF KEY=48 THEN 2570 !ZERO KEY (0) TO MUTE/UNMUTE AUDIO
1300 IF KEY=76 THEN 1310 ELSE 1330 ! toggle loop
1310 IF NLOOP=0 THEN NLOOP=1 :: GOTO 1330
1320 IF NLOOP=1 THEN NLOOP=0
1330 IF KEY<=159 THEN 1340 ELSE 930 !**********ERROR CHECKING ON KEY PRESSED***********
1340 CALL SOUND(DUR,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 930
1350 REM ********cALL***sOUND***rOUTINE***cHECKS********
1360 IF NOTE<=110 THEN 1370 ELSE 1380 !*check NOTE range lower limit and correct if out of range*
1370 NOTE=110 :: GOTO 1490
1380 IF NOTE>=40000 THEN 1390 ELSE 1490 !*check NOTE range higherlimit and correct if out of range*
1390 NOTE=40000 :: GOTO 1490
1400 IF DUR<=1 THEN 1410 ELSE 1430 !*check DURation range lower limit and correct if out of range*
1410 DUR=1 :: GOTO 1490
1420 REM
1430 IF DUR>=4250 THEN 1440 ELSE 1450 !*check DURation range upper limit and correct if out of range*
1440 DUR=4250
1450 IF VOL>=30 THEN 1460 ELSE 1470 !*check VOLume range upper limit and correct if out of range*
1460 VOL=30 :: GOTO 1490
1470 IF VOL<=0 THEN 1480 ELSE 1500 !*check VOLume range lower limit and correct if out of range*
1480 VOL=0
1490 REM ***CALL SOUND***ROUTINE***
1500 IF NOTE<>262 THEN 1520
1510 IY=1 :: IX=11 :: GOTO 1650
1520 IF NOTE<>294 THEN 1540
1530 IY=1 :: IX=12 :: GOTO 1650
1540 IF NOTE<>330 THEN 1560
1550 IY=1 :: IX=13 :: GOTO 1650
1560 IF NOTE<>349 THEN 1580
1570 IY=1 :: IX=14 :: GOTO 1650
1580 IF NOTE<>392 THEN 1600
1590 IY=1 :: IX=15 :: GOTO 1650
1600 IF NOTE<>440 THEN 1620
1610 IY=1 :: IX=16 :: GOTO 1650
1620 IF NOTE<>494 THEN 1640
1630 IY=1 :: IX=17 :: GOTO 1650
1640 CLR=1 :: GOTO 1660
1650 CLR=4
1660 CALL SPRITE(#1,37,CLR,IY*8,IX*8)
1670 FR=20 :: FC=19
1680 GOSUB 2670
1690 CALL SOUND(DUR,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 930
1700 REM *********sLIDE dOWN rOUTINE*********************
1710 FR=10 :: FC=13
1720 GOSUB 2670
1730 IF NOTE<=210 THEN 1740 ELSE 1750 !check if slide down has valid end range and correct if not.
1740 NOTE=210
1750 FOR SD=1 TO 100 :: NOTE=NOTE-1 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL
1760 DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1770 ELSE 1780
1770 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
1780 NEXT SD :: CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
1790 REM ***********sLIDE uP rOUTINE*****************
1800 FR=10 :: FC=13
1810 GOSUB 2670
1820 IF NOTE>=39900 THEN 1830 ELSE 1840 !check if slide up has valid end range and correct if not.
1830 NOTE=39900
1840 FOR SU=1 TO 100 :: NOTE=NOTE+1
1850 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR
1860 CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1870 ELSE 1880
1870 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
1880 NEXT SU :: CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
1890 REM ***************tREMOLO rOUTINE*****************
1900 FR=7 :: FC=4
1910 GOSUB 2670
1920 IF NOTE<=220 THEN 1930 ELSE 1940
1930 NOTE=221 :: GOTO 1960
1940 IF NOTE>=40000 THEN 1950 ELSE 1960
1950 NOTE=39899
1960 FOR WD=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 1970 ELSE 1980
1970 GOSUB 2050
1980 NOTE=NOTE-10 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE
1990 DISPLAY AT(5,20):DUR :: NEXT WD
2000 FOR WU=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 2030 ELSE 2010
2010 NOTE=NOTE+10 :: CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE
2020 DISPLAY AT(5,20):DUR :: NEXT WU :: GOTO 2170
2030 GOSUB 2050
2040 REM ********tREMOLO sLIDE rOUTINE***********
2050 IF KEY<>91 THEN 2060 :: NOTE=NOTE-10 :: GOTO 2100 !Open Bracket ([) for NOTE -1 hz Down
2060 IF KEY<>93 THEN 2070 :: NOTE=NOTE+10 :: GOTO 2120 !close Bracket (]) for NOTE +1 hz Up
2070 IF STATUS<>0 THEN 2080 ELSE 2090
2080 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
2090 GOTO 1960
2100 IF NOTE<=220 THEN 2110 ELSE 2120 !t-sLIDE D check NOTE range lower limit and correct if out of range
2110 NOTE=221 :: GOTO 2160
2120 IF NOTE>=40000 THEN 2130 ELSE 2160 !t-sLIDE U check NOTE range higherlimit and correct if out of range
2130 NOTE=39899
2140 REM ***TREMOLO***CALL***SOUND***ROUTINE***
2150 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: RETURN
2160 REM ***TREMOLO***CALL***SOUND***ROUTINE***
2170 CALL SOUND(1,NOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 1920
2180 REM ***************pSYCHODELIC tREMOLO**************
2190 FR=7 :: FC=24
2200 GOSUB 2670
2210 SNOTE=13013 :: TNOTE=31031
2220 IF SNOTE>=40000 THEN 2230 ELSE 2240
2230 SNOTE=40000 :: TNOTE=30000
2240 IF NOTE<=220 THEN 2250 ELSE 2260
2250 NOTE=221 :: GOTO 2280
2260 IF NOTE>=40000 THEN 2270 ELSE 2280
2270 NOTE=39899
2280 FOR WD=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 2290 ELSE 2300
2290 GOSUB 2380
2300 NOTE=NOTE-10 :: SNOTE=SNOTE-110 :: TNOTE=TNOTE-100
2310 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: NEXT WD
2320 FOR WU=1 TO 10 :: CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 2330 ELSE 2340
2330 GOSUB 2380
2340 NOTE=NOTE+10 :: SNOTE=SNOTE+110 :: TNOTE=TNOTE+100
2350 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: NEXT WU
2360 GOTO 2470
2370 REM ********pSYCh***tREMOLO sLIDE rOUTINE***********
2380 IF KEY<>91 THEN 2390 :: NOTE=NOTE-10 :: SNOTE=SNOTE-110 :: TNOTE=TNOTE-100 :: GOTO 2420 !open Bracket ([) for NOTE -1 hz Down
2390 IF KEY<>93 THEN 2400 :: NOTE=NOTE+10 :: SNOTE=SNOTE+110 :: TNOTE=TNOTE+100 :: GOTO 2440 !close Bracket (]) for NOTE +1 hz Up
2400 IF STATUS<>0 THEN 2410 ELSE 2280
2410 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
2420 IF NOTE<=220 THEN 2430 ELSE 2440 !pSYCh t-sLIDE Dcheck NOTE range lower limit and correct if out of range
2430 NOTE=221 :: SNOTE=13013 :: TNOTE=31031 :: GOTO 2470
2440 IF NOTE>=40000 THEN 2450 ELSE 2460 !pSYCh t-sLIDE Ucheck NOTE range higherlimit and correct if out of range
2450 NOTE=39899 :: SNOTE=13013 :: TNOTE=31031
2460 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: RETURN
2470 CALL SOUND(1,NOTE,VOL,SNOTE,VOL,TNOTE,VOL):: DISPLAY AT(6,2):VOL :: DISPLAY AT(5,9):NOTE :: DISPLAY AT(5,20):DUR :: GOTO 2210
2480 REM *************rANDOME nOTE gENERATOR******************
2490 RANDOMIZE
2500 FR=13 :: FC=16
2510 GOSUB 2670
2520 RS1=INT(38000*RND)+111 :: RS2=INT(38000*RND)+111 :: RS3=INT(38000*RND)+111 :: RV1=INT(15*RND):: RV2=INT(15*RND):: RV3=INT(15*RND)
2530 CALL SOUND(DUR,RS1,RV1,RS2,RV2,RS3,RV3):: DISPLAY AT(6,2):RV1 :: DISPLAY AT(5,9):RS1 :: DISPLAY AT(5,20):DUR
2540 CALL KEY(0,KEY,STATUS):: IF STATUS<>0 THEN 2550 ELSE 2520
2550 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
2560 REM ********************mute/unmute function*********
2570 FR=13 :: FC=4
2580 GOSUB 2670
2590 IF MUTE<>0 THEN 2630 :: MUTE=1
2600 FOR DELAY=1 TO 10 :: NEXT DELAY :: CALL KEY(0,KEY,STATUS):: IF KEY<>48 THEN 2610 :: GOTO 2570
2610 IF STATUS<>0 THEN 2620 ELSE 2600
2620 CALL DELSPRITE(#6,#7,#8,#9):: GOTO 930
2630 MUTE=0 :: GOTO 2600
2640 CALL CLEAR
2650 END
2660 REM ************************FLOATERFX*********************
2670 CALL SPRITE(#6,33,13,FR*8,FC*8)
2680 CALL SPRITE(#7,34,13,(FR+1)*8,FC*8)
2690 CALL SPRITE(#8,35,13,FR*8,(FC+1)*8)
2700 CALL SPRITE(#9,36,13,(FR+1)*8,(FC+1)*8)
2710 RETURN
  • Like 1
Link to comment
Share on other sites

On 32K upgrades, there are a couple of threads here devoted to just that subject. If you look in the Project of the Quarter thread, there is one to install inside the keyboard, and if you look in the Dev subforum, you will find a WIP thread for a sideport 32K expansion.

Link to comment
Share on other sites

On 32K upgrades, there are a couple of threads here devoted to just that subject. If you look in the Project of the Quarter thread, there is one to install inside the keyboard, and if you look in the Dev subforum, you will find a WIP thread for a sideport 32K expansion.

I'll have to pay more attention. I'm pretty sure the internal one is dead. I've read through them but the guy to get parts from seems gone. That was last week - maybe I followed the wrong topic I dunno.

Link to comment
Share on other sites

Here's a link to the forum post containg the finished program. Thanks all for helping me get over this minor issue (me).

In a few weeks I want to start another audio program dealing with the speech synth on unmodded hardware. I'll start a new topic for that one.

http://atariage.com/forums/topic/255396-new-musick-program/

Link to comment
Share on other sites

What is with the SMILEY FACES in listing?

If you copy and paste it all in to a plain text editor, the smiley faces go away and are replaced by proper text.

 

Although that code is old. Follow the link in my most recently reply before this one to a thread with an updated version..

Edited by Sinphaltimus
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...