[comp.sys.mac.hypercard] XCmds, Speaker Volume, and Macintalk

marvel@tut.cis.ohio-state.edu (Howard P. Marvel) (03/08/89)

The situation:  I wish to offer students using some courseware that I am
writing the opportunity to change the volume of the Macintosh speaker.
I have followed the suggestion in Inside Mac that one should use
SetSoundVol to choose a new speaker volume and have an XCmd that gets
a student's choice and resets the speaker with this routine.  I save
the speaker volume setting on entry  into hypercard, reset with the
setting used in the last invocation of the courseware, and then reset
to the initial setting on exit.  Everything works fine, except that I
also use Macintalk at some points in the stack.  It appears that Macintalk
does not follow the Inside Mac suggestion and instead resets the
parameter RAM.  

Questions:
1.  Does this diagnosis sound correct?  The problem is that the
speaker volume setting chosen by the student is not preserved when
Macintalk is accessed.
2.  Is there some way to prevent Macintalk from acting in this
antisocial way?
3.  Barring that, can someone send me a sample of how one resets the
parameter RAM from THINK C?  Or should I store and reset speaker
volume in the XCmd that speaks a string?

All in all, this seems pretty weird, but I tried invoking the Moose while
using Hypercard, and sure enough, my internal speaker setting was trashed.

Howard P. Marvel
Professor of Economics
marvel@cis.ohio-state.edu
hmarvel@econ.ohio-state.edu