home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-02-15 | 34.2 KB | 1,104 lines |
- TABLE OF CONTENTS
-
- camd.library/AddMidiLink
- camd.library/CloseMidiDevice
- camd.library/CreateMidi
- camd.library/DeleteMidi
- camd.library/EndClusterNotify
- camd.library/FindCluster
- camd.library/FindMidi
- camd.library/FlushMidi
- camd.library/GetMidi
- camd.library/GetMidiAttrsA
- camd.library/GetMidiErr
- camd.library/GetMidiLinkAttrsA
- camd.library/GetSysEx
- camd.library/LockCAMD
- camd.library/MidiLinkConnected
- camd.library/MidiMsgLen
- camd.library/MidiMsgType
- camd.library/NextCluster
- camd.library/NextClusterLink
- camd.library/NextMidi
- camd.library/NextMidiLink
- camd.library/OpenMidiDevice
- camd.library/ParseMidi
- camd.library/PutMidi
- camd.library/PutMidiMsg
- camd.library/PutSysEx
- camd.library/QuerySysEx
- camd.library/RemoveMidiLink
- camd.library/RethinkCAMD
- camd.library/SetMidiAttrs
- camd.library/SetMidiLinkAttrs
- camd.library/SkipSysEx
- camd.library/StartClusterNotify
- camd.library/UnlockCAMD
- camd.library/WaitMidi
- camd.library/AddMidiLink camd.library/AddMidiLink
-
- NAME
- AddMidiLink -- Create a MidiLink to a MidiCluster.
-
- SYNOPSIS
- struct MidiLink *AddMidiLinkA (struct MidiNode *mi, LONG type,
- a0 d0
- struct TagItem *TagsList)
- a1
-
- struct MidiLink *AddMidiLink(struct MidiNode *mi, LONG type,
- Tag type1, ...)
-
- FUNCTION
- Creates a MidiLink structure and connects it to a MidiCluster.
-
- The first form of the function expects a tag array pointer or NULL.
- The second form permits the tag items to exist on the caller's
- stack. In both cases, the final tag item must be TAG_END.
-
- INPUTS
- mi - MidiNode that the MidiLink should communicate through.
-
- type - Type of link, either MLTYPE_Receiver or MLTYPE_Sender.
-
- TagList - optional pointer to tag array. May be NULL. For
- OS v1.3, there are restrictions on the tag array
- contents. See NOTE below.
-
- TAGS
- See SetMidiLinkAttrsA
-
- RESULTS
- A pointer to a MidiLink structure on success or NULL on failure.
- When FALSE is returned, an error code will be returned if a TagItem
- with an ti_Tag of MLINK_ErrorCode was provided. The CME_ error code
- will be put in the ti_Data field.
-
- NOTE
- Under 1.3 only a restricted tag array may be passed into this
- funciton. Specifically, the only special tag values that are
- supported are TAG_END (or TAG_DONE) and TAG_IGNORE. All others
- (e.g. TAG_SKIP, TAG_MORE) are treated as TAG_END. The full range of
- TAG list operations are permitted under 2.0.
-
- This function MUST be called by a Process (not a Task). It makes a
- few DOS calls.
-
- EXAMPLES
- ml = AddMidiLink (mi,MLTYPE_Receiver,
- MLINK_Name, "app.in", MLINK_Location,"in.0", TAG_END);
-
- Creates a receive MidiLink named "app.in" to the MidiCluster named
- "in.0", where all bytes are recevied through the MidiNide mi.
-
- SEE ALSO
- RemoveMidiLinkA(), SetMidiLinkAttrs()
- 2.0 tag docs.
- camd.library/CloseMidiDevice camd.library/CloseMidiDevice
-
- NAME
- CloseMidiDevice -- Close a MIDI device driver.
-
- SYNOPSIS
- void CloseMidiDevice (struct MidiDeviceData *MidiDeviceData)
- a0
-
- FUNCTION
- Closes a MIDI device driver opened by OpenMidiDevice().
-
- INPUTS
- MidiDeviceData - pointer to a MidiDeviceData structure returned by
- OpenMidiDevice().
-
- RESULTS
- None
-
- SEE ALSO
- OpenMidiDevice()
- camd.library/CreateMidi camd.library/CreateMidi
-
- NAME
- CreateMidi -- Create a MidiNode.
-
- SYNOPSIS
- struct MidiNode *CreateMidiA (struct TagItem *TagsList)
- a0
-
- struct MidiNode *CreateMidi (Tag tag1, ...)
-
- FUNCTION
- Creates a MidiNode structure with the desired attributes.
-
- The first form of the function expects a tag array pointer or NULL.
- The second form permits the tag items to exist on the caller's
- stack. In both cases, the final tag item must be TAG_END.
-
- INPUTS
- TagList - optional pointer to tag array. May be NULL. For
- OS v1.3, there are restrictions on the tag array
- contents. See NOTE below.
-
- TAGS
- See SetMidiAttrsA
-
- RESULTS
- A pointer to a MidiNode structure on success or NULL on failure.
- When FALSE is returned, an error code will be returned if a TagItem
- with an ti_Tag of MIDI_ErrorCode was provided. The CME_ error code
- will be put in the ti_Data field.
-
- NOTE
- Under 1.3 only a restricted tag array may be passed into this
- funciton. Specifically, the only special tag values that are
- supported are TAG_END (or TAG_DONE) and TAG_IGNORE. All others
- (e.g. TAG_SKIP, TAG_MORE) are treated as TAG_END. The full range of
- TAG list operations are permitted under 2.0.
-
- This function MUST be called by a Process (not a Task). It makes a
- few DOS calls.
-
- Don't call WaitMidi() with a send-only MidiNode.
-
- EXAMPLES
- mi = CreateMidi (
- MIDI_MsgQueue, 2048, MIDI_SysExSize, 10000L, TAG_END);
-
- Creates a MidiNode with space to receive 2048 MidiMsg's and 10000
- bytes of Sys/Ex data. Note the 'L' on the end of 10000. This
- forces correct alignment of the tag items on the stack for 16 bit
- integer compilation.
-
- SEE ALSO
- DeleteMidi(), SetMidiAttrs()
- 2.0 tag docs.
- camd.library/DeleteMidi camd.library/DeleteMidi
-
- NAME
- DeleteMidi -- Delete a MidiNode.
-
- SYNOPSIS
- void DeleteMidi (struct MidiNode *mn)
- a0
-
- FUNCTION
- Deletes the specified MidiNode. A sys/ex queue allocated by
- CreateMidi() is freed. The following actions are automatically
- performed by this function:
-
- A client-supplied sys/ex queue attached with SetSysExQueue() will
- not be freed by this function.
-
- INPUTS
- mn - MidiNode to delete. Can be NULL.
-
- RESULTS
- None
-
- SEE ALSO
- CreateMidi(), ClearSysExQueue()
- camd.library/EndClusterNotify camd.library/EndClusterNotify
-
- NAME
- EndClusterNotify -- Stop notification of cluster changes
-
- SYNOPSIS
- void EndClusterNotify (struct ClusterNotifyNode *cn)
- a0
-
- FUNCTION
- Terminates notification of CAMD internal state changes
-
- INPUTS
- cn - a pointer to a ClusterNotifyNode
-
- RESULTS
- None
-
- SEE ALSO
- StartClusterNotify
- camd.library/FindCluster camd.library/FindCluster
-
- NAME
- FindCluster -- Find a MidiCluster by name
-
- SYNOPSIS
- struct MidiCluster *FindCluster (name)
- a0
-
- FUNCTION
- Find a MidiCluster by name. If node of that exists, the function
- returns NULL. Midi links (CD_Linkages) must be locked when called.
-
- INPUTS
- name - name of MidiCluster to find.
-
- RESULTS
- result - A MidiCluster or NULL.
-
- camd.library/FindMidi camd.library/FindMidi
-
- NAME
- FindMidi -- Find a MidiNode by name
-
- SYNOPSIS
- struct MidiNode *FindMidi (name)
- a0
-
- FUNCTION
- Find a MidiNode by name. If node of that exists, the function
- returns NULL. Midi links (CD_Linkages) must be locked when called.
-
- INPUTS
- name - name of MidiNode to find.
-
- RESULTS
- result - A MidiNode or NULL.
-
- camd.library/FlushMidi camd.library/FlushMidi
-
- NAME
- FlushMidi -- Dispose of all pending messages.
-
- SYNOPSIS
- void FlushMidi (struct MidiNode *mi)
- a0
-
- FUNCTION
- Disposes of all messages waiting to be received by GetMidi() and
- GetSysEx(). Also clears pending errors.
-
- INPUTS
- mi - MidiNode to flush.
-
- RESULTS
- None
- camd.library/GetMidi camd.library/GetMidi
-
- NAME
- GetMidi -- Get next MidiMsg from buffer.
-
- SYNOPSIS
- BOOL GetMidi (struct MidiNode *mn, MidiMsg *msg)
- a0 a1
-
- FUNCTION
- Gets the next MidiMsg from mn->MsgQueue.
-
- It is definitely not safe to call this if there's no MsgQueue.
-
- INPUTS
- mn - pointer to MidiNode.
- msg - pointer to buffer to place MidiMsg removed from
- queue.
-
- RESULTS
- TRUE if a MidiMsg was actually copied in msg. FALSE
- if the buffer was empty.
-
- SEE ALSO
- WaitMidi()
- camd.library/GetMidiAttrsA camd.library/GetMidiAttrsA
-
- NAME
- GetMidiAttrsA -- Get the attributes of a MidiNode
-
- SYNOPSIS
- ULONG GetMidiAttrsA (struct MidiNode *mi, struct TagItem *attrs)
- a0 a1
- FUNCTION
- Gets attributes of a MidiNode.
-
- INPUTS
- mi - a pointer to the MidiNode
-
- attrs - Attributes to get, terminated with TAG_DONE. For each entry
- in the tag list, ti_Tag identifies the attribute, and ti_Data
- is a pointer to the long variable where you wish the result
- to be stored.
-
- RESULTS
- Count of attributes understood.
-
- NOTE
- See SetMidiAttrs() for tags understood.o
-
- EXAMPLES
-
- SEE ALSO
- SetMidiAttrs()
- camd.library/GetMidiErr camd.library/GetMidiErr
-
- NAME
- GetMidiErr -- Read accumulated MIDI error flags.
-
- SYNOPSIS
- UBYTE GetMidiErr (struct MidiNode *mn)
- a0
-
- FUNCTION
- Returns the current MIDI error flags from the MidiNode. The error
- flags are cleared after reading. Some error flags, such as
- CMEF_BufferFull, prevent additional MIDI reception and must be
- cleared in order to restart MIDI reception.
-
- Only bits enabled by SetMidiErrFilter() are returned as 1 bits.
-
- INPUTS
- mn - MidiNode to check.
-
- RESULTS
- CMEF_ error flags or 0 if no errors were present. The upper 24 bits
- are cleared for the caller's convenience.
-
- SEE ALSO
- SetMidiErrFilter(), WaitMidi()
- camd.library/GetMidiLinkAttrsA camd.library/GetMidiLinkAttrsA
-
- NAME
- GetMidiLinkAttrsA -- Get attributes of a MidiLink
-
- SYNOPSIS
- ULONG GetMidiLinkAttrsA (struct MidiLink *ml, struct TagItem *attrs)
- a0 a1
-
- FUNCTION
- Gets an attribute of a MidiLink.
-
- INPUTS
- mi - a pointer to the MidiLink
-
- attrs - Attributes to get, terminated with TAG_DONE. For each entry
- in the tag list, ti_Tag identifies the attribute, and ti_Data
- is a pointer to the long variable where you wish the result
- to be stored.
-
- RESULTS
- Count of attributes understood.
-
- NOTE
- See SetMidiLinkAttrs() for tags understood.o
-
- EXAMPLES
-
- SEE ALSO
- SetMidiLinkAttrs()
- camd.library/GetSysEx camd.library/GetSysEx
-
- NAME
- GetSysEx -- Read bytes from Sys/Ex buffer.
-
- SYNOPSIS
- ULONG GetSysEx (struct MidiNode *mn, UBYTE *Buf, ULONG Len)
- a0 a1 d0
-
- FUNCTION
- Reads bytes from the Sys/Ex buffer for the current sys/ex message
- into the supplied buffer. This function will not read past the end
- of the current sys/ex message. The actual number of bytes read is
- returned. 0 is returned when there are no more bytes to be read for
- the current sys/ex message. If the current message is not a sys/ex
- message, this function will return 0.
-
- INPUTS
- mn - Pointer to MidiNode.
- Buf - Output buffer pointer.
- Len - Max number of bytes to read.
-
- RESULTS
- Actual number of bytes read.
-
- SEE ALSO
- GetMidi(), SkipSysEx(), QuerySysEx()
- camd.library/LockCAMD camd.library/LockCAMD
-
- NAME
- LockCAMD -- Prevent other tasks from changing internal structures
-
- SYNOPSIS
- LockCAMD(locktype)
- d0
- APTR LockCAMD( ULONG );
-
- FUNCTION
- This routine will lock the internal sempahores in the CAMD library.
- If they are already locked by another task, this routine will wait
- until they are free.
-
- INPUTS
- locktype -- which internal list will be locked.
- CL_LINKS -- locks the internal list of MidiInterfaces, MidiLinks
- and MidiClusters. Any functions that create or delete
- these structures (including SetMidiLinkAttrs) will be locked.
-
- RESULT
- If locktype is valid, returns a value that must be passed later
- to UnlockCAMD.
-
- EXAMPLE
-
- NOTES
-
- BUGS
-
- SEE ALSO
- UnlockCAMD(), CreateMidi(), DeleteMidi(),
- AddLink(), RemoveMidiLink(), SetMidiLinkAttrs();
-
- camd.library/MidiLinkConnected camd.library/MidiLinkConnected
-
- NAME
- MidiLinkConnected -- Determine if MidiLink has a connection
-
- SYNOPSIS
- BOOL MidiLinkConnected (struct MidiLink *ml)
- a0
-
- FUNCTION
- Returns TRUE if a MidiLink can currently send or receive to anyone.
- For a MidiLink of type MLTYPE_Sender, then there must be at least
- one MidiLink of type MLTYPE_Receiver linked to the same MidiCluster,
- and visa versa.
-
- INPUTS
- ml - MidiLink to check
-
- RESULTS
- result - TRUE if there is a connection, FALSE otherwise
-
- camd.library/MidiMsgLen camd.library/MidiMsgLen
-
- NAME
- MidiMsgLen -- Determine the length of a MIDI message
-
- SYNOPSIS
- WORD MidiMsgLen (ULONG StatusByte)
- d0
-
- FUNCTION
- Returns the length in bytes of the MIDI message described by the
- supplied status byte. The message length includes the status byte.
-
- INPUTS
- StatusByte - UBYTE containing status byte.
-
- RESULTS
- length - length of the message in bytes. For valid messages this
- will be at least 1. 0 is returned for invalid messages,
- MS_SysEx and MS_EOX.
-
- The result is sign extended to 32 bits for assembly
- programmers.
-
- SEE ALSO
- MidiMsgType()
- camd.library/MidiMsgType camd.library/MidiMsgType
-
- NAME
- MidiMsgType -- Determine the type of a MIDI message
-
- SYNOPSIS
- WORD MidiMsgType (MidiMsg *Msg)
- a0
-
- FUNCTION
- Returns a type bit number (CMB_) for supplied MidiMsg.
-
- INPUTS
- Msg - Pointer to a MidiMsg.
-
- RESULTS
- CMB_ bit number of message type. -1 if message is undefined. Also
- -1 is returned for MS_EOX since it's not legal to be passed through
- PutMidi(). The result is sign extended to 32 bits for assembly
- programmers.
-
- SEE ALSO
- MidiMsgLen()
- camd.library/NextCluster camd.library/NextCluster
-
- NAME
- NextCluster -- Get next MidiCluster
-
- SYNOPSIS
- struct MidiCluster *NextCluster (struct MidiCluster *last)
- a0
-
- FUNCTION
- Returns the next MidiCluster on CAMD MidiCluster list. If last
- is NULL, returns the first MidiCluster. Returns NULL if no more
- MidiClusters. Midi links (CD_Linkages) must be locked when called.
-
- INPUTS
- last - previous MidiCluster or NULL to get first MidiCluster
-
- RESULTS
- next - next MidiCluster or NULL
-
- camd.library/NextClusterLink camd.library/NextClusterLink
-
- NAME
- NextClusterLink -- Get next MidiLink of one type in a MidiCluster
-
- SYNOPSIS
- struct MidiLink *NextClusterLink (struct MidiCluster *mc,
- a0
- struct MidiLink *last, LONG type)
- a1 d0
-
- FUNCTION
- Returns the next MidiLink of a particular type a MidiCluster's list
- of MidiLinks. If last is NULL, returns the first MidiLink. Returns
- NULL if no more MidiLinks. Midi links (CD_Linkages) must be locked
- when called.
-
- INPUTS
- last - previous MidiLink or NULL to get first MidiLink
-
- RESULTS
- next - next MidiLink or NULL
-
- camd.library/NextMidi camd.library/NextMidi
-
- NAME
- NextMidi -- Get next MidiNode
-
- SYNOPSIS
- struct MidiNode *NextMidi (struct MidiNode *last)
- a0
-
- FUNCTION
- Returns the next MidiNode on CAMD MidiNode list. If last is NULL,
- returns the first MidiNode. Returns NULL if no more MidiNodes.
- Midi links (CD_Linkages) must be locked when called.
-
- INPUTS
- last - previous MidiNode or NULL to get first MidiNode
-
- RESULTS
- next - next MidiNode or NULL
-
- camd.library/NextMidiLink camd.library/NextMidiLink
-
- NAME
- NextMidiLink -- Get next MidiLink of one type in a MidiNode
-
- SYNOPSIS
- struct MidiLink *NextMidiLink (struct MidiNode *mi,
- a0
- struct MidiLink *last, LONG type)
- a1 d0
-
- FUNCTION
- Returns the next MidiLink of a particular type a MidiNode's list
- of MidiLinks. If last is NULL, returns the first MidiLink. Returns
- NULL if no more MidiLinks. Midi links (CD_Linkages) must be locked
- when called.
-
- INPUTS
- last - previous MidiLink or NULL to get first MidiLink
-
- RESULTS
- next - next MidiLink or NULL
-
- camd.library/OpenMidiDevice camd.library/OpenMidiDevice
-
- NAME
- OpenMidiDevice -- Open a MIDI device driver.
-
- SYNOPSIS
- struct MidiDeviceData *OpenMidiDevice (UBYTE *Name)
- a0
-
- FUNCTION
- Opens a MIDI device driver.
-
- This function should only be called by Preferences program that
- wishes to interrogate a particular MIDI device driver for such
- information as number of Ports.
-
- Otherwise this is a private camd.library function.
-
- INPUTS
- Name - name of MIDI device driver.
-
- RESULTS
- Pointer to MidiDeviceData structure or NULL on failure.
-
- SEE ALSO
- CloseMidiDevice()
- camd.library/ParseMidi camd.library/ParseMidi
-
- NAME
- ParseMidi -- Parse a stream of bytes as MIDI messages.
-
- SYNOPSIS
- void ParseMidi (struct MidiLink *ml, cosnt UBYTE *Buffer,
- a0 a1
-
- ULONG Length)
- d0
-
- FUNCTION
- Parses an unformated stream of bytes as MIDI data and transmits the
- resulting messages to mi->SendPort.
-
- AddMidiParser() must be called prior to calling ParseMidi() in order
- to attach the necessary parser data to the MidiLink.
-
- INPUTS
- mi - a MidiLink to send on.
- Buffer - Pointer to buffer containing MIDI data to send.
- Length - Number of bytes in buffer to send.
-
- RESULTS
- None
-
- SEE ALSO
- AddMidiParser()
- camd.library/PutMidi camd.library/PutMidi
-
- NAME
- PutMidi -- Send a MidiMsg to an output link
-
- SYNOPSIS
- void PutMidi (struct MidiLink *link, ULONG Msg)
- a0 d0
-
- FUNCTION
- Sends the a MidiMsg to the output link specified.
- The message is automatically timestamped.
-
- INPUTS
- Msg - mm_Msg long word component of a MidiMsg.
-
- RESULTS
- None
-
- NOTE
- Although this function doesn't require a MidiNode pointer, the
- caller must have allocated a MidiNode using CreateMidi() in
- order for any messages to be distributed.
-
- SEE ALSO
- PutMidi()
- camd.library/PutMidiMsg camd.library/PutMidiMsg
-
- NAME
- PutMidiMsg (MACRO) -- Send a MidiMsg.
-
- SYNOPSIS
- void PutMidiMsg (struct MidiLink *ml, MidiMsg *msg)
- a0 a1
-
- FUNCTION
- Sends a MidiMsg. This is a macro that calls PutMidi().
- The value in msg->mm_Port is ignored.
- This macro exists in both C and Assembly.
-
- INPUTS
- ml - pointer to MidiLink.
- msg - pointer to a MidiMsg to send. Only the mm_Msg segment is
- used.
-
- RESULTS
- None
-
- SEE ALSO
- GetMidi(), PutMidi()
- camd.library/PutSysEx camd.library/PutSysEx
-
- NAME
- PutSysEx -- Send a Sys/Ex Message to a link.
-
- SYNOPSIS
- void PutSysEx (struct MidiLink *ml, UBYTE *Buffer)
- a0 a1
-
- FUNCTION
- Sends the sys/ex message to the specified port.
-
- Sys/Ex messages are sent to hardware units regardless of transmit
- buffer size. Distribution pauses until the entire sys/ex message
- is placedin the transmit queue.
-
- Distribution to MidiNodes is a bit different. If the sys/ex message
- is greater than the MidiNode's sys/ex buffer, then the message will
- not be sent to the MidiNode. If the message is smaller than the
- MidiNode's sys/ex buffer, but there's not enough room left in the
- buffer to contain the sys/ex message, CMEF_SysExFull will be sent
- to the MidiNode. Otherwise the sys/ex message will be sent.
-
- INPUTS
- ml - MidiLink to send Sys/Ex to
- Buffer - Pointer to a Sys/Ex message beginning with MS_SysEx and
- ending with MS_EOX.
-
- RESULTS
- None
-
- NOTE
- Although this function doesn't require a MidiNode pointer, the
- caller must have allocated a MidiNode using CreateMidi() in
- order for any messages to be distributed.
-
- SEE ALSO
- PutSysEx()
- camd.library/QuerySysEx camd.library/QuerySysEx
-
- NAME
- QuerySysEx -- Get number of bytes remaining in current Sys/Ex
- message.
-
- SYNOPSIS
- ULONG QuerySysEx (struct MidiNode *mn)
- a0
-
- FUNCTION
- Returns the number of bytes remaining in the current sys/ex message.
-
- INPUTS
- mn - pointer to MidiNode
-
- RESULTS
- Remaining bytes in sys/ex message. 0 is returned if the last
- message read from GetMidi() wasn't a sys/ex message.
-
- SEE ALSO
- GetSysEx(), GetMidi()
- camd.library/RemoveMidiLink camd.library/RemoveMidiLink
-
- NAME
- RemoveMidiLink -- Removes a MidiLink from a MidiCluster.
-
- SYNOPSIS
- void RemoveMidiLink (struct MidiLink *ml)
- a0
- FUNCTION
- Removes a MidiLink structure from a MidiCluster.
-
- INPUTS
- ml - MidiLink to remove. Can be NULL.
-
- SEE ALSO
- AddMidiLinkA()
- camd.library/RethinkCAMD camd.library/RethinkCAMD
-
- NAME
- RethinkCAMD -- Force CAMD library to reload MIDI preferences
-
- SYNOPSIS
- LONG RethinkCAMD(void)
-
- FUNCTION
- Forces CAMD library to reload MIDI preferences and reassign the
- hardware unit MidiLinks.
-
- RESULTS
- result - 0 if everything went OK, else returns a CME_ error code
-
- camd.library/SetMidiAttrs camd.library/SetMidiAttrs
-
- NAME
- SetMidiAttrs -- Set the attributes of a MidiNode
-
- SYNOPSIS
- BOOL SetMidiAttrsA (struct MidiNode *mi, struct TagItem *tags)
- a0 a1
-
- BOOL SetMidiAttrs (struct MidiNode *mi, ...)
-
- FUNCTION
- Sets the attributes of a MidiNode, using a Tag List.
-
- The first form of the function expects a tag array pointer or NULL.
- The second form permits the tag items to exist on the caller's
- stack. In both cases, the final tag item must be TAG_END.
-
- INPUTS
- mi - a pointer to the MidiNode
-
- TagList - optional pointer to tag array. May be NULL. For
- OS v1.3, there are restrictions on the tag array
- contents. See NOTE below.
-
- TAGS
- MIDI_Name STRPTR - ti_Data points to the new name of
- the node (generally the Application name)
-
- MIDI_SignalTask struct Task * - the task to be signaled whenever
- a MidiMsg or Participant change occurs. This is set
- by CreateMidi to the current task as a default
-
- MIDI_RecvHook struct Hook * - this hook will be called when
- new MidiMsgs arrive, if the buffer was empty. If the buffer
- was not yet empty, then it is simply added onto the end.
-
- MIDI_PartHook struct Hook * - this hook will be called whenever
- any of the clusters that this node is linked to either
- adds or removes a member.
-
- MIDI_RecvSignal BYTE - the signal to send whenever an incoming
- MidiMsg arrives in the buffer, or -1 to send no signal
-
- MIDI_PartSignal BYTE - the signal to send whenever a cluster
- to which this node is linked has a participant change,
- or -1 to send no signal
-
- MIDI_MsgQueue ULONG - ti_Data specifies the size of the
- MsgQueue for this MidiNode. An additional pad MidiMsg
- is allocated for overflow protection. It can also be
- set to zero to indicate that no buffer should be allocated
- (A send-only MidiNode)
-
- MIDI_SysExSize ULONG - ti_Data specifies the size of the SysExQueue
- in bytes. Like the MsgQueue, an additional byte is
- allocated to allow for overflow protection.
-
- MIDI_TimeStamp ULONG * - if non-NULL, ti_Data is a pointer to
- a longword which is to be used as the source for time
- stamps of incoming MidiMsgs for this MidiNode. It is
- assumed that the longword pointed to will be updated by
- some other mechanism -- for example, the longword could
- point to one of the fields in a PlayerInfo structure.
-
- MIDI_ErrFilter UWORD - specified the ErrFilter for this MidiNode
-
- MIDI_ClientType UWORD - specified the Client Type for this MidiNode
- See camd.h for more detail.
-
- MIDI_Image struct Image * - pointer to an Intuition Image
- structure representing a glyph or icon that is symbolic
- if this application. Will be used for a future "patch
- bay" application. It is suggested that images be
- approximately 32 wide x 32 high, for consistency.
-
- RESULTS
- TRUE if all changes were made successfully or FALSE on failure.
- When FALSE is returned, an error code will be returned if a TagItem
- with an ti_Tag of MIDI_ErrorCode was provided. The CME_ error code
- will be put in the ti_Data field.
-
- NOTE
- Under 1.3 only a restricted tag array may be passed into this
- funciton. Specifically, the only special tag values that are
- supported are TAG_END (or TAG_DONE) and TAG_IGNORE. All others
- (e.g. TAG_SKIP, TAG_MORE) are treated as TAG_END. The full range of
- TAG list operations are permitted under 2.0.
-
- This function MUST be called by a Process (not a Task). It makes a
- few DOS calls.
-
- Don't call WaitMidi() with a MidiNode that has no ReceiveSignal.
-
- EXAMPLES
- mi = SetMidiAttrs (mi,
- MIDI_MsgQueue, 2048, MIDI_SysExSize, 10000L, TAG_END);
-
- Modifies a MidiNode to have space to receive 2048 MidiMsg's and 10000
- bytes of Sys/Ex data. Note the 'L' on the end of 10000. This
- forces correct alignment of the tag items on the stack for 16 bit
- integer compilation.
-
- SEE ALSO
- CreateMidi(), DeleteMidi()
- 2.0 tag docs.
- camd.library/SetMidiLinkAttrs camd.library/SetMidiLinkAttrs
-
- NAME
- SetMidiLinkAttrs -- Set the attributes of a MidiNode
-
- SYNOPSIS
- BOOL SetMidiLinkAttrsA (struct MidiLink *ml, struct TagItem *tags)
- a0 a1
-
- BOOL SetMidiLinkAttrs (struct MidiLink *mi, Tag type1, ...)
-
- FUNCTION
- Sets the attributes of a MidiLink, using a Tag List.
-
- The first form of the function expects a tag array pointer or NULL.
- The second form permits the tag items to exist on the caller's
- stack. In both cases, the final tag item must be TAG_END.
-
- INPUTS
- ml - a pointer to the MidiLink
-
- TagList - optional pointer to tag array. May be NULL. For
- OS v1.3, there are restrictions on the tag array
- contents. See NOTE below.
-
- TAGS
- MLINK_Name STRPTR - ti_Data points to the new name of
- the node
-
- MLINK_Location STRPTR - ti_Data points to name of MidiCluster
- to link with
-
- MLINK_ChannelMask UWORD - ti_Data contains mask of which MIDI
- channels to listen for (defaults to ~0)
-
- MLINK_EventMask UWORD - ti_Data contains mask of which types
- of MIDI events to listen for (defaults to ~0)
-
- MLINK_UserData CPTR - ti_Data points to user definable data
-
- MLINK_Comment STRPTR - ti_Data points to a comment string. The
- highest priority MidiLink in a MidiCluster
- has its comment field copied to the
- MidiCluster's comment field
-
- MLINK_PortID UBYTE - ti_Data contains value to copy into any
- MidiMsg's arriving at MidiNode through this
- MidiLink (defaults to 0)
-
- MLINK_Private BOOL - if ti_Data contains TRUE, then this link
- requests to not be shown by patch editors, etc.
-
- MLINK_Priority BYTE - ti_Data contains priotity of the MidiLink
-
- MLINK_SysExFilter ULONG - ti_Data contains three 1-byte manufacturor
- numbers to filter SysEx messages with
-
- MLINK_SysExFilterX ULONG - ti_Data contains one 3-byte manufacturor
- number to filter SysEx messages with
-
- MLINK_Parse BOOL - if ti_Data contains true, allocate a parser
- for the MidiLink so raw MIDI streams can be
- sent though the link
-
- MLINK_ErrorCode ULONG * - ti_Data points to an error code buffer
-
- RESULTS
- TRUE if all changes were made successfully or FALSE on failure.
- When FALSE is returned, an error code will be returned if a TagItem
- with an ti_Tag of MLINK_ErrorCode was provided. The CME_ error code
- will be put in the ti_Data field.
-
- NOTE
- Under 1.3 only a restricted tag array may be passed into this
- funciton. Specifically, the only special tag values that are
- supported are TAG_END (or TAG_DONE) and TAG_IGNORE. All others
- (e.g. TAG_SKIP, TAG_MORE) are treated as TAG_END. The full range of
- TAG list operations are permitted under 2.0.
-
- EXAMPLES
- mi = SetMidiLinkAttrs (ml,
- MLINK_Location, "out.0", MLINK_Priority, -5L, TAG_END);
-
- Modifies a MidiLink so it will be connected to the MidiCluster named
- "out.0" and makes the MidiLink's priority -5. Note the 'L' on the end
- of -5. This forces correct alignment of the tag items on the stack
- for 16 bit integer compilation.
-
- SEE ALSO
- AddMidiLink(), RemoveMidiLink()
- 2.0 tag docs.
- camd.library/SkipSysEx camd.library/SkipSysEx
-
- NAME
- SkipSysEx -- Skip the next sys/ex message in the Sys/Ex buffer.
-
- SYNOPSIS
- void SkipSysEx (struct MidiNode *mn)
- a0
-
- FUNCTION
- Skips the remaining bytes of the current sys/ex message. Nothing
- happens if the last message read from GetMidi() wasn't a sys/ex
- message.
-
- INPUTS
- mn - Pointer to MidiNode.
-
- RESULTS
- None.
-
- SEE ALSO
- GetSysEx()
- camd.library/StartClusterNotify camd.library/StartClusterNotify
-
- NAME
- StartClusterNotify -- Notify task of cluster changes
-
- SYNOPSIS
- void StartClusterNotify (struct ClusterNotifyNode *cn)
- a0
-
- FUNCTION
- Allow an external task to receive notification via a signal tha
- t
- CAMD's internal state has changed. This function is mostly usef
- ul
- to patch editors, etc.
-
- INPUTS
- cn - a pointer to a ClusterNotifyNode
-
- RESULTS
- None
-
- EXAMPLES
-
- struct ClusterNotifyNode cnn;
-
- cnn.cnn_Task = FindTask(NULL);
- cnn.cnn_SigBit = AllocSignal(-1);
- StartCluserNotify(&cnn);
-
- /* later in code */
-
- Wait(1 << cnn.cnn_SigBit);
-
- /* someone changed the state of a cluster */
-
- SEE ALSO
- EndClusterNotify
- camd.library/UnlockCAMD camd.library/UnlockCAMD
-
- NAME
- UnlockCAMD -- Unlock internal lists
-
- SYNOPSIS
- UnlockCAMD(lock)
- a0
- void UnlockCAMD( APTR );
-
- FUNCTION
- Undoes the effects of LockCAMD().
-
- INPUTS
- lock -- value returned by LockCAMD(). Can be NULL.
-
- EXAMPLE
-
- SEE ALSO
- LockCAMD()
-
- camd.library/WaitMidi camd.library/WaitMidi
-
- NAME
- WaitMidi -- Wait for next MidiMsg and get it.
-
- SYNOPSIS
- BOOL WaitMidi (struct MidiNode *mn, MidiMsg *msg)
- a0 a1
-
- FUNCTION
- Waits for the next MidiMsg to arrive at the MidiNode. On reception,
- the MidiMsg is removed and copied to the supplied buffer.
-
- WaitMidi() first checks for errors detected at the MidiNode. If
- none are detected, GetMidi() is called. If the buffer was empty,
- Wait() is called until the MidiNode is signalled. Once the signal
- arrives, this process is repeated.
-
- INPUTS
- mn - pointer to MidiNode.
- msg - pointer to buffer to place MidiMsg removed from queue.
-
- RESULTS
- TRUE if a MidiMsg was received. FALSE if an error was detected.
-
- SEE ALSO
- GetMidi()
-