home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 52
/
Amiga_Dream_52.iso
/
Amiga
/
Workbench
/
Patches
/
SayMore.lha
/
SayMore.doc
< prev
next >
Wrap
Text File
|
1998-04-26
|
19KB
|
417 lines
SayMore Version 0.47
⌐ 1997
By Kenton A. Groombridge
Quick note:
I am currenly working on changing SayMore to use ClassAct. ClassAct is by far
a superior product compared to MUI. Also ClassAct unlike MUI, costs you, the
user, nothing.
The use of this program requires:
Workbench 2.04+ narrator.device V37+ found on Workbench 2.04/2.05 and
translator.library V43+ found on Aminet as:
util/libs/translator42.lha
util/libs/Tran43pch.lha
Introduction:
SayMore is a program designed to replace Say. Say was fine for Workbench
1.3, but the Say program included with 2.0X did not have the ability to change
most of the options in the new narrator.device.
This is a prerelease version of SayMore. It is not far from being completed,
but I want to make this program the best I can. Please look over the interface
and features and tell me what you like and dislike.
You know I have been saying it is not far from being completed, but it is
taking me forever to finish it. Also I am thinking of all kinds of stuff to
add to it so this is turing into a never ending project. Hopefully someday it
will be completed. At least I have been spending about 5 to 10 hours per week
on it. That is a lot more hours than I use to spend on it.
There are a couple programs similar to SayMore currently on Aminet. These
programs have severe memory leaks and are not system friendly. A considerable
amount of time and effort has gone into SayMore to ensure that it is safe. It
is near impossible for me to test all the limits of SayMore, but all test have
proven that it is completely 100% OS friendly and has no memory leaks. If you
find a program on Aminet that has features that SayMore doesn't have and is not
listed in the "To Do" list, let me know and I will work hard to implement
those.
Disclaimer:
The use of this program is on your own risk. There is no liability or
responsibility for any damage caused by the program.
Copyright:
SayMore is free to be spread on public-domain and shareware disks, as long as
they are sold for a reasonable charge.
Use of the program:
SayMore is my gift to the Amiga community. I do not charge money for the use
of SayMore, but I have coined the term caveatware. Caveatware means that you
may use the program just by reading the following. You don't have to abide by
them, just read and consider them.
1. If English is your native language, please try to speak it correctly. I
know that my English is not always correct, but I am trying to improve it.
Some of by pet peeves are using the word "gender" when you mean "sex." As one
person said, gender is the attribute of a word and not a person. This all has
to do with political correctness which I despise.
2. Write a program for the Amiga. It seems like every time I read usenet
news, there is somebody wishing there was a program that did this or that. Do
something about it, and write a program. I use to write programs with the
public domain/freeware a68k and blink. Although painful, I did write some
pretty nifty programs.
3. If you write Amiga software, and charge a fee for what you write, please
consider discounts for other Amiga software authors. I feel that this would
increase the amount of software for the Amiga.
4. Send a message to me letting me know that you use the program. I would
greatly appreciate some input on what you would like to see added or changed to
the program.
5. If you do find a bug with the program. Please let me know as soon as
possible. This will make future versions of the program better for you and
other users.
5. Bug Amiga International to include narrator.device and translator.library
with future releases of Workbench.
6. More to follow.
Required:
As far as I know, this program requires Workbench 2.04+, but it has not been
tested on all platforms. It was written on an Amiga 2000/Workbench 3.1 and an
Amiga 4000/040/Workbench 3.1. Remember that it requires the new
narrator.device included with Workbench 2.0X, and V43 of translator.library
found on Aminet.
Reporting errors:
I have put in some code to help determine the cause of errors. When a
detectable error occurs in this program, a requester will pop up with some text
indicating the error that occurred and the approximate amount of CHIP RAM and
FAST RAM. If either of these numbers are small, you may be running out of
memory. Try to free some memory and try again. Read the message. If the
message says "Can not open translator.library V43 or above," check to see that
you have that library and it is the correct version. The only problem that
will not display an error, is if intuition.library V37 or above could not be
opened. This is because the requester requires intuition.library to be opened
to operate.
If you can not determine the cause of the error or the program fails without
a detectable error, please send me the configuration of your system, other
programs that were running at the time, and any other information you feel is
important.
Contacting the author:
e-mail kgroombr@interquest.de
Kenton.Groombridge@wpc.af.mil
snail-mail Kenton Groombridge
PSC 3 Box 1766
APO AE 09021
USA
-OR-
Kenton Groombridge
PSC 3 Box 1766
D:67661 Kapaun Flugplatz
Germany
I move a lot. If you can't get in touch with my by the above address, send
a message to my permanant address:
Kenton Groombridge
1405 North Center Avenue
Hardin, MT 59034
USA
Acknowledgments:
The first SayMore program was written using HiSoft DevPac Assembler 3.04. I
need to upgrade to the latest version, but even if I did, I haven't had much
time recently to use it.
This version of the program is written using SAS/C 6.58. SAS/C is a great
program, and I hope that they continue support for the Amiga. Thanks to the
SAS/C Amiga developers for the four patches written after Commodore's death.
Thanks to Gateway 2000 for saving the Amiga's future. For the folks at
Gateway, if you are looking for a quality individual with years of experience
in sales, programming, quality control, and the dozen other jobs I have done in
the military, look me up. I can sell the Amiga.
To do:
1. Refine the tool types.
2. File requester to speak files.
3. Make the command line operation compatable with Say and add extra features.
4. Switch characters compatable with say, so that the voice can change while
speaking and add extra features.
5. Rewind, Fast Forward, Stop, and Pause buttons.
6. Sizeable main window.
7. Menu with items such as "Open", "About", "Quit, etc."
8. Font sensitivity.
9. Localization.
10. More face types. /* Any ideas out there? */
11. Refine the GUI.
12. Save options, with the ability to save multiple setups.
13. Enhance sentence parsing routines or do a plugin so users can define their
own.
14. Multiple selection of icons (Enhance a bit).
15. Progress indicator.
16. Pretty icons of my own design or if you have some, I will include them and
give you credit in my docs.
17. Better documentation in AmigaGuide format. I got to work on this one!
18. Voice database, and the ability to save multiple voices.
19. Multiple faces at one time.
20. The ability to not use translator.library and type in the translated text
directly.
21. Any feasible user request.
0.10B
Written in assembler. It was not user friendly, but it worked.
0.20
Ported to C and made several enhancements.
0.25
Fixed a bug in error reporting. It reported that it could not create the
console message port when it could not open translator.library and vice-versa.
Included the correct documentation.
0.30
Fixed bug with the console_task that caused messages to get passed to the wrong
instance of the program when two or more instances of the program were loaded.
Changed translate_buffer's size to account for the largest possible translate
string (I hope).
Discovered a bug in translator.library. When it handles large strings of
consecutive numbers, it will skip numbers every 100 numbers it processes.
The tranlate_buffer's size accounts for the largest string possible when or if
this bug is ever fixed.
Found a bug with the creation of the console_task. If console_task tried to
find it's parents message port before the port was added to the system list, it
would crash with a Guru 80000008. I could not find a way to completely fix
this bug. I did make it where the parent's message port is added to the system
list way before the spawned task should ask for it. The only way I know to fix
this is to have only one instance of SayMore running at a time. If at anytime
you get this error, please let me know, and I will work harder to try to
eliminate this bug.
Added "Face" window. It is ugly, but it is a start.
0.33
Changed code so that only one instance of SayMore can run at a time. There
really is no reason for two instances since only one narrator.device can be
open at any one time.
Fixed "Face" window so that it works with different size borders.
Eliminated the GimmeZeroZero window for face so less system resources are
needed.
Sped up Face routine significantly.
Now uses EasyRequest() to print error messages. This is good news for those
who are using monitors that don't sync down to 15KHz.
"Face" window now uses a diamond mouth. Don't worry, future version will have
user configurable mouths. This is just for testing since I am certian that the
round mouth is functional.
0.41
Fixed bug with the code that determined if another instance of saymore was
running. It used to assign a name to the node of the process. The problem
was, if the program was run from the shell, it would change the process node of
the shell to "SayMore". If the program was exited and an attempt was made to
run it again, it would not run because the shell still had the name "SayMore".
It would only run again if the shell was exited. Make sense? Now it uses a
message port to send and recieve it's messages when starting up.
Added one of my "To Do" items about a requester for "CONTINUE" or "BRING TO
FRONT". It can't bring the "SayMore Input" and "SayMore Output" windows to
front because they are actually CON:. Depending on the difficulty and the time
I have, I will try to change CON: to windows and attach the console.device.
The current method is easiest since CON: already has cut/paste and history
built in.
Fixed the spelling of my name in the title bar. When I was doing a search and
replace, I killed the two o's in Groombridge. Oh well, it didn't affect the
running and it actually saved a couple bytes.
Added a couple optimizations that save a few bytes and sped up the code a bit.
SayMore is now translator.library V43+ only. I did this because it is free,
and it overcomes the shortcommings and the bugs found in V37
translator.library. It also has many features which make it a must have. The
docs say that V42 has bugs, but I never came across them. Since the V43 patch
is free, I made SayMore V43 only.
Command line operation. Although not complete, you can specify a file name to
speak. The length of the filename does have a limit, but future versions will
overcome this. At the moment, this is under testing. To read a file back
type: Saymore "path:file", where "path:file" is the absolute or relative path
and file name. If it can't find the file, SayMore will appear to start up and
then exit without a message. A future version will open a file requester when
this happens.
Added tool types. At the moment there is no way to save the current
configuration, but this is due to change. To change their values, use the
Icons->Information... from the Workbench menus and add/delete/edit the tools.
0.42
Fixed some stupid bugs in the file read routines. Although the windows would
open, no text was rendered in them. Also the windows sometimes would not close
when the program was finished speaking the file.
Fixed the "EYE" types so that they are all the same width and height no matter
what eye type is used. The "BOX" eye used to be rendered slightly larger.
Changed the tooltype values for "EYES" and "MOUTH". "SQUARE" is now "BOX", and
"ROUND" is now "OVAL". I did this for three reasons. It saves several bytes
in the code, it makes the program faster, and they are more accurate terms.
0.43
Added Noses.
Altered the tooltypes routines so that the values can be either upper or lower
case. Before they were case sensitive and had to be upper case.
Messed around with the face/eye/mouth routines some more and cut the code down
by about 200 bytes and sped up the routines about 10%.
Changed the internal icon to a smaller one so that the code is a lot smaller.
Optimized a few pieces of code here and there.
Changed the code so that that gadgets in the main window are no longer ghosted.
Instead, it gives a busy pointer when clicking in the main window. I like it
better this way except that if you use an interlace pointer with 3.X then you
will get the big ugly watch pointer. I may start two versions, one for 2.X and
one for 3.X.
Now supports INPUTBUFFER and OUTPUTBUFFER tooltypes.
Rewrote the spawned task routines. Now more memory efficient and faster.
Fixed a bug in the if(signal_recieved & console_sigbit) It would GetMsg and
ReplyMsg even though there may not be a message. Added if(GetMsg(..)). I am
surprised I didn't find this one sooner.
0.44 (12 Sep 97)
Major reconstruction of the spawned tasks that reads input from the keyboard
and from a file. I combined the two routines into one routine since they were
almost identicle and rewrote much of it. It is a lot smaller and faster than
the previous version and should also fix a bug when pasting using Powersnap.
Rewrote much of the tooltype reading section so that defaults are set up first
and any user override will set those desired. This resulted in about 1KB
smaller code.
0.45 (15 Sep 97)
Don't ask about 0.44. It was a mess. Actually the code was clean except for
two lines of code. The weird thing is it worked on my machine, but not on most
others. The way I had it written would cause the machine to crash on many
machines because of timing. I fixed those two lines, and added a couple
optimizations.
0.47 (26 Apr 98)
I have been using it for a while now, but never released it. I thought I would
ship it out since I found it stable and have not shipped a newer version in a
while now. I hope to have the next version out by June 98. Hopefully it will
be a nice change for you all.
This version added multiple selection of icons. I still need to work on it a
bit, but I would like to have it read the tooltypes from the icons that are
selected. Now it only uses the tooltypes from the program icon.
***** A Final Note ****
Do not use 0.44! It probably will not harm your system, but it is guaranteed
to crash at some time.
Tool types currently supported are:
String Value
-----------------------------------------------------------------
NOFACE Boolean: use if you do not want the face window.
FACEX= Any positive value within the screen limits.
FACEY= Any positive value within the screen limits.
FACEWIDTH= Any positive value greater than 50 and within the screen limits.
FACEHEIGHT= Any positive value greater than 75 and within the screen limits.
NOMAIN Boolean: use if you do not want the main window.
MAINX= Any positive value within the screen limits.
MAINY= Any positive value within the screen limits.
NOINPUT Boolean: use if you do not want the input window.
INPUTX= Any positive value within the screen limits.
INPUTY= Any positive value within the screen limits.
INPUTWIDTH= Any positive value within the screen limits.
INPUTHEIGHT= Any positive value within the screen limits.
NOOUTPUT Boolean: use if you do not want the output window.
OUTPUTX= Any positive value within the screen limits.
OUTPUTY= Any positive value within the screen limits.
OUTPUTWIDTH= Any positive value within the screen limits.
OUTPUTHEIGHT=Any positive value within the screen limits.
EYES= DIAMOND, BOX, OVAL
NOSELEFT Boolean. Use if you want a left pointing nose. Use along with
NOSERIGHT to make a triangle nose.
NOSERIGHT Boolean. Use if you want a right pointing nose. Use along with
NOSELEFT to make a triangle nose.
MOUTH= DIAMOND, BOX, OVAL
INPUTBUFFER= The size of the input buffer for file reading.
OUTPUTBUFFER=The size of the output buffer for the text conversion.
* NOTICE *
Be careful with these six. If the number is too small, you will be rendering
in the window borders and you can go outside the rastport. This can crash the
system. Leave these out to default to a safe value.
EYESPACING= Any positive value. The bigger the number the closer the spacing
of the eyes.
EYEWIDTH= Any positive value. The bigger the number the smaller the width.
EYEHEIGHT= Any positive value. The bigger the number the smaller the height.
NOSELENGTH= Any positive value. The bigger the number the smaller the nose.
MOUTHWIDTH= Any positive value. The bigger the number the smaller the mouth.
MOUTHHEIGHT= Any positive value. The bigger the number the smaller the mouth.
* NOTICE *
* These will be supported when the Sizeable main window is finished. *
MAINWIDTH= Any positive value within the screen limits.
MAINHEIGHT= Any positive value within the screen limits.
Last bit of info:
You all may wonder what happens to versions that are not listed above. They
do exist, but are versions that I test and debug. They are not released to the
general public. If you want to receive beta programs, actually they are all
beta, send me an email or retrieve them from my web site. All I ask is that
you test them thoroughly and send me notes letting me know the problems you
find. For those that don't want these unreleased beta's, I have not received
any reports of major bugs in the beta's except for version 0.44. Version 0.44
is a different beast all together. I will try never to do that again. Anyway,
I try to release quality software. I run SayMore every day on large text files
while programming. Like I said before, there is no way for me to debug it
completely. That is why I appreciate your input.
Get the latest version on my web page at:
http://www.interquest.de/~kgroombr/