home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
mus
/
Maestix
/
maestix.doc
< prev
next >
Wrap
Text File
|
1995-06-26
|
17KB
|
517 lines
TABLE OF CONTENTS
maestix.library/AllocMaestro
maestix.library/FlushReceive
maestix.library/FlushTransmit
maestix.library/FreeMaestro
maestix.library/GetStatus
maestix.library/ReceiveData
maestix.library/SetMaestro
maestix.library/StartRealtime
maestix.library/StopRealtime
maestix.library/TransmitData
maestix.library/AllocMaestro maestix.library/AllocMaestro
NAME
AllocMaestro -- Allocates the MaestroPro sound board (V35)
SYNOPSIS
MaestroBase = AllocMaestro(TagList)
D0.l A0.l
struct MaestroBase* AllocMaestro(struct TagItem*);
MaestroBase = AllocMaestroTags(Tag1,...)
struct MaestroBase* AllocMaestroTags(ULONG,...);
FUNCTION
This function allocates the MaestroPro sound board and gives
exclusive access to the client.
The default settings after AllocMaestro() are:
- Input is INPUT_STD,
- Output is OUTPUT_BYPASS,
- Studio mode is turned off,
- Copy protection is turned off,
- Emphasis is turned off,
- Source is DAT,
- Rate is 48kHz,
- Validity is true,
- the UDBs are reset.
INPUTS
TagList -- Reserved for future options. Currently always
NULL or a pointer to TAG_DONE.
RESULTS
MaestroBase -- MaestroBase structure (private) or NULL, if
the board has already been allocated or is
not present.
NOTES
This function must be used from DOS process only!
SEE ALSO
FreeMaestro()
BUGS
This function cannot prevent the MacroSystem programs (MaestroBR
and Samplitude) from using MaestroPro, too.
This function tries to detect if such a program is currently
using the board, and does not allow a second allocation. But
this try may fail, so be aware! Since some old Maestix failed
even in the case the board was not allocated, this test was
removed in V37. Use AllocMstx and FreeMstx to avoid this
problem.
maestix.library/FlushReceive maestix.library/FlushReceive
NAME
FlushReceive -- Stops receiver and replies all messages (V36)
SYNOPSIS
FlushReceive(MaestroBase)
A0.l
void FlushReceive(struct MaestroBase*);
FUNCTION
This function stops the receiver.
All messages sent to Maestix by ReceiveData() are replied.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushTransmit(), ReceiveData()
BUGS
maestix.library/FlushTransmit maestix.library/FlushTransmit
NAME
FlushTransmit -- Stops transmission and replies all messages (V36)
SYNOPSIS
FlushTransmit(MaestroBase)
A0.l
void FlushTransmit(struct MaestroBase*);
FUNCTION
This function stops the transmitter.
All messages sent to Maestix by TransmitData() are replied.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushReceive(), TransmitData()
BUGS
maestix.library/FreeMaestro maestix.library/FreeMaestro
NAME
FreeMaestro -- Frees the MaestroPro sound board (V35)
SYNOPSIS
FreeMaestro(MaestroBase)
A0.l
void FreeMaestro(struct MaestroBase*);
FUNCTION
The client must use this function to free the MaestroPro when
he does not need it any more.
All messages previously sent to Maestix will be replied. The
FIFOs are cleared, the board is reset and switches to bypass
mode.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
RESULTS
NOTES
This function must be used from DOS process only!
SEE ALSO
AllocMaestro()
BUGS
maestix.library/GetStatus maestix.library/GetStatus
NAME
GetStatus -- Returns the current board status (V35)
SYNOPSIS
Status = GetStatus(MaestroBase,InfoType)
D0.l A0.l D0.l
ULONG GetStatus(struct MaestroBase*,ULONG);
FUNCTION
The status fitting to the InfoType will be returned.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
InfoType -- type code (MSTAT_...) of the status value
that you require.
RESULTS
Status -- the result of the status query.
NOTES
The following info types are existing:
MSTAT_TFIFO -- (ULONG) status of transmitter FIFO
- FIFO_Off -> transmitter is off
- FIFO_Running -> transmission is running
- FIFO_Error -> an error occured since
last query
MSTAT_RFIFO -- (ULONG) status of receiver FIFO
- FIFO_Off -> receiver is off
- FIFO_Running -> receiver is running
- FIFO_Error -> an error occured since
last query
MSTAT_Signal -- (BOOL) checks the signal at the current
INPUT. FALSE if there is no signal.
MSTAT_Emphasis -- (BOOL) returns TRUE if the input signal
has been recorded using emphasis.
MSTAT_DATsrc -- (BOOL) returns TRUE if the data source is
a DAT or DCC recorder.
MSTAT_CopyProh -- (BOOL) returns TRUE if copy protection is
requested from source. It is not possible
to detect if it is an original or a copy!
MSTAT_Rate -- (ULONG) returns input rate.
MSTAT_UDB -- (UBYTE) [V37] returns the current UDBs.
SEE ALSO
BUGS
maestix.library/ReceiveData maestix.library/ReceiveData
NAME
ReceiveData -- Receives data into a message (V35)
SYNOPSIS
ReceiveData(MaestroBase,DataMessage)
A0.l A1.l
void ReceiveData(struct MaestroBase*,struct DataMessage*)
FUNCTION
The client has to fill out a DataMessage structure with a
reply port, a pointer to a data buffer and the size of this
buffer.
This message is queued internally. If the receiver has not
been started yet, this function will activate it.
The buffer space get filled with the incoming data and will
be replied to the declared reply port when the space has been
filled completely.
If there are no more messages in the queue, the receiver
will be stopped automatically, and an error is reported.
The buffer is filled with signed words. The first word always
belongs to the left channel, the second to the right, and so
on.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
DataMessage -- DataMessage structure to a system message
with a pointer to a buffer space for
incoming data.
RESULTS
NOTES
The buffer space must be public memory. Its address must be
longword aligned, its length must be aligned to 1024 and the
size should be big enough (at least 10Kbyte).
A realtime FX must be stopped before!
SEE ALSO
TransmitData(), FlushReceive(), StopRealtime()
BUGS
maestix.library/SetMaestro maestix.library/SetMaestro
NAME
SetMaestro -- Sets the MaestroPro parameters (V35)
SYNOPSIS
SetMaestro(MaestroBase,TagList)
A0.l A1.l
void SetMaestro(struct MaestroBase*,struct TagItem*);
SetMaestroTags(MaestroBase,Tag1,...)
void SetMaestroTags(struct MaestroBase*,ULONG,...);
FUNCTION
The board parameters are changed by the provided tags.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
TagList -- Tag list with the changes to be done
RESULTS
TAGS
MTAG_Input -- (ULONG) selects the input that shall be used.
Default is INPUT_STD, which is the input
selected by SetMstx. INPUT_OPTICAL and
INPUT_COAXIAL select the corresponding input.
INPUT_SRC48K selects the internal 48kHz
source.
MTAG_Output -- (ULONG) selects the data source for the
MaestroPro output. Default is OUTPUT_BYPASS
which leads the incoming data directly to the
output. OUTPUT_INPUT decodes the input signal
and encodes it with new channel status bits and
user data bits. OUTPUT_FIFO encodes the
transferred data to output.
MTAG_SetCSB -- (ULONG) the 32 bit will be put into the channel
status bits directly. This tag should be used
only exceptional.
MTAG_SetUDB -- (ULONG) the 32 bit will be put into the user
data bits.
MTAG_Studio -- (BOOL) the studio mode is selected if this
tag is TRUE, otherwise the custom mode is
selected. Defaults to FALSE.
MTAG_CopyProh -- (ULONG) CPROH_OFF turns the copy protection
off. CPROH_ON enables the copy protection,
but one single digital copy can be made.
CPROH_PROHIBIT turns the copy protection on;
the signal cannot be recorded. CPROH_INPUT
turns the copy protection on or off
corresponding to the input signal. Default
is CPROH_OFF.
MTAG_Emphasis -- (ULONG) EMPH_OFF turns emphasis off.
EMPH_50us (= EMPH_ON) turns standard emphasis
on. When using studio mode, EMPH_CCITT and
EMPH_MANUAL can be selected, too. EMPH_INPUT
chooses the emphasis corresponding to the
input signal. Default is EMPH_OFF.
MTAG_Source -- (ULONG) selects the source category code.
Default is SRC_DAT. Other codes are SRC_DSR,
SRC_CD, SRC_ADCONV and SRC_INSTR. SRC_INPUT
selects SRC_DAT or SRC_CD, corresponding to
the input signal.
MTAG_Rate -- (ULONG) selects the rate. RATE_48000 is
default, RATE_44100, RATE_32000 and
RATE_48000MANU are possible, too. RATE_INPUT
chooses a rate corresponding to the input
signal.
MTAG_Validity -- (BOOL) TRUE if the output signal is valid,
otherwise FALSE. Most receivers do not react
if MTAG_Validity is FALSE.
MTAG_ResetUDB -- if this tag occures, UDBs are reset and will
not be put out any more.
MTAG_ResetLSA -- [V37] this tag clears the local sample address
which is used in studio mode transfers only.
NOTES
Note that MTAG_Rate will only be transmitted in the channel
status bits and is completely independent to the rate that
MaestrPro uses for data transfer. MaestroPro is only capable
to generate a 48kHz rate (INPUT_SRC48K). If another rate is
required, it must be put to the choosen input.
Some receivers do not accept the incoming signal if the
transmitted rate is not equal to the transfer rate.
A DAT delay will be executed if the current input/output are
changed by MSTAG_Input and/or MSTAG_Output. Note that this
delay may wait up to 30 seconds!
This function must be used from DOS process only!
SEE ALSO
BUGS
maestix.library/StartRealtime maestix.library/StartRealtime
NAME
StartRealtime -- Starts realtime FX (V38)
SYNOPSIS
StartRealtime(MaestroBase,TagList)
A0.l A1.l
void StartRealtime(struct MaestroBase*,struct TagItem*);
StartRealtimeTags(MaestroBase,Tag1,...)
void StartRealtimeTags(struct MaestroBase*,ULONG,...);
FUNCTION
This function starts a realtime effect. Before that, the used
input and OUTPUT_FIFO should be selected.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
TagList -- TagList with the effect parameter
RESULTS
TAGS
MTAG_Effect -- (ULONG) selects one of the internal effects
(default: RFX_Bypass). See include file for
all available effects.
MTAG_A0 -- (APTR) effect parameter
MTAG_A1 -- (APTR) effect parameter
MTAG_D2 -- (APTR) effect parameter
MTAG_D3 -- (APTR) effect parameter
MTAG_CustomCall -- (APTR) pointer to a custom effect routine,
written in highly optimized assembly!
NOTES
The custom effect routine gets the following parameters:
-> D0.w -- left data word
-> D1.w -- right data word
-> D2.l -- see MTAG_D2
-> D3.l -- see MTAG_D3
-> D6.l -- scratch
-> D7.l -- scratch
-> A0.l -- see MTAG_A0
-> A1.l -- see MTAG_A1
-> A2.l -- return address to be JMPed to...
The routine's results are:
<- D0.w -- new left data word
<- D1.w -- new right data word
The register D2 to D5 and A0 to A7 must not be changed!
Use "JMP (A2)" to return from the effect routine. Don't use RTS.
The effect routine must be in MEMF_PUBLIC memory. Note that a task
must not be necessarily in MEMF_PUBLIC memory! This routine should
be coded in high optimized assembly language.
If the effect routine is too slow on the used processor, this
function will be stopped automatically, and MSTAT_TFIFO and
MSTAT_RFIFO result FIFO_Error.
SEE ALSO
StopRealtime()
BUGS
maestix.library/StopRealtime maestix.library/StopRealtime
NAME
StopRealtime -- Stops the realtime FX (V38)
SYNOPSIS
StopRealtime(MaestroBase)
A0.l
void StopRealtime(struct MaestroBase*);
FUNCTION
This function stops a realtime effect.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
RESULTS
NOTES
Before using TransmitData() or ReceiveData(), a currently running
realtime effect must be stopped by this function!
SEE ALSO
StartRealtime()
BUGS
maestix.library/TransmitData maestix.library/TransmitData
NAME
TransmitData -- Transmits data from a message (V35)
SYNOPSIS
TransmitData(MaestroBase,DataMessage)
A0.l A1.l
void TransmitData(struct MaestroBase*,struct DataMessage*);
FUNCTION
The client has to fill out a DataMessage structure with a
reply port, a pointer to a data buffer and the size of this
buffer.
This message is queued internally. If the transmitter has not
been started yet, this function will activate it.
The buffer space will be put out and then be replied to the
declared reply port.
If there are no more messages in the queue, the transmitter
will be stopped automatically, and an error is reported.
The buffer contains signed words. The first word always belongs
to the left channel, the second to the right, and so on.
INPUTS
MaestroBase -- MaestroBase structure from AllocMaestro().
DataMessage -- a system message containing a pointer to a
buffer space for incoming data.
RESULTS
NOTES
The buffer space must be public memory. Its address must be
longword aligned, its length must be aligned to 1024 and the
size should be big enough (at least 10Kbyte).
SEE ALSO
ReceiveData(), FlushTransmit(), StopRealtime()
BUGS