home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 91 / af091a.adf / af91a3.lzx / prgs / Speech / SpeechTool.b < prev    next >
Text File  |  2019-03-23  |  8KB  |  281 lines

  1. {*
  2. ** ACE Speech Tool.
  3. **
  4. ** Initial requester code generated by ReqEd. Code rearranged
  5. ** and more comments added for better readability. Redundant 
  6. ** (naive) code also removed.
  7. **
  8. ** Author: David J Benn
  9. **   Date: 31st January, 1st,2nd February 1995
  10. *}
  11.  
  12. DEFLNG a-z
  13.  
  14. {*
  15. ** Contants.
  16. *}
  17. CONST true  = -1&
  18. CONST false = 0&
  19. CONST null  = 0&
  20.  
  21. {*
  22. ** Variables.
  23. *}
  24. DIM SHORTINT theVoice(8)
  25. STRING phonemeString, textString
  26.  
  27. {*
  28. ** Subprograms.
  29. *}
  30. SUB SetDefaultParams
  31. SHARED theVoice
  32.   RESTORE
  33.   FOR i=0 TO 8 : READ theVoice(i) : NEXT
  34.   DATA 110,0,150,0,22200,64,10,0,0
  35. END SUB
  36.  
  37. SUB ChangeParamGadgets
  38. SHARED theVoice
  39.   '..Voice parameter sliders and longint gadgets.
  40.   GADGET MOD 244,theVoice(0) - 65 : GADGET CLOSE 245
  41.   GADGET 245,ON,MID$(STR$(theVoice(0)),2),(416,5)-(481,17),LONGINT    '..pitch
  42.  
  43.   GADGET MOD 246,theVoice(2) - 40 : GADGET CLOSE 247    
  44.   GADGET 247,ON,MID$(STR$(theVoice(2)),2),(416,22)-(481,34),LONGINT    '..rate
  45.  
  46.   GADGET MOD 252,theVoice(4)\1000 - 5 : GADGET CLOSE 250
  47.   GADGET 250,ON,MID$(STR$(theVoice(4)),2),(416,39)-(481,51),LONGINT     '..tuning
  48.  
  49.   GADGET MOD 251,theVoice(5) : GADGET CLOSE 253
  50.   GADGET 253,ON,MID$(STR$(theVoice(5)),2),(416,56)-(481,68),LONGINT    '..volume
  51.  
  52.   GADGET MOD 255,theVoice(6) : GADGET CLOSE 249
  53.   GADGET 249,ON,MID$(STR$(theVoice(6)),2),(416,73)-(481,85),LONGINT    '..channel
  54.  
  55.   GADGET MOD 254,theVoice(8) : GADGET CLOSE 248
  56.   GADGET 248,ON,MID$(STR$(theVoice(8)),2),(416,90)-(481,102),LONGINT    '..control
  57.  
  58.   '..Inflection, Gender and Mode (binary) sliders.
  59.   GADGET MOD 235,theVoice(1)
  60.   GADGET MOD 236,theVoice(3)
  61.   GADGET MOD 237,theVoice(7)
  62. END SUB
  63.  
  64. SUB ChangeValue(theGadget)
  65. SHARED theVoice, phonemeString, textString
  66. ADDRESS strAddr
  67.   CASE
  68.     '..pitch
  69.     theGadget = 245 : theVoice(0) = GADGET(2)
  70.     theGadget = 244 : theVoice(0) = GADGET(3) + 65
  71.  
  72.     '..rate
  73.     theGadget = 247 : theVoice(2) = GADGET(2)
  74.     theGadget = 246 : theVoice(2) = GADGET(3) + 40
  75.  
  76.     '..tuning
  77.     theGadget = 250 : theVoice(4) = GADGET(2) 
  78.     theGadget = 252 : theVoice(4) = GADGET(3)*1000 + 5000 '..convert to KHz.
  79.  
  80.     '..volume    
  81.     theGadget = 253 : theVoice(5) = GADGET(2)
  82.     theGadget = 251 : theVoice(5) = GADGET(3)
  83.  
  84.     '..channel
  85.     theGadget = 249 : theVoice(6) = GADGET(2)
  86.     theGadget = 255 : theVoice(6) = GADGET(3)
  87.  
  88.     '..control
  89.     theGadget = 248 : theVoice(8) = GADGET(2)
  90.     theGadget = 254 : theVoice(8) = GADGET(3)
  91.  
  92.     '..inflection
  93.     theGadget = 235 : theVoice(1) = GADGET(3) : IF theVoice(1) > 1 THEN theVoice(1) = 1
  94.  
  95.     '..gender
  96.     theGadget = 236 : theVoice(3) = GADGET(3) : IF theVoice(3) > 1 THEN theVoice(3) = 1
  97.  
  98.     '..mode
  99.     theGadget = 237 : theVoice(7) = GADGET(3) : IF theVoice(7) > 1 THEN theVoice(7) = 1
  100.  
  101.     '..text input
  102.     theGadget = 242 : strAddr = GADGET(2) : IF strAddr <> null THEN 
  103.                         textString = CSTR(strAddr)
  104.                         SAY TRANSLATE$(textString),theVoice
  105.                         END IF
  106.     '..phoneme input
  107.     theGadget = 243 :  strAddr = GADGET(2) : IF strAddr <> null THEN 
  108.                         phonemeString = UCASE$(CSTR(strAddr))
  109.                         SAY phonemeString,theVoice
  110.                          END IF
  111.   END CASE
  112. END SUB
  113.  
  114. SUB GadgetAction(theGadget)
  115. SHARED textString, theVoice
  116.   CASE
  117.     '..pitch
  118.     theGadget = 245 : GADGET MOD 244,theVoice(0) - 65
  119.     theGadget = 244 : GADGET CLOSE 245 : GADGET 245,ON,MID$(STR$(theVoice(0)),2), ~
  120.                         (416,5)-(481,17),LONGINT
  121.     '..rate
  122.     theGadget = 247 : GADGET MOD 246,theVoice(2) - 40
  123.     theGadget = 246 : GADGET CLOSE 247 : GADGET 247,ON,MID$(STR$(theVoice(2)),2), ~
  124.                         (416,22)-(481,34),LONGINT    
  125.     '..tuning
  126.     theGadget = 250 : GADGET MOD 252,theVoice(4)\1000 - 5
  127.     theGadget = 252 : GADGET CLOSE 250 : GADGET 250,ON,MID$(STR$(theVoice(4)),2), ~
  128.                         (416,39)-(481,51),LONGINT
  129.     '..volume    
  130.     theGadget = 253 : GADGET MOD 251,theVoice(5)
  131.     theGadget = 251 : GADGET CLOSE 253 : GADGET 253,ON,MID$(STR$(theVoice(5)),2), ~
  132.                         (416,56)-(481,68),LONGINT     
  133.     '..channel
  134.     theGadget = 249 : GADGET MOD 255,theVoice(6)
  135.     theGadget = 255 : GADGET CLOSE 249 : GADGET 249,ON,MID$(STR$(theVoice(6)),2), ~
  136.                         (416,73)-(481,85),LONGINT    
  137.     '..control
  138.     theGadget = 248 : GADGET MOD 254,theVoice(8) 
  139.     theGadget = 254 : GADGET CLOSE 248 : GADGET 248,ON,MID$(STR$(theVoice(8)),2), ~
  140.                         (416,90)-(481,102),LONGINT    
  141.  
  142.     '..inflection
  143.     theGadget = 235 : COLOR 3,0:SETXY 543,26:IF theVoice(1)=0 THEN ? "Y"; ELSE ? "N";
  144.    
  145.     '..gender
  146.     theGadget = 236 : COLOR 3,0:SETXY 543,62:IF theVoice(3)=0 THEN ? "M"; ELSE ? "F";
  147.  
  148.     '..mode
  149.     theGadget = 237 : COLOR 3,0:SETXY 543,98:IF theVoice(7)=0 THEN ? "S"; ELSE ? "A";
  150.  
  151.     '..Show Phonemes
  152.     theGadget = 241 : IF textString <> "" THEN MsgBox TRANSLATE$(textString),"Continue" 
  153.  
  154.     '..Reset Parameters
  155.     theGadget = 240 : SetDefaultParams : ChangeParamGadgets
  156.  
  157.     '..About
  158.     theGadget = 239 : MsgBox "Version 1.0, by David J Benn","Continue"
  159.   END CASE
  160. END SUB
  161.  
  162. SUB SpeechTool
  163. SHARED theVoice
  164. SHORTINT theGadget, n
  165.   WINDOW 9,"ACE Speech Tool",(22,23)-(612,237),14
  166.  
  167.   FONT "topaz.font",8
  168.   PENUP
  169.  
  170.   '..Voice parameter sliders and longint gadgets.
  171.   COLOR 2,0
  172.   SETXY 40,12
  173.   PRINT "Pitch";
  174.   GADGET 244,ON,255,(90,3)-(400,13),POTX : GADGET MOD 244,theVoice(0) - 65
  175.   GADGET 245,ON,MID$(STR$(theVoice(0)),2),(416,5)-(481,17),LONGINT    '..pitch
  176.   'SETXY 416,11 : PRINT theVoice(0);
  177.  
  178.   COLOR 2,0
  179.   SETXY 48,29
  180.   PRINT "Rate";
  181.   GADGET 246,ON,360,(90,20)-(401,30),POTX : GADGET MOD 246,theVoice(2) - 40    
  182.   GADGET 247,ON,MID$(STR$(theVoice(2)),2),(416,22)-(481,34),LONGINT    '..rate
  183.   'SETXY 416,28 : PRINT theVoice(2);
  184.  
  185.   COLOR 2,0
  186.   SETXY 32,46
  187.   PRINT "Tuning";
  188.   GADGET 252,ON,23,(90,37)-(400,47),POTX : GADGET MOD 252,theVoice(4)\1000 - 5
  189.   GADGET 250,ON,MID$(STR$(theVoice(4)),2),(416,39)-(481,51),LONGINT    '..tuning
  190.   'SETXY 416,45 : PRINT theVoice(4);
  191.  
  192.   COLOR 2,0
  193.   SETXY 32,63
  194.   PRINT "Volume";
  195.   GADGET 251,ON,64,(90,54)-(400,64),POTX : GADGET MOD 251,theVoice(5)
  196.   GADGET 253,ON,MID$(STR$(theVoice(5)),2),(416,56)-(481,68),LONGINT    '..volume
  197.   'SETXY 416,62 : PRINT theVoice(5);
  198.  
  199.   COLOR 2,0
  200.   SETXY 24,80
  201.   PRINT "Channel";
  202.   GADGET 255,ON,11,(90,71)-(400,81),POTX : GADGET MOD 255,theVoice(6)
  203.   GADGET 249,ON,MID$(STR$(theVoice(6)),2),(416,73)-(481,85),LONGINT    '..channel
  204.   'SETXY 416,79 : PRINT theVoice(6);
  205.  
  206.   COLOR 2,0
  207.   SETXY 24,97
  208.   PRINT "Control";
  209.   GADGET 254,ON,2,(90,88)-(400,98),POTX : GADGET MOD 254,theVoice(8)
  210.   GADGET 248,ON,MID$(STR$(theVoice(8)),2),(416,90)-(481,102),LONGINT    '..control
  211.   'SETXY 416,96 : PRINT theVoice(8);
  212.  
  213.   '..Inflection, Gender and Mode (binary) sliders.
  214.   COLOR 2,0
  215.   SETXY 490,12
  216.   PRINT "Inflection";
  217.   COLOR 3,0
  218.   SETXY 543,26
  219.   PRINT "Y";
  220.   GADGET 235,ON,2,(523,15)-(538,30),POTY
  221.  
  222.   COLOR 2,0
  223.   SETXY 506,48
  224.   PRINT "Gender";
  225.   COLOR 3,0
  226.   SETXY 543,62
  227.   PRINT "M";
  228.   GADGET 236,ON,2,(523,51)-(538,66),POTY
  229.  
  230.   COLOR 2,0
  231.   SETXY 514,84
  232.   PRINT "Mode";
  233.   COLOR 3,0
  234.   SETXY 543,98
  235.   PRINT "S";
  236.   GADGET 237,ON,2,(523,87)-(538,102),POTY
  237.  
  238.   '..Phoneme and text input gadgets.
  239.   COLOR 2,0
  240.   SETXY 11,120
  241.   PRINT "Phonemes";
  242.   GADGET 243,ON,"",(16,126)-(576,139),STRING
  243.  
  244.   COLOR 2,0
  245.   SETXY 11,156
  246.   PRINT "Text";
  247.   GADGET 242,ON,"",(16,162)-(576,175),STRING
  248.  
  249.   '..Buttons.
  250.   GADGET 241,ON,"Show Phonemes",(10,180)-(132,196),BUTTON
  251.   GADGET 240,ON,"Reset Parameters",(182,180)-(331,196),BUTTON
  252.   GADGET 239,ON,"About...",(381,180)-(464,196),BUTTON
  253.   GADGET 238,ON,"Quit",(515,180)-(571,196),BUTTON
  254.  
  255.   '..Loop until 'Quit' button or close-gadget clicked.
  256.   finished = false
  257.   REPEAT
  258.     GADGET WAIT 0
  259.     theGadget = GADGET(1)
  260.     IF theGadget = 238 OR theGadget = 256 THEN 
  261.       finished = true
  262.     ELSE
  263.       ChangeValue(theGadget)
  264.       GadgetAction(theGadget)
  265.     END IF
  266.   UNTIL finished
  267.  
  268.   {* CLEAN UP *}
  269.   FOR n=255 TO 235 STEP -1
  270.     GADGET CLOSE n
  271.   NEXT
  272.   WINDOW CLOSE 9 
  273. END SUB
  274.  
  275. {*
  276. ** Main.
  277. *}
  278. SetDefaultParams
  279. SpeechTool
  280. END
  281.