Re: [Audyssey] BGT future development - My replies

2011-01-12 Thread Jim Kitchen

Hi Thomas,

I know that in my games I need to reset the sapi5 voice engine before changing 
engines.  That is going from an ATT voice to a Neo Speech, Microsoft or 
Cepstral.  Otherwise the voice is all very distorted and fuzzy.

So I do the below code whenever changing to a new voice.  nov being the number 
of the new voice.

Set Voice = Nothing
   Set Voice = New SpVoice
Set Voice.Voice = Voice.GetVoices().Item(nov)

So that is just in VB6 with the sapi5 voices.

HTH

BFN

Jim

You're just jealous because the voices only talk to me.

j...@kitchensinc.net
http://www.kitchensinc.net
(440) 286-6920
Chardon Ohio USA
---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.


Re: [Audyssey] BGT future development - My replies

2011-01-12 Thread Thomas Ward
Hi Jim,

I know. I do the same thing to reset the Speech Engine before
switching to Neospeech, Natural Voices, whatever. Problem is though
the Neospeech voices continue to sound fuzzy, distorted, etc  even
though I properly disposed of the old Sapi speech engine and
initialized the new one. I don't have this problem when switching from
the ATT voices to Microsoft Anna or to the Realspeak voices that
ships with Jaws 9. This leads me to believe that the Neospeech voices
have some problems not shared by other TTS engines out there.

On 1/12/11, Jim Kitchen j...@kitchensinc.net wrote:
 Hi Thomas,

 I know that in my games I need to reset the sapi5 voice engine before
 changing engines.  That is going from an ATT voice to a Neo Speech,
 Microsoft or Cepstral.  Otherwise the voice is all very distorted and fuzzy.

 So I do the below code whenever changing to a new voice.  nov being the
 number of the new voice.

 Set Voice = Nothing
 Set Voice = New SpVoice
 Set Voice.Voice = Voice.GetVoices().Item(nov)

 So that is just in VB6 with the sapi5 voices.

 HTH

 BFN

  Jim


---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.


Re: [Audyssey] BGT future development - My replies

2011-01-12 Thread Phil Vlasak

Hi Thomas,
I notice that switching to Neospeech  from other voices does take quite a 
while in Windows.
I think about 30 seconds so if you put a wait statement in for that long, 
maybe that will clear up the switch.

Phil

- Original Message - 
From: Thomas Ward thomasward1...@gmail.com

To: Gamers Discussion list gamers@audyssey.org
Sent: Wednesday, January 12, 2011 3:42 PM
Subject: Re: [Audyssey] BGT future development - My replies



Hi Jim,

I know. I do the same thing to reset the Speech Engine before
switching to Neospeech, Natural Voices, whatever. Problem is though
the Neospeech voices continue to sound fuzzy, distorted, etc  even
though I properly disposed of the old Sapi speech engine and
initialized the new one. I don't have this problem when switching from
the ATT voices to Microsoft Anna or to the Realspeak voices that
ships with Jaws 9. This leads me to believe that the Neospeech voices
have some problems not shared by other TTS engines out there.

On 1/12/11, Jim Kitchen j...@kitchensinc.net wrote:

Hi Thomas,

I know that in my games I need to reset the sapi5 voice engine before
changing engines.  That is going from an ATT voice to a Neo Speech,
Microsoft or Cepstral.  Otherwise the voice is all very distorted and 
fuzzy.


So I do the below code whenever changing to a new voice.  nov being the
number of the new voice.

Set Voice = Nothing
Set Voice = New SpVoice
Set Voice.Voice = Voice.GetVoices().Item(nov)

So that is just in VB6 with the sapi5 voices.

HTH

BFN

 Jim



---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to 
gamers-unsubscr...@audyssey.org.

You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the 
list,

please send E-mail to gamers-ow...@audyssey.org.


-
No virus found in this message.
Checked by AVG - www.avg.com
Version: 10.0.1191 / Virus Database: 1435/3375 - Release Date: 01/12/11




