[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

TABLE OF CONTENTS

narrator.device/AbortIO
narrator.device/OpenDevice
narrator.device/CMD_FLUSH
narrator.device/CMD_READ
narrator.device/CMD_RESET
narrator.device/CMD_START
narrator.device/CMD_STOP
narrator.device/CMD_WRITE
narrator.device/CloseDevice


narrator.device/AbortIO                             narrator.device/AbortIO

   NAME
        AbortIO - Abort an IO request


   SYNOPSIS
        AbortIO(IORequest)
                   A1


   FUNCTION
        Exec library call to abort a specified READ or WRITE request.
        The IORequest may be in the queue or currently active.  If
        currently active, the request is immediately stopped and then
        removed.


   INPUTS
        Pointer to the IORequest block to be aborted.


   RESULTS
        io_Error field in the IORequest block set to #IOERR_ABORTED.


   SEE ALSO



narrator.device/CloseDevice                       narrator.device/CloseDevice

   NAME
        CloseDevice - terminates access to the narrator device


   SYNOPSIS
        CloseDevice(IORequest)
                       A1

   FUNCTION
        Close invalidates the IO_UNIT and IO_DEVICE fields in the
        IORequest block, preventing subsequent IO until another
        OpenDevice.  CloseDevice also reduces the open count.  If
        the count goes to 0 and the expunge bit is set, the device
        is expunged.  If the open count goes to zero and the delayed
        expunge bit is not set, CloseDevice sets the expunge bit.


   INPUTS
        A valid IORequest block with its io_Message structure, and
        io_Device and io_Unit fields properly initialized.  These
        fields are initialized by OpenDevice.


   RESULTS
        CloseDevice invalidates the unit and device pointers in the
        IORequest block.


   SEE ALSO



narrator.device/CMD_FLUSH                       narrator.device/CMD_FLUSH

   NAME
        CMD_FLUSH - Aborts all inprogress and queued requests


   SYNOPSIS
        Standard device command.


   FUNCTION
        Aborts all inprogress and queued speech requests.


   INPUTS
        Valid IORequest block with the io_Command field set to CMD_FLUSH.
        A valid IORequest block is one with its io_Message structure, and
        io_Device and io_Unit fields properly initialized.  The easiest
        way to insure proper initialization is to make a copy of the
        IORequest block after a successful OpenDevice call.


   RESULTS
        io_Error in IORequest block set to 0


   SEE ALSO
        Exec input/output documentation.


narrator.device/CMD_Read                        narrator.device/CMD_Read

   NAME
        CMD_READ - Query the narrator device for mouth shape or other
                   synchronization events.


   SYNOPSIS
        Standard device command.


   FUNCTION
        Currently, there are three events which the user can inquire
        about from the narrator device.  These are: mouth shape changes,
        start of word, and start of syllable.  Each read request returns
        information about any or all of these events as determined by
        the bits set in the sync field of the read IORequest block.  In
        the case of mouth shape changes, each shape returned is guaranteed
        to be different from the previously returned shape to allow
        updating to be done only when necessary.  Each read request is
        associated with a write request by information contained in the
        IORequest block used to open the device.  Since the first field
        in the read IORequest block is a write IORequest structure, this
        association is easily made by copying the write IORequest block
        (after the OpenDevice call) into the voice field of the read
        IORequest block.  If there is no write in progress or in the
        device input queue with the same pseudo unit number as the read
        request, the read will be returned to the user with an error.  This
        is also how the user knows that the write request has finished and
        that s/he should not issue any more reads.  Note that in this case
        the mouth shapes may not be different from previously returned values.


   INPUTS
        mouth_rb IORequest block with the voice field (a narrator_rb
        structure) copied from the associated write request with the
        following fields modified:

           io_Message - Pointer to message port for read request
           io_Command - CMD_READ
           io_Error   - Clear before issuing first read
           width      - 0
           height     - 0


   RESULTS
        As long as the speech is in progress, each read returns the
        following information in the mouth_rb IORequest block.

        If mouth shape changes are requested the following fields are
        modified:
           width  - Contains mouth width value in arbitrary units
           height - Contains mouth height value in arbitrary units
           shape  - Compressed form of mouth shapes (internal use only)


        ******  NEW FOR V37 NARRATOR

        If word synchronization is requested:
           sync   - Bit NDB_WORDSYNC is set

        If syllable synchronization is requested:
           sync   - Bit NDB_SYLSYNC is set

        Note that any or all of the above fields can be set and it is
        the user's responsibility to check for all possibilities.


   SEE ALSO
        CMD_WRITE
        Exec input/output documentation.


narrator.device/CMD_RESET                           narrator.device/CMD_RESET

   NAME
        CMD_RESET - Reset the device to a known state


   SYNOPSIS
        Standard device command.


   FUNCTION
        Resets the device as though it has just be initialized.
        Aborts all read/write requests whether active of enqueued.
        Restarts device if it has been stopped.


   INPUTS
        Valid IORequest block with the io_Command field set to CMD_RESET.
        A valid IORequest block is one with its io_Message structure, and
        io_Device and io_Unit fields properly initialized.  The easiest
        way to insure proper initialization is to make a copy of the
        IORequest block after a successful OpenDevice call.


   RESULTS


   SEE ALSO
        Exec input/output documentation.




narrator.device/CMD_START                           narrator.device/CMD_START


   NAME
        CMD_START - Restarts the device after a CMD_STOP command


   SYNOPSIS
        Standard device command.


   FUNCTION
        CMD_START restarts the currently active speech (if any) and
        allows queued requests to start.


   INPUTS
        Valid IORequest block with the io_Command field set to CMD_START
        A valid IORequest block is one with its io_Message structure, and
        io_Device and io_Unit fields properly initialized.  The easiest
        way to insure proper initialization is to make a copy of the
        IORequest block after a successful OpenDevice call.


   RESULTS
        io_Error set to 0.


   SEE ALSO
        Exec input/output documentation.




narrator.device/CMD_STOP                            narrator.device/CMD_STOP

   NAME
        CMD_STOP  - Stops the device.


   SYNOPSIS
        Standard device command.


   FUNCTION
        CMD_STOP halts the currently active speech (if any) and prevents
        any queued requests from starting.


   INPUTS
        Valid IORequest block with the io_Command field set to CMD_STOP.
        A valid IORequest block is one with its io_Message structure, and
        io_Device and io_Unit fields properly initialized.  The easiest
        way to insure proper initialization is to make a copy of the
        IORequest block after a successful OpenDevice call.


   RESULTS
        io_Error set to 0.


   SEE ALSO
        Exec input/output documentation.


narrator.device/CMD_WRITE                           narrator.device/CMD_WRITE

   NAME
        CMD_WRITE - Send speech request to the narrator device


   SYNOPSIS
        Standard device command.


   FUNCTION
        Sends a phonetic string to the narrator device to be spoken
        and, optionally, is used to direct the narrator device to
        return mouth shape changes, and word and syllable sync events
        in response to read requests from the user.  The phonetic string
        consists of ASCII characters representing the individual phonemes.
        Refer to the narrator device chapter of the libraries and devices
        volume of the ROM Kernel Manual for detailed information.


   INPUTS
        User IORequest block (struct narrator_rb as defined in .h file).
        The OpenDevice call will initialize the IORequest block to a
        "standard male" voice.  If you want to change any parms, do so
        after the OpenDevice call and before the DoIO (or SendIO/WaitIO).
        For a complete description of the narrator_rb structure, see the
        narrator.h or .i include file.  Note that the OpenDevice call does
        not initialize all the fields needed by the narrator device.  The
        IORequest fields which must be set by the user before issuing the
        write request are:

           io_Command - Set to CMD_WRITE
           io_Data    - Pointer to phonetic string
           io_Length  - Length of phonetic string
           ch_masks   - Array of audio channel selection masks (see audio
                        device documentation for description of this field)
           nm_masks   - Number of audio channel selection masks

           ****** NEW FOR V37 NARRATOR

           flags - The bit NDB_NEWIORB must be set in the flags field if
                   any of the new features of the V37 narrator are used


        In addition to producing synthetic speech, the narrator device
        also provides features for synchronizing the speech to animation
        or other user defined events.  There are three types of events
        that the user can request.  They are mouth shape changes, start of
        new word, and start of new syllable.  Mouth shape changes are
        requested by setting the mouths field of the IORequest block to a
        non-zero value.  Word and syllable sync events are requested by
        setting the NDB_WORDSYNC and/or NDB_SYLSYNC bits in the flags field
        of the IORequest block.  Note that word and syllable sync only work
        in V37 and later versions of the narrator device.


   RESULTS
        The narrator device range checks and performs other validity
        checks for all input parms.  If any input is in error, the device
        sets the io_Error field of the IORequest block to an appropriate
        value (see include files for error codes).  If everything is in
        order, the narrator device will produce the speech and clear the
        io_Error field.  The io_Actual field is set to the length of the
        input string that was actually processed.  If the return code
        indicates a phoneme error (ND_PhonErr), io_Actual is the NEGATIVE
        of the position in the input string where the error occured.


   SEE ALSO
        Read command.
        Audio device documentation.
        Exec input/output documentation.


narrator.device/OpenDevice                          narrator.device/OpenDevice

   NAME
        OpenDevice - opens the narrator device.


   SYNOPSIS
        error = OpenDevice("narrator.device",  unit, IORequest, flags);
         D0                       A0            D0     A1         D1


   FUNCTION
        The OpenDevice routine grants access to the narrator device.
        OpenDevice checks the unit number, and if non-zero, returns an
        error (ND_UnitErr).  If this is the first time the driver has
        been opened, OpenDevice will attempt to open the audio device
        and allocate the driver's static buffers.  If either of these
        operations fail, an error is returned.  See the .h and .i
        include files for possible error return codes.  Next, OpenDevice
        (done for all opens, not just the first one) initializes various
        fields in the user's IORequest block (see below).  If users wish
        to use non-default values for these parms, the values must be set
        after the open is done.  OpenDevice also assigns a pseudo unit
        number to the IORB for use in synchronizing read and write requests.
        See the read command for more details.  Finally, OpenDevice stores
        the device node pointer in the IORequest block and clears the
        delayed expunge bit.

        ***** NEW FOR V37 NARRATOR *****

        Several new fields in the IORequest block have been added for V37
        narrator.  These fields are initialized when the device is opened
        if the NDB_NEWIORB bit is set in the flags field of the user's
        IORequest block.  Note that NDB_NEWIORB is set in the IORequest
        block, NOT in the "flags" input parm to the OpenDevice call.


   INPUTS
        device     - "narrator.device"
        unit       - 0
        IORequest  - Pointer to the user's IORequest block
        flags      - 0


   RESULTS
        The narrator device will initialize the IORequest block as follows
        (assume IORB points to the IOrequest block):

        IORB->rate = 150;          /* Speaking rate in words/minute */
        IORB->pitch = 110;         /* Baseline pitch in Hertz      */
        IORB->mode = NATURALF0;            /* Pitch (F0) mode              */
        IORB->sex = MALE;          /* Sex of voice                 */
        IORB->volume = 64          /* Volume, full on              */
        IORB->sampfreq = 22200             /* Audio sampling freq          */
        IORB->mouths = 0           /* Don't generate sync events   */

        and if the NDB_NEWIORB bit is set:

        IORB->F0enthusiasm = 0             /* F0 excursion factor          */
        IORB->F0perturb = 32               /* F0 perturbation (in 32nds)   */
        IORB->F1adj = 0                    /* F1 adjustment in ±5% steps      */
        IORB->F2adj = 0            /* F2 adjustment in ±5% steps      */
        IORB->F3adj = 0                    /* F3 adjustment in ±5% steps      */
        IORB->A1adj = 0                    /* A1 adjustment in decibels    */
        IORB->A2adj = 0                    /* A2 adjustment in decibels    */
        IORB->A3adj = 0                    /* A3 adjustment in decibels    */
        IORB->articulate = 100             /* Transition time multiplier   */
        IORB->centralize = 0               /* Degree of vowel centralization */
        IORB->centphon = ""              /* Pointer to central ASCII phon  */
        IORB->AVbias = 0           /* AV bias                      */
        IORB->AFbias = 0           /* AF bias                      */
        IORB->priority = 100               /* Priority while speaking      */



   SEE ALSO
        The include files contain the complete IORequest block definition,
            default settings, and error return codes.
        Exec input/output documentation.