!SOUND
Re: !SOUND
I can't think of any reason why SOUND (and the associated ENVELOPE statement) would not work; the *TEMPO command is also relevant. But this 38-year-old functionality is primitive compared with what can be achieved using a MIDI file, for example.
Code: Select all
!SOUND 1,-15,148,20
Re: !SOUND
Thanks Richard. I tried everything and couldn't get it to work. After you said it should work, then 'presto', it worked! Amazing. Many things I will never understand. I have coded a Morse Code transmitter, and !SOUND was just the proper thing I needed.
[a] input "Enter a message --> "; Message$ if Message$="" then print "Program Complete.": end call MorseCode Message$ goto [a] sub MorseCode Message$ DotLength=1 DashLength=3 DotDashInterval=1 LetterInterval=3 WordInterval=7 Message$=upper$(trim$(Message$)) for x=1 to len(Message$) x$=mid$(Message$, x, 1) select case x$ case "A": LC$=".- " case "B": LC$="-... " case "C": LC$="-.-. " case "D": LC$="-.. " case "E": LC$=". " case "F": LC$="..-. " case "G": LC$="--. " case "H": LC$=".... " case "I": LC$=".. " case "J": LC$=".--- " case "K": LC$="-.- " case "L": LC$=".-.. " case "M": LC$="-- " case "N": LC$="-. " case "O": LC$="--- " case "P": LC$=".--. " case "Q": LC$="--.- " case "R": LC$=".-. " case "S": LC$="... " case "T": LC$="- " case "U": LC$="..- " case "V": LC$="...- " case "W": LC$=".-- " case "X": LC$="-..- " case "Y": LC$="-.-- " case "Z": LC$="--.. " case "1": LC$=".---- " case "2": LC$="..--- " case "3": LC$="...-- " case "4": LC$="....- " case "5": LC$="..... " case "6": LC$="-.... " case "7": LC$="--... " case "8": LC$="---.. " case "9": LC$="----. " case "0": LC$="----- " case " ": LC$="_" case else LC$="" end select for y=1 to len(LC$) y$=mid$(LC$, y, 1) select case y$ case "." 'dot + interval !SOUND 1, -7, 200, DotLength*2 !SOUND 1, 0, 200, DotDashInterval*2 case "-" 'dash + interval !SOUND 1, -7, 200, DashLength*2 !SOUND 1, 0, 200, DotDashInterval*2 case " " 'letter interval !SOUND 1,0, 200,(LetterInterval-DotDashInterval)*2 case "_" 'word interval !SOUND 1, 0, 200,(WordInterval-DotDashInterval)*2 end select next y print x$; next x print end sub '!SOUND 1,-7,200,2 'dot (one unit) '!SOUND 1,-7,200,6 'dash (three units) '!SOUND 1,0,200,2 'interval between dots & dashes (one unit) '!SOUND 1,0,200,6 'interval between letters (three units) '!SOUND 1,0,200,14 'interval between words (seven units)