/***************************************************/
/* LOAD IN STUDIO 16 AREXX SO WE CAN SEND COMMANDS */
/***************************************************/
address command 'studio16:studio16'
/*address command 'studio16:c/studioOpen'*/ /* DO COMMANDS WITHOUT OPENING SCREEN */
address command 'WaitForPort Studio16.1'
/***************************************************/
NL = '00'X
CHAN_INPUT  = '1'
CHAN_PLAY   = '2'       /* Constants */
CHAN_OUTPUT = '3'
/***************************************************/
/** ERRORS **/
/**********
#define RX_ER_NO_HANDLER 21
#define RX_ER_INVALID_CHAN_TYPE 22
#define RX_ER_COULD_NOT_OPEN_SAMPLE 23
#define RX_ER_UNSUPORTED_PARAMETER 11
#define RX_ER_COULD_NOT_ALLOCATE_KEY 12
#define RX_ER_COULD_NOT_FIND_SAMPLE 13
#define RX_ER_INVALID_PARAMETER 14
#define RX_ER_TIME_CODE_PAST 6
*********/
/***************************************************/
options results
/***************************************************/
address 'Studio16.1'
/***************************************************/


/***************************************************/
/*** Studio 16/Rex Version    'S16Version'       ***/
/***     IN: NONE                                ***/
/***    OUT: Version String                      ***/
/***************************************************/
S16Version
say 'You are using ' result
/***************************************************/




/***************************************************/
/*** Studio Screen To Front   'S16ToFront;       ***/
/***     IN: NONE                                ***/
/***    OUT: NONE                                ***/
/***************************************************/
S16ToFront
/***************************************************/
/***************************************************/





/***************************************************/
/*** Changing Sampling Rate,  'S16Rate'          ***/
/***     IN: Desired Sampling Rate (samp/sec)    ***/
/***    OUT: Actual Rate (samp/sec)              ***/
/***************************************************/
S16Rate 44100
say 'Actual Sampling Rate: ' result 'samps/sec'
/***************************************************/
/* Try Every Rate */
/*rate=100000
S16Rate rate
LastRate=result
do while (rate > LastRate)
	rate=LastRate-1
	S16Rate rate
	LastRate=result
end*/
/***************************************************/
/***************************************************/


/***************************************************/
/*** Changing Filter Cutoff,  'S16Filter'        ***/
/***     IN: Desired Filter Cutoff (Hz)          ***/
/***    OUT: Actual Filter Cutoff (Hz)           ***/
/***************************************************/
S16Filter 20000
say 'Actual Filter Cutoff: ' result 'Hz'
/***************************************************/
/* Try Every Filter */
/*filt=100000
S16Filter filt
Lastfilt=result
do while (filt > Lastfilt)
	filt=Lastfilt-1
	S16Filter filt
	Lastfilt=result
end*/
/***************************************************/
/***************************************************/



/***************************************************/
/*** Changing Input Gain,   'S16Gain'            ***/
/***     IN: Desired Gain (dBs)                  ***/
/***    OUT: Actual Gain (dBs)                   ***/
/***************************************************/
S16Gain 106
say 'Actual Gain: ' result 'dBs'
/***************************************************/
/***************************************************/
/***************************************************/



/***************************************************/
/*** Changing a Channel Pan   'S16Pan'           ***/
/***     IN: Type Of Channel   (EG. CHAN_PLAY)   ***/
/***     IN: Channel Number                      ***/
/***     IN: Desired Pan (dBs)                   ***/
/***    OUT: Actual Pan (dBs)                    ***/
/***                                             ***/
/***   NOTE: Pan full Left=0, Center=100         ***/
/***         full Right=200                      ***/
/***************************************************/
S16Pan CHAN_PLAY 1 000  /* Left */
say 'Actual Pan: ' result 'dBs'

S16Pan CHAN_PLAY 2 100  /* Center */
S16Pan CHAN_PLAY 3 200  /* Right */
S16Pan CHAN_PLAY 4 106  /* 6dBs to Right */
/***************************************************/
/***************************************************/



/***************************************************/
/*** Changing Channel Volume   'S16ChanVol'      ***/
/***     IN: Type Of Channel   (EG. CHAN_PLAY)   ***/
/***     IN: Channel Number                      ***/
/***     IN: Channel Value (100-dBs)             ***/
/***    OUT: Actual Filter Cutoff                ***/
/***                                             ***/
/***   NOTE: Off=0  0dBs=100                     ***/
/***         ActualdBs=Parm-100                  ***/
/***************************************************/
S16ChanVol CHAN_OUTPUT 1 100	/*   0dBs */
say 'Actual Channel Volume: ' result 'dBs'

S16ChanVol CHAN_INPUT  1 100	/*   0dBs */
S16ChanVol CHAN_PLAY   1 106	/*   6dBs */
S16ChanVol CHAN_PLAY   2 94	/*  -6dBs */
S16ChanVol CHAN_PLAY   3 88	/* -12dBs */
S16ChanVol CHAN_PLAY   4 00	/* -OOdBs */
/***************************************************/
/***************************************************/




/***************************************************/
/*** Play Sample  'S16Play'                      ***/
/***     IN: Complete Sample Path                ***/
/***    OUT: NONE                                ***/
/***************************************************/
/*S16Play 'toddaudio:11_Intro'*/
/***************************************************/




/***************************************************/
/*** Current Smpte Time   'S16QuerySmpteTime'    ***/
/***     IN: NONE                                ***/
/***    OUT: TimeCodeString                      ***/
/***************************************************/
S16QuerySmpteTime
say 'Current Smpte Time is: ' result
/***************************************************/



/***************************************************/
/*** Wait For Time Code 'S16WaitTimeCode         ***/
/***     IN: TimeCode String                     ***/
/***    OUT: error 0 if tc found                 ***/
/***    OUT: error 6 if tc past                  ***/
/***************************************************/
/*S16WaitTimeCode '00:00:10:00'*/
/***************************************************/




/***************************************************/
/* Example of triggering a sound on a specific tc  */
/***************************************************/
/*S16Open 'toddaudio:11_Intro'
key=result   */ /* 'S16Open' returns a key needed for S16Trigger and S16Close */
/*
S16Notify 'Waiting for time code '||NL||'Click OK then start Time Code'||NL||NL
say 'Waiting for time code 00:00:10:00'
S16WaitTimeCode '00:00:10:00'
S16Trigger key
S16Close key*/
/***************************************************/

/***************************************************/
/* Another Example of triggering a sound  */
/***************************************************/
/*
S16OpenWithAutoClose 'toddaudio:11_Intro'
key=result
S16Trigger key
*/


/***************************************************/
/*** Studio Screen To Back    'S16ToBack'        ***/
/***     IN: NONE                                ***/
/***    OUT: NONE                                ***/
/***************************************************/
S16ToBack
/***************************************************/


/***************************************************/
/*** Stop All Playback    'S16StopAllPlayback'   ***/
/***     IN: NONE                                ***/
/***    OUT: NONE                                ***/
/***************************************************/
S16StopAllPlayback
/***************************************************/


/***************************************************/
/*** Exit Studio 16 Program   'S16Exit'          ***/
/***     IN: NONE                                ***/
/***    OUT: NONE                                ***/
/***************************************************/
S16Exit
/***************************************************/


