# Play and record: playrec

playrec demonstrates voice play and record using asynchronous buffer submission and play and record callback routines. This demonstration operates in two phases: asynchronous voice play and record operations, and callback voice play and record operations.

If you do not specify a buffer size on the command line (-z), playrec retrieves the board physical buffer using adiGetEncodingInfo.

The demonstration is constructed so that the play and record functions are synchronous within the application. This is a single-port, single-threaded demonstration.

Note: adiStartPlaying and adiStartRecording (and consequently, this demonstration program) are not supported while Natural Access is running in client/server mode.

#### Usage

playrec [options]

where options are:

Option | Use this option to...
--- | ---
-? | Display command line options.
-h | Display command line options.
-b n | Specify the board number n. Default is 0.
-s n:m | Specify MVIP stream and timeslot. Default is 0:0.
-r n | Specify the maximum recording duration (in seconds).
-z n | Specify the application buffer size. Must be a multiple of NMS_24 frame size (62).

#### Featured functions

adiGetEncodingInfo, adiPlayAsync, adiRecordAsync, adiStartPlaying, adiStartRecording, adiSubmitPlayBuffer, adiSubmitRecordBuffer

#### Running playrec

The following procedure assumes that you are using an AG 2000 DID board with a 2500-type telephone connected to one of the lines.

To run playrec:

Step | Action
1 | Navigate to the \nms\ctaccess\demos\playrec directory.
2 | Start playrec by entering the following command at the prompt: playrec [-b n -s n:m -r n -z n] Make sure that you specify the proper board and timeslot. The default value for both arguments is 0 (zero). You are prompted to record a brief message. The prompt is played using asynchronous buffer submission and ADIEVN_PLAY_BUFFER_REQ is displayed on your screen (assuming you did not specify an application buffer large enough to fit the whole prompt file). You can prematurely terminate the prompt by entering a touchtone.
3 | At the record beep prompt, begin speaking. ADIEVN_RECORD_BUFFER_FULL displays on your screen for each buffer_size time period.
4 | You can prematurely terminate the recording by entering a touchtone or by ceasing to speak. The recording you just made is played back. Again, the message ADIEVN_PLAY_BUFFER_REQ displays on your screen.
5 | Repeat steps 2 and 3. The process repeats using callback mode. Since Natural Access automatically invokes the callback routine, the displayed event messages are replaced with the corresponding callback events.

Note: This demonstration program enables you to experiment with buffer sizes. The encoding format for the files is ADI_ENCODE_NMS_24, which has a 62-byte frame size. Buffer sizes you specify with the -z option must therefore be multiples of 62.