home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Workbench / Patches / SayMore.lha / SayMore.doc < prev    next >
Text File  |  1998-04-26  |  19KB  |  417 lines

  1.                         SayMore Version 0.47
  2.                               ⌐ 1997
  3.                       By Kenton A. Groombridge
  4.  
  5. Quick note:
  6.  
  7. I am currenly working on changing SayMore to use ClassAct.  ClassAct is by far
  8. a superior product compared to MUI.  Also ClassAct unlike MUI, costs you, the
  9. user, nothing.
  10.  
  11. The use of this program requires:
  12.  
  13. Workbench 2.04+ narrator.device V37+ found on Workbench 2.04/2.05 and
  14. translator.library V43+ found on Aminet as:
  15.  
  16.   util/libs/translator42.lha
  17.   util/libs/Tran43pch.lha
  18.  
  19. Introduction:
  20.  
  21.   SayMore is a program designed to replace Say.  Say was fine for Workbench
  22. 1.3, but the Say program included with 2.0X did not have the ability to change
  23. most of the options in the new narrator.device.
  24.  
  25.   This is a prerelease version of SayMore.  It is not far from being completed,
  26. but I want to make this program the best I can.  Please look over the interface
  27. and features and tell me what you like and dislike.
  28.  
  29.   You know I have been saying it is not far from being completed, but it is
  30. taking me forever to finish it.  Also I am thinking of all kinds of stuff to
  31. add to it so this is turing into a never ending project.  Hopefully someday it
  32. will be completed.  At least I have been spending about 5 to 10 hours per week
  33. on it.  That is a lot more hours than I use to spend on it.
  34.  
  35.   There are a couple programs similar to SayMore currently on Aminet.  These
  36. programs have severe memory leaks and are not system friendly.  A considerable
  37. amount of time and effort has gone into SayMore to ensure that it is safe.  It
  38. is near impossible for me to test all the limits of SayMore, but all test have
  39. proven that it is completely 100% OS friendly and has no memory leaks.  If you
  40. find a program on Aminet that has features that SayMore doesn't have and is not
  41. listed in the "To Do" list, let me know and I will work hard to implement
  42. those.
  43.  
  44. Disclaimer:
  45.  
  46.   The use of this program is on your own risk. There is no liability or
  47. responsibility for any damage caused by the program.
  48.   
  49. Copyright:
  50.  
  51.   SayMore is free to be spread on public-domain and shareware disks, as long as
  52. they are sold for a reasonable charge.
  53.  
  54. Use of the program:
  55.  
  56.   SayMore is my gift to the Amiga community.  I do not charge money for the use
  57. of SayMore, but I have coined the term caveatware.  Caveatware means that you
  58. may use the program just by reading the following.  You don't have to abide by
  59. them, just read and consider them.
  60.  
  61. 1.  If English is your native language, please try to speak it correctly.  I
  62. know that my English is not always correct, but I am trying to improve it.
  63. Some of by pet peeves are using the word "gender" when you mean "sex."  As one
  64. person said, gender is the attribute of a word and not a person.  This all has
  65. to do with political correctness which I despise.
  66.  
  67. 2.  Write a program for the Amiga.  It seems like every time I read usenet
  68. news, there is somebody wishing there was a program that did this or that.  Do
  69. something about it, and write a program.  I use to write programs with the
  70. public domain/freeware a68k and blink.  Although painful, I did write some
  71. pretty nifty programs.
  72.  
  73. 3.  If you write Amiga software, and charge a fee for what you write, please
  74. consider discounts for other Amiga software authors.  I feel that this would
  75. increase the amount of software for the Amiga.
  76.  
  77. 4.  Send a message to me letting me know that you use the program.  I would
  78. greatly appreciate some input on what you would like to see added or changed to
  79. the program.
  80.  
  81. 5.  If you do find a bug with the program.  Please let me know as soon as
  82. possible.  This will make future versions of the program better for you and
  83. other users.
  84.  
  85. 5.  Bug Amiga International to include narrator.device and translator.library
  86. with future releases of Workbench.  
  87.  
  88. 6.  More to follow.
  89.  
  90. Required:
  91.  
  92.   As far as I know, this program requires Workbench 2.04+, but it has not been
  93. tested on all platforms.  It was written on an Amiga 2000/Workbench 3.1 and an
  94. Amiga 4000/040/Workbench 3.1.  Remember that it requires the new
  95. narrator.device included with Workbench 2.0X, and V43 of translator.library
  96. found on Aminet.
  97.  
  98. Reporting errors:
  99.  
  100.   I have put in some code to help determine the cause of errors.  When a
  101. detectable error occurs in this program, a requester will pop up with some text
  102. indicating the error that occurred and the approximate amount of CHIP RAM and
  103. FAST RAM.  If either of these numbers are small, you may be running out of
  104. memory.  Try to free some memory and try again.  Read the message.  If the
  105. message says "Can not open translator.library V43 or above," check to see that
  106. you have that library and it is the correct version.  The only problem that
  107. will not display an error, is if intuition.library V37 or above could not be
  108. opened.  This is because the requester requires intuition.library to be opened
  109. to operate.
  110.  
  111.   If you can not determine the cause of the error or the program fails without
  112. a detectable error, please send me the configuration of your system, other
  113. programs that were running at the time, and any other information you feel is
  114. important.   
  115.  
  116. Contacting the author:
  117.  
  118. e-mail      kgroombr@interquest.de
  119.             Kenton.Groombridge@wpc.af.mil
  120.  
  121. snail-mail  Kenton Groombridge
  122.             PSC 3 Box 1766
  123.             APO AE  09021
  124.             USA
  125.  
  126.                   -OR-
  127.  
  128.             Kenton Groombridge
  129.             PSC 3 Box 1766
  130.             D:67661 Kapaun Flugplatz
  131.             Germany
  132.  
  133.   I move a lot.  If you can't get in touch with my by the above address, send
  134. a message to my permanant address:
  135.  
  136.             Kenton Groombridge
  137.             1405 North Center Avenue
  138.             Hardin, MT 59034
  139.             USA
  140.  
  141. Acknowledgments:
  142.  
  143.   The first SayMore program was written using HiSoft DevPac Assembler 3.04.  I
  144. need to upgrade to the latest version, but even if I did, I haven't had much 
  145. time recently to use it.
  146.  
  147.   This version of the program is written using SAS/C 6.58.  SAS/C is a great
  148. program, and I hope that they continue support for the Amiga.  Thanks to the
  149. SAS/C Amiga developers for the four patches written after Commodore's death.
  150.  
  151.   Thanks to Gateway 2000 for saving the Amiga's future.  For the folks at 
  152. Gateway, if you are looking for a quality individual with years of experience
  153. in sales, programming, quality control, and the dozen other jobs I have done in
  154. the military, look me up.  I can sell the Amiga.
  155.  
  156.  
  157. To do:
  158.  
  159. 1.  Refine the tool types.
  160. 2.  File requester to speak files.
  161. 3.  Make the command line operation compatable with Say and add extra features.
  162. 4.  Switch characters compatable with say, so that the voice can change while
  163.     speaking and add extra features.
  164. 5.  Rewind, Fast Forward, Stop, and Pause buttons.
  165. 6.  Sizeable main window.
  166. 7.  Menu with items such as "Open", "About", "Quit, etc."
  167. 8.  Font sensitivity.
  168. 9.  Localization.
  169. 10. More face types.  /* Any ideas out there? */
  170. 11. Refine the GUI.
  171. 12. Save options, with the ability to save multiple setups.
  172. 13. Enhance sentence parsing routines or do a plugin so users can define their
  173.     own.
  174. 14. Multiple selection of icons (Enhance a bit).
  175. 15. Progress indicator.
  176. 16. Pretty icons of my own design or if you have some, I will include them and
  177.     give you credit in my docs.
  178. 17. Better documentation in AmigaGuide format.  I got to work on this one!
  179. 18. Voice database, and the ability to save multiple voices.
  180. 19. Multiple faces at one time.
  181. 20. The ability to not use translator.library and type in the translated text
  182.     directly.
  183. 21. Any feasible user request.
  184.  
  185. 0.10B
  186. Written in assembler.  It was not user friendly, but it worked.
  187.  
  188. 0.20
  189. Ported to C and made several enhancements.
  190.  
  191. 0.25
  192. Fixed a bug in error reporting.  It reported that it could not create the
  193. console message port when it could not open translator.library and vice-versa.
  194.  
  195. Included the correct documentation.                                         
  196.  
  197. 0.30
  198. Fixed bug with the console_task that caused messages to get passed to the wrong
  199. instance of the program when two or more instances of the program were loaded.
  200.  
  201. Changed translate_buffer's size to account for the largest possible translate
  202. string (I hope).                     
  203.  
  204. Discovered a bug in translator.library.  When it handles large strings of
  205. consecutive numbers, it  will skip numbers every 100 numbers it processes.
  206. The tranlate_buffer's size accounts for the largest string possible when or if
  207. this bug is ever fixed.                     
  208.  
  209. Found a bug with the creation of the console_task.  If console_task tried to
  210. find it's parents message port before the port was added to the system list, it
  211. would crash with a Guru 80000008.  I could not find a way to completely fix
  212. this bug.  I did make it where the parent's message port is added to the system
  213. list way before the spawned task should ask for it.  The only way I know to fix
  214. this is to have only one instance of SayMore running at a time.  If at anytime
  215. you get this error, please let me know, and I will work harder to try to
  216. eliminate this bug.                     
  217.  
  218. Added "Face" window.  It is ugly, but it is a start.
  219.  
  220. 0.33
  221. Changed code so that only one instance of SayMore can run at a time.  There
  222. really is no reason for two instances since only one narrator.device can be
  223. open at any one time.
  224.  
  225. Fixed "Face" window so that it works with different size borders.
  226.  
  227. Eliminated the GimmeZeroZero window for face so less system resources are
  228. needed.
  229.  
  230. Sped up Face routine significantly.
  231.  
  232. Now uses EasyRequest() to print error messages.  This is good news for those
  233. who are using monitors that don't sync down to 15KHz.
  234.  
  235. "Face" window now uses a diamond mouth.  Don't worry, future version will have
  236. user configurable mouths.  This is just for testing since I am certian that the
  237. round mouth is functional.
  238.  
  239. 0.41
  240. Fixed bug with the code that determined if another instance of saymore was
  241. running.  It used to assign a name to the node of the process.  The problem
  242. was, if the program was run from the shell, it would change the process node of
  243. the shell to "SayMore".  If the program was exited and an attempt was made to
  244. run it again, it would not run because the shell still had the name "SayMore".
  245. It would only run again if the shell was exited.  Make sense?  Now it uses a
  246. message port to send and recieve it's messages when starting up.
  247.  
  248. Added one of my "To Do" items about a requester for "CONTINUE" or "BRING TO
  249. FRONT".  It can't bring the "SayMore Input" and "SayMore Output" windows to
  250. front because they are actually CON:.  Depending on the difficulty and the time
  251. I have, I will try to change CON: to windows and attach the console.device.
  252. The current method is easiest since CON: already has cut/paste and history
  253. built in.
  254.   
  255. Fixed the spelling of my name in the title bar.  When I was doing a search and
  256. replace, I killed the two o's in Groombridge.  Oh well, it didn't affect the
  257. running and it actually saved a couple bytes.
  258.  
  259. Added a couple optimizations that save a few bytes and sped up the code a bit.
  260.  
  261. SayMore is now translator.library V43+ only.  I did this because it is free,
  262. and it overcomes the shortcommings and the bugs found in V37
  263. translator.library.  It also has many features which make it a must have.  The
  264. docs say that V42 has bugs, but I never came across them.  Since the V43 patch
  265. is free, I made SayMore V43 only.
  266.  
  267. Command line operation.  Although not complete, you can specify a file name to
  268. speak.  The length of the filename does have a limit, but future versions will
  269. overcome this.  At the moment, this is under testing.  To read a file back
  270. type: Saymore "path:file", where "path:file" is the absolute or relative path
  271. and file name.  If it can't find the file, SayMore will appear to start up and
  272. then exit without a message.  A future version will open a file requester when
  273. this happens.
  274.  
  275. Added tool types.  At the moment there is no way to save the current
  276. configuration, but this is due to change.  To change their values, use the
  277. Icons->Information... from the Workbench menus and add/delete/edit the tools.
  278.  
  279. 0.42
  280. Fixed some stupid bugs in the file read routines.  Although the windows would
  281. open, no text was rendered in them.  Also the windows sometimes would not close
  282. when the program was finished speaking the file.
  283.  
  284. Fixed the "EYE" types so that they are all the same width and height no matter
  285. what eye type is used.  The "BOX" eye used to be rendered slightly larger.
  286.  
  287. Changed the tooltype values for "EYES" and "MOUTH".  "SQUARE" is now "BOX", and
  288. "ROUND" is now "OVAL".  I did this for three reasons.  It saves several bytes
  289. in the code, it makes the program faster, and they are more accurate terms.
  290.  
  291. 0.43
  292. Added Noses.
  293.                   
  294. Altered the tooltypes routines so that the values can be either upper or lower 
  295. case.  Before they were case sensitive and had to be upper case.
  296.                   
  297. Messed around with the face/eye/mouth routines some more and cut the code down 
  298. by about 200 bytes and sped up the routines about 10%.
  299.  
  300. Changed the internal icon to a smaller one so that the code is a lot smaller.
  301.  
  302. Optimized a few pieces of code here and there.
  303.  
  304. Changed the code so that that gadgets in the main window are no longer ghosted.
  305. Instead, it gives a busy pointer when clicking in the main window.  I like it 
  306. better this way except that if you use an interlace pointer with 3.X then you 
  307. will get the big ugly watch pointer.  I may start two versions, one for 2.X and 
  308. one for 3.X.
  309.  
  310. Now supports INPUTBUFFER and OUTPUTBUFFER tooltypes.
  311.                   
  312. Rewrote the spawned task routines.  Now more memory efficient and faster.
  313.  
  314. Fixed a bug in the if(signal_recieved & console_sigbit) It would GetMsg and 
  315. ReplyMsg even though there may not be a message.  Added if(GetMsg(..)).  I am 
  316. surprised I didn't find this one sooner.
  317.  
  318. 0.44 (12 Sep 97)
  319. Major reconstruction of the spawned tasks that reads input from the keyboard 
  320. and from a file.  I combined the two routines into one routine since they were 
  321. almost identicle and rewrote much of it.  It is a lot smaller and faster than 
  322. the previous version and should also fix a bug when pasting using Powersnap.
  323.                   
  324. Rewrote much of the tooltype reading section so that defaults are set up first 
  325. and any user override will set those desired.  This resulted in about 1KB 
  326. smaller code.
  327.  
  328. 0.45 (15 Sep 97)
  329. Don't ask about 0.44.  It was a mess.  Actually the code was clean except for
  330. two lines of code.  The weird thing is it worked on my machine, but not on most
  331. others.  The way I had it written would cause the machine to crash on many
  332. machines because of timing.  I fixed those two lines, and added a couple
  333. optimizations.
  334.  
  335. 0.47 (26 Apr 98)
  336. I have been using it for a while now, but never released it.  I thought I would
  337. ship it out since I found it stable and have not shipped a newer version in a
  338. while now.  I hope to have the next version out by June 98.  Hopefully it will
  339. be a nice change for you all.
  340.  
  341. This version added multiple selection of icons.  I still need to work on it a
  342. bit, but I would like to have it read the tooltypes from the icons that are 
  343. selected.  Now it only uses the tooltypes from the program icon.
  344.  
  345. ***** A Final Note ****
  346.  
  347. Do not use 0.44!  It probably will not harm your system, but it is guaranteed
  348. to crash at some time.
  349.                                                      
  350.  
  351. Tool types currently supported are:
  352.  
  353.      String                   Value
  354. -----------------------------------------------------------------
  355. NOFACE       Boolean: use if you do not want the face window.
  356. FACEX=       Any positive value within the screen limits.
  357. FACEY=       Any positive value within the screen limits.
  358. FACEWIDTH=   Any positive value greater than 50 and within the screen limits.
  359. FACEHEIGHT=  Any positive value greater than 75 and within the screen limits.
  360. NOMAIN       Boolean: use if you do not want the main window.
  361. MAINX=       Any positive value within the screen limits.
  362. MAINY=       Any positive value within the screen limits.
  363. NOINPUT      Boolean: use if you do not want the input window.
  364. INPUTX=      Any positive value within the screen limits.
  365. INPUTY=      Any positive value within the screen limits.
  366. INPUTWIDTH=  Any positive value within the screen limits.
  367. INPUTHEIGHT= Any positive value within the screen limits.
  368. NOOUTPUT     Boolean: use if you do not want the output window.
  369. OUTPUTX=     Any positive value within the screen limits.
  370. OUTPUTY=     Any positive value within the screen limits.
  371. OUTPUTWIDTH= Any positive value within the screen limits.
  372. OUTPUTHEIGHT=Any positive value within the screen limits.
  373. EYES=        DIAMOND, BOX, OVAL
  374. NOSELEFT     Boolean.  Use if you want a left pointing nose.  Use along with
  375.              NOSERIGHT to make a triangle nose.
  376. NOSERIGHT    Boolean.  Use if you want a right pointing nose.  Use along with
  377.              NOSELEFT to make a triangle nose.
  378. MOUTH=       DIAMOND, BOX, OVAL
  379. INPUTBUFFER= The size of the input buffer for file reading.
  380. OUTPUTBUFFER=The size of the output buffer for the text conversion.
  381.  
  382.                              * NOTICE *
  383. Be careful with these six.  If the number is too small, you will be rendering
  384. in the window borders and you can go outside the rastport.  This can crash the
  385. system.  Leave these out to default to a safe value.
  386.  
  387. EYESPACING=  Any positive value.  The bigger the number the closer the spacing
  388.              of the eyes.
  389. EYEWIDTH=    Any positive value.  The bigger the number the smaller the width.
  390. EYEHEIGHT=   Any positive value.  The bigger the number the smaller the height.
  391. NOSELENGTH=  Any positive value.  The bigger the number the smaller the nose.
  392. MOUTHWIDTH=  Any positive value.  The bigger the number the smaller the mouth.
  393. MOUTHHEIGHT= Any positive value.  The bigger the number the smaller the mouth.
  394.                              * NOTICE *
  395.  
  396.    * These will be supported when the Sizeable main window is finished. *
  397. MAINWIDTH=   Any positive value within the screen limits.
  398. MAINHEIGHT=  Any positive value within the screen limits.
  399.  
  400. Last bit of info:
  401.  
  402.   You all may wonder what happens to versions that are not listed above.  They
  403. do exist, but are versions that I test and debug.  They are not released to the
  404. general public.  If you want to receive beta programs, actually they are all
  405. beta, send me an email or retrieve them from my web site.  All I ask is that
  406. you test them thoroughly and send me notes letting me know the problems you
  407. find.  For those that don't want these unreleased beta's, I have not received
  408. any reports of major bugs in the beta's except for version 0.44.  Version 0.44
  409. is a different beast all together.  I will try never to do that again.  Anyway,
  410. I try to release quality software.  I run SayMore every day on large text files
  411. while programming.  Like I said before, there is no way for me to debug it 
  412. completely.  That is why I appreciate your input.
  413.   
  414. Get the latest version on my web page at:
  415.  
  416. http://www.interquest.de/~kgroombr/
  417.