Sections
Calendar
April 2024
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
             

Members
Not logged in.
 

The TI-99 Speech Synthesizer Sings
Video (2:56)

I thought I would put my TI to the task of generating a random list of words and singing them through the Speech Synthesizer to notes in the Newline99 theme song. Here is the yield of that fantastical adventure. Hope you enjoy this silly little side quest.

I used TI BASIC to randomly generate words in certain patterns, and with the Terminal Emulator II cartridge inserted, it was able to pronouce them at predetermined pitches. It ended up being lots of fun.

BABBLE (TI BASIC with Speech Synthesizer & Terminal Emulator II inserted)

This program generates random words and sings them at the predesignated pitches.

100 RANDOMIZE(5) 110 CA=1 120 CALL CLEAR 130 OPEN #1:"SPEECH",OUTPUT 140 PRINT "PREP TABLE..." 150 PRINT "0%---"; 160 DIM ST$(70) 170 FOR A=1 TO 70 180 READ ST$(A) 190 NEXT A 200 PRINT "25%---"; 210 DIM MV$(49) 220 FOR A=1 TO 49 230 READ MV$(A) 240 NEXT A 250 PRINT "50%---"; 260 DIM FC$(54) 270 FOR A=1 TO 54 280 READ FC$(A) 290 NEXT A 300 PRINT "75%---"; 310 DIM VT$(21) 320 FOR A=1 TO 21 330 READ VT$(A) 340 NEXT A 350 PRINT "100%" 360 DIM TON$(70) 370 FOR A=1 TO 70 380 READ TON$(A) 390 NEXT A 400 CALL CLEAR 410 PAT=INT(RND*8)+1 420 ON PAT GOSUB 500,520,540,560,590,620,500,520 430 IF CA<=70 THEN 450 440 CA=1 450 PRINT #1:"//";TON$(CA);" 000" 460 CA=CA+1 470 PRINT WD$;" "; 480 PRINT #1:WD$ 490 GOTO 410 500 WD$=ST$(INT(RND*70)+1)&MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1)&VT$(INT(RND*21)+1) 510 RETURN 520 WD$=ST$(INT(RND*70)+1)&MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1) 530 RETURN 540 WD$=MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1) 550 RETURN 560 WD$=ST$(INT(RND*70)+1)&MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1)&VT$(INT(RND*21)+1) 570 WD$=WD$&FC$(INT(RND*54)+1)&VT$(INT(RND*21)+1) 580 RETURN 590 WD$=ST$(INT(RND*70)+1)&MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1)&VT$(INT(RND*21)+1) 600 WD$=WD$&FC$(INT(RND*54)+1) 610 RETURN 620 WD$=MV$(INT(RND*49)+1)&FC$(INT(RND*54)+1)&VT$(INT(RND*21)+1) 630 RETURN 640 DATA B,BR,BL,C,CH,CL,CR,D,DR,F,FL,FR,G,GL,GR,H,J,K,L,M,N,P,PH,PL,PR,QU,R,S,SC,SCR,SH,SK,SL 650 DATA SM,SN,SP,SPR,SQU,ST,STR,SW,T,TH,THR,TR,V,W,WH,WR,Y,Z 660 DATA B,C,D,F,G,H,J,K,L,M,N,P,R,S,T,V,W,Y,Z 670 DATA A,E,I,O,U,AI,AU,E,EA,EE,EI,EAU,I,IE,O,OA,OI,OO,OU,U 680 DATA A,E,I,O,U,AI,AU,E,EA,EE,EI,I,IE,O,OA,OI,OO,OU,U,EO,UO,UE,A,E,I,EA,O,OU,U 690 DATA B,BB,CH,CK,D,DD,F,FF,G,G,GHT,K,L,LL,LK,LP,LT,M,MM,N,NN,P,PP,R,RG,RR,RT,S,SH,SK 700 DATA SS,T,TCH,TH,V,W,X,Z,B,D,F,G,K,L,M,N,P,R,S,T,V,W,X,Z 710 DATA A,AY,E,EY,I,IA,IO,O,OU,OY,UE,UY,Y,A,E,E,EY,E,E,Y,Y 720 REM TONES 730 DATA 43,37,36,35,34,30,40,49,43,37,36,35,34,30,27,26 740 DATA 43,37,36,35,34,30,40,49,43,37,36,35,34,30,27,26 750 DATA 44,37,30,46,40,35,34,49,56,49,43,46,40,34,37,30,40,56,49,17 760 DATA 44,37,30,46,40,35,34,49,34,49,34,49,34,49,34,17,63,49

Want to make your own speech sing?

You can PRINT a pitch indicator to the speech device on the line right before the words that are sung at that pitch, with the text "//xx 000", substituting the xx with a pitch value, like this:

10 OPEN #1:"SPEECH",OUTPUT 20 PRINT #1:"//17 000" 30 PRINT #1:"THIS IS THE NOTE CALLED MIDDLE C." 40 PRINT #1:"THIS IS HOW IT SOUNDS TO ME."

Refer to the below chart for the pitch value to use for certain notes. The speech synthesizer was not designed to sing, so many of the pitches are very out of tune, the degree to which being indicated in the table below as well. A pitch of 00 is a pitch-less "whisper" sound.

PitchNoteOff tune (cents)Freq.
01C♯5-40542
02C5-45508
03B4-45478
04A440451
05A4-45428
06G♯4-35406
07G4-25387
08F♯4-5369
09F415353
10E445338
11E4-25325
12D♯45312
13D440301
14D4-25290
15C♯420280
16C♯4-40271
17C45262
18C4-50254
19B3-5246
20A♯3-5232
21A3-10219
22G♯35208
23G315198
24G3-25193
25F♯3-10184
26F315176
27F325165
28E3-30162
29D♯30156
30D310148
31D3-20145
32C♯315140
33C330133
34C3-25129
35B220125
36A♯25117
37A215111
38A2-30108
39G♯220105
40G21599
41F♯23094
42F♯2-1092
43F23589
44E23584
45E2-3081
46D♯2578
47D23575
48D2-3572
49C♯2-569
50C21566
51B13563
52A♯1060
53A1-558
54G♯13056
55G♯13553
56G1-3051
57F♯1049
58F♯13047
59F1-4545
60E1-2543
61D♯13042
62D♯15040
63D1-4038

Posted in Sidequest on 2020-03-28 20:20:00.
Hits: 2087