---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.


[Audyssey] BGT future development - My replies

2011-01-11 Thread Philip Bennefall
Hi all,

Thank you for the large number of suggestions! I'll respond to you all below in 
one big message, as to avoid cluttering up the list.

Thomas. If I added force feedback I think it would actually be advantageous for 
me to do everything through code, as the goal of BGT is to wrap everything for 
the end users without requiring use of the underlying facilities. I'll 
definitely look into it.

Kai. I have looked into XInput, but it does not support neither keyboards nor 
mouse devices which makes it rather unatractive for me. The only reason then to 
use it would be for extended joystick and game pad support which is certainly 
an option, but not something I'm sure about just yet. As for Midi support, I 
don't think this will happen. In order to provide a soundtrack that sounds the 
same for everyone, one would need to use some sort of instrument bank such as a 
soundfont or similar to play the music, which would require me to write an 
entire sound font player. This is not something that I'm very keen on doing at 
the moment. And as regards to reverse engineering, I'm doing as much as I can 
to avoid it (e.g. applying layers of encryption, not encrypting the actual 
script but rather the AngelScript byte code, including verification checks etc) 
but as with any software, it is not impossible. You can reverse engineer any 
program if you are determined enough, and BGT is no exception. Having said 
that, however, it certainly isn't easy. Lastly, Anti cheating is certainly 
possible in BGT. Right now there are only hash functions, but I can add a crc32 
function as well if there's an interest in that.

Allen. Multithreading would indeed be nice, but let's take a look at some of 
the practicalities there. Let us assume that you have two loops running in two 
separate threads, and they both modify the same global variable. You have no 
way of knowing what value the variable may or may not have, at any given time. 
To prevent this, we would need something similar to a critical section or a 
mutex to lock access to some resource during a short amount of time while a 
thread accesses or modifies it. Here we are getting into quite advanced 
concepts of programming (e.g. thread synchronization), which is way beyond the 
simplisity goals of BGT. Co-routines is one option that I am considering, 
however.

Hayden. The idea with the helper layer is that it is meant to be open source, 
so that users can go in and modify the includes to their liking. Something like 
the sound pool or the dynamic menu class are perfect examples where the 
functionality is necessary, but not really as part of the engine's foundation. 
This way, you are able to choose which of these components that you wish to 
include in your game rather than having them forced upon you. The engine 
implements all the low level control such as the sound and timer classes, and 
then it is up to the script writer to make use of these as I have done in these 
wrapper modules. In other words, the helper layer is meant to let you pick and 
choose which bits and pieces you do and do not want, which you can't do with 
the core functionality.

Ryan. Loading dll's would indeed be very useful, but the main issue is that 
AngelScript currently does not support variable parameter function calls or 
optional parameters to functions. I could do something in the preprocessor 
stage like VB 6 does, where you specify the name of the function that you want 
to import as well as the dll filename but this still leaves me with the problem 
of turning the AngelScript classes into structs when these are passed as 
parameters, for instance. In short, this is probably possible somehow but would 
require a huge amount of time. I'll keep it in mind though, and if a lot of 
people want it it will make its way into the engine eventually, as will COM 
support.

Bryan. I have an idea about what might be happening regarding your Sapi issues. 
In the dynamic menu class, if you do not specify a specific tts_voice object 
that you wish to use, a temporary one will be created for you behind the scenes 
if you are using tts options. The problem as I see it, is that NeoSpeech may 
not allow multiple instances of its engine to be run simultaneously and so the 
menu does not work. The solution is to always call the set_tts_object method in 
the class before calling any of the run methods, so that it uses your existing 
tts_voice object instance for its output.

Kind regards,

Philip Bennefall
---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.


Re: [Audyssey] BGT future development - My replies

2011-01-11 Thread Thomas Ward
Hi,

Philip wrote:

I have looked into XInput, but it does not support neither keyboards
nor mouse devices which makes it rather unatractive for me. The only
reason then
to use it would be for extended joystick and game pad support which is
certainly an option, but not something I'm sure about just yet.


my comments:

Agreed. For the record when we decided to go ahead and rewrite the G3D
engine in C++ we also looked at XInput rather than DirectInput, and
discovered the same exact problems and issues. XInput is primarily
designed as a cross-platform API for handling XInput compatible
joysticks and game controllers such as those for the Microsoft XBox
360 and/or third-party PC game controllers like the Logitech f510
specifically designed for XInput. As a result if we use XInput for
joysticks we still have to use something else for mice and keyboard
like the Win32 API for polling mouse and keyboard events from the OS.
Since polling the OS for keyboard and mouse events is less desirable
than using DirectInput going with XInput has very little value for us.
Especially, since our surveys seam to show most VI gamers prefer the
keyboard over mice and joysticks in a large amount of cases.


Philip wrote:

Multithreading would indeed be nice, but let's take a look at some of
the practicalities there. Let us assume that you have two loops
running in
two separate threads, and they both modify the same global variable.
You have no way of knowing what value the variable may or may not
have, at any given
time. To prevent this, we would need something similar to a critical
section or a mutex to lock access to some resource during a short
amount of time while
a thread accesses or modifies it. Here we are getting into quite
advanced concepts of programming (e.g. thread synchronization), which
is way beyond the
simplisity goals of BGT.


my comments:

Again, I have to agree. Multithreading is a very advanced area of
programming, and if people are having problems with BGT now throwing
multithreading in the mix would make things a lot more complex and
confusing for the average user of the product. Anyone who isn't an
expert at multithreading can create some extremely nasty bugs,
problems, and if they don't know what they are doing end up crashing
the end user's entire system because of a stupid mistake.  I have done
it myself quite on accident.

For example, in the G3D engine I use multithreading in order to
process input in one thread, process/update the enemy AI in another
thread, and so on. That is fine, but you really have to be careful
what thread a certain process was started on in order to shut it down
properly. Several months back when testers were exiting MOTA they got
a nasty blue screen on exit. It took me a good long while to find/fix
that bug. The problem turned out to be the fact I called the
WindowDestroy() function from the input thread, when the window was
created on the main thread. Since the window was actually created on
the main thread that meant that the WindowDestroy() function has to
also be called from the main thread. It is exactly this kind of
mistake new and experienced BGT developers could make if they aren't
careful of properly starting, stopping, updating, and locking threads.
I don't think some of these new developers are aware of how easy it is
to hang or lock up a computer using an improper  thread safe design.

Cheers!

---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.


Re: [Audyssey] BGT future development - My replies

2011-01-11 Thread shaun everiss
on the subject of sapi, bgt should always use the system default 
unless you choose.



Hi all,

Thank you for the large number of suggestions! I'll respond to you 
all below in one big message, as to avoid cluttering up the list.


Thomas. If I added force feedback I think it would actually be 
advantageous for me to do everything through code, as the goal of 
BGT is to wrap everything for the end users without requiring use of 
the underlying facilities. I'll definitely look into it.


Kai. I have looked into XInput, but it does not support neither 
keyboards nor mouse devices which makes it rather unatractive for 
me. The only reason then to use it would be for extended joystick 
and game pad support which is certainly an option, but not something 
I'm sure about just yet. As for Midi support, I don't think this 
will happen. In order to provide a soundtrack that sounds the same 
for everyone, one would need to use some sort of instrument bank 
such as a soundfont or similar to play the music, which would 
require me to write an entire sound font player. This is not 
something that I'm very keen on doing at the moment. And as regards 
to reverse engineering, I'm doing as much as I can to avoid it (e.g. 
applying layers of encryption, not encrypting the actual script but 
rather the AngelScript byte code, including verification checks etc) 
but as with any software, it is not impossible. You can reverse 
engineer any program if you are determined enough, and BGT is no 
exception. Having said that, however, it certainly isn't easy. 
Lastly, Anti cheating is certainly possible in BGT. Right now there 
are only hash functions, but I can add a crc32 function as well if 
there's an interest in that.


Allen. Multithreading would indeed be nice, but let's take a look at 
some of the practicalities there. Let us assume that you have two 
loops running in two separate threads, and they both modify the same 
global variable. You have no way of knowing what value the variable 
may or may not have, at any given time. To prevent this, we would 
need something similar to a critical section or a mutex to lock 
access to some resource during a short amount of time while a thread 
accesses or modifies it. Here we are getting into quite advanced 
concepts of programming (e.g. thread synchronization), which is way 
beyond the simplisity goals of BGT. Co-routines is one option that I 
am considering, however.


Hayden. The idea with the helper layer is that it is meant to be 
open source, so that users can go in and modify the includes to 
their liking. Something like the sound pool or the dynamic menu 
class are perfect examples where the functionality is necessary, but 
not really as part of the engine's foundation. This way, you are 
able to choose which of these components that you wish to include in 
your game rather than having them forced upon you. The engine 
implements all the low level control such as the sound and timer 
classes, and then it is up to the script writer to make use of these 
as I have done in these wrapper modules. In other words, the helper 
layer is meant to let you pick and choose which bits and pieces you 
do and do not want, which you can't do with the core functionality.


Ryan. Loading dll's would indeed be very useful, but the main issue 
is that AngelScript currently does not support variable parameter 
function calls or optional parameters to functions. I could do 
something in the preprocessor stage like VB 6 does, where you 
specify the name of the function that you want to import as well as 
the dll filename but this still leaves me with the problem of 
turning the AngelScript classes into structs when these are passed 
as parameters, for instance. In short, this is probably possible 
somehow but would require a huge amount of time. I'll keep it in 
mind though, and if a lot of people want it it will make its way 
into the engine eventually, as will COM support.


Bryan. I have an idea about what might be happening regarding your 
Sapi issues. In the dynamic menu class, if you do not specify a 
specific tts_voice object that you wish to use, a temporary one will 
be created for you behind the scenes if you are using tts options. 
The problem as I see it, is that NeoSpeech may not allow multiple 
instances of its engine to be run simultaneously and so the menu 
does not work. The solution is to always call the set_tts_object 
method in the class before calling any of the run methods, so that 
it uses your existing tts_voice object instance for its output.


Kind regards,

Philip Bennefall
---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding 

Re: [Audyssey] BGT future development - My replies

2011-01-11 Thread Bryan Peterson
That's the point. I had the Neospeach voices set as defaults whenever this 
happened. So I'm using ATT Mike at te moment despite that not being one of 
my favorite voices.

We are the Knights who say...Ni!
- Original Message - 
From: shaun everiss sm.ever...@gmail.com
To: Philip Bennefall phi...@blastbay.com; Gamers Discussion list 
gamers@audyssey.org

Sent: Tuesday, January 11, 2011 8:24 PM
Subject: Re: [Audyssey] BGT future development - My replies


on the subject of sapi, bgt should always use the system default unless 
you choose.



Hi all,

Thank you for the large number of suggestions! I'll respond to you all 
below in one big message, as to avoid cluttering up the list.


Thomas. If I added force feedback I think it would actually be 
advantageous for me to do everything through code, as the goal of BGT is 
to wrap everything for the end users without requiring use of the 
underlying facilities. I'll definitely look into it.


Kai. I have looked into XInput, but it does not support neither keyboards 
nor mouse devices which makes it rather unatractive for me. The only 
reason then to use it would be for extended joystick and game pad support 
which is certainly an option, but not something I'm sure about just yet. 
As for Midi support, I don't think this will happen. In order to provide a 
soundtrack that sounds the same for everyone, one would need to use some 
sort of instrument bank such as a soundfont or similar to play the music, 
which would require me to write an entire sound font player. This is not 
something that I'm very keen on doing at the moment. And as regards to 
reverse engineering, I'm doing as much as I can to avoid it (e.g. applying 
layers of encryption, not encrypting the actual script but rather the 
AngelScript byte code, including verification checks etc) but as with any 
software, it is not impossible. You can reverse engineer any program if 
you are determined enough, and BGT is no exception. Having said that, 
however, it certainly isn't easy. Lastly, Anti cheating is certainly 
possible in BGT. Right now there are only hash functions, but I can add a 
crc32 function as well if there's an interest in that.


Allen. Multithreading would indeed be nice, but let's take a look at some 
of the practicalities there. Let us assume that you have two loops running 
in two separate threads, and they both modify the same global variable. 
You have no way of knowing what value the variable may or may not have, at 
any given time. To prevent this, we would need something similar to a 
critical section or a mutex to lock access to some resource during a short 
amount of time while a thread accesses or modifies it. Here we are getting 
into quite advanced concepts of programming (e.g. thread synchronization), 
which is way beyond the simplisity goals of BGT. Co-routines is one option 
that I am considering, however.


Hayden. The idea with the helper layer is that it is meant to be open 
source, so that users can go in and modify the includes to their liking. 
Something like the sound pool or the dynamic menu class are perfect 
examples where the functionality is necessary, but not really as part of 
the engine's foundation. This way, you are able to choose which of these 
components that you wish to include in your game rather than having them 
forced upon you. The engine implements all the low level control such as 
the sound and timer classes, and then it is up to the script writer to 
make use of these as I have done in these wrapper modules. In other words, 
the helper layer is meant to let you pick and choose which bits and pieces 
you do and do not want, which you can't do with the core functionality.


Ryan. Loading dll's would indeed be very useful, but the main issue is 
that AngelScript currently does not support variable parameter function 
calls or optional parameters to functions. I could do something in the 
preprocessor stage like VB 6 does, where you specify the name of the 
function that you want to import as well as the dll filename but this 
still leaves me with the problem of turning the AngelScript classes into 
structs when these are passed as parameters, for instance. In short, this 
is probably possible somehow but would require a huge amount of time. I'll 
keep it in mind though, and if a lot of people want it it will make its 
way into the engine eventually, as will COM support.


Bryan. I have an idea about what might be happening regarding your Sapi 
issues. In the dynamic menu class, if you do not specify a specific 
tts_voice object that you wish to use, a temporary one will be created for 
you behind the scenes if you are using tts options. The problem as I see 
it, is that NeoSpeech may not allow multiple instances of its engine to be 
run simultaneously and so the menu does not work. The solution is to 
always call the set_tts_object method in the class before calling any of 
the run methods, so that it uses your existing tts_voice

Re: [Audyssey] BGT future development - My replies

2011-01-11 Thread Thomas Ward
Hi Bryan,

Well, if it makes you feel any better I've had my own troubles with
the Neospeech voices in games. For example, in an older release of the
G3D engine when I was toying around with Sapi 5 voices I noticed if I
used a different default voice such as ATT Mike and then switched to
Neospeech Kate the Neospeech voices would be very distorted and fuzzy
sounding. If I set Neospeech Kate as the system default voice and it
came up on start up it was crystal clear.I don't know why but those
voices, Neospeech Kate and Paul, also tend to cause programs like Text
Aloud to crash on me where no other Sapi 5 voice does that to me.
Personally, regardless of how good they may sound I think they are
buggy and the problems you are having may have nothing to do with BGT
but everything to do with those particular voices. This isn't the
first time I've seen problems like this with those voices.

On 1/11/11, Bryan Peterson bpeterson2...@cableone.net wrote:
 That's the point. I had the Neospeach voices set as defaults whenever this
 happened. So I'm using ATT Mike at te moment despite that not being one of
 my favorite voices.
 We are the Knights who say...Ni!

---
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/gamers@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.