123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #ifndef cmRtSysMsg_h
- #define cmRtSysMsg_h
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- // Reserved DSP message selector id's (second field of all
- // host<->audio system messages)
- enum
- {
- kMidiMsgArraySelRtId = 1000,
- kMidiSysExSelRtId,
- kUiDrvrSelRtId, // cmUiDriverArg_t message to/from the UI driver
- kUiSelRtId, // cmUiDriverArg_t message from the UI mgr to a client
- kUiMstrSelRtId, // indicates a cmDspUiHdr_t msg containing master control information for the audio system
- kStatusSelRtId, // indicates the msg is of type cmRtSysStatus_t
- kNetSyncSelRtId, // sent with a cmDspNetMsg_t object
- kMsgSelRtId, // client defined msg transmitted between threads or network nodes
- };
-
- typedef struct
- {
- unsigned rtSubIdx;
- unsigned selId; // Message selector id See kXXXSelRtId above
- } cmRtSysMsgHdr_t;
-
- // All of the UI messages that create a UI control contain an array of integers
- // as in the 'value' field. The array contains the id's associated with
- // the different programmable paramters which are part of the control.
- // For example a slider control has minimum,maximum, step size, and value
- // parameters. The location in the array is hard coded according to the
- // parameters meaning but the actual value of the id is left up to the
- // engine. This allows the engine to use whatever values work best for
- // it on a per instance basis.
-
-
- // Header record for all messages between the host and the DSP controllers.
- typedef struct
- {
- cmRtSysMsgHdr_t hdr;
- unsigned devIdx;
- unsigned chIdx;
- bool inFl;
- unsigned ctlId;
- double value;
- } cmRtSysMstr_t;
-
-
-
- // Control id's used to identify the control type of master contols.
- enum
- {
- kSliderUiRtId = 0,
- kMeterUiRtId = 1,
- kMuteUiRtId = 2,
- kToneUiRtId = 3,
- kPassUiRtId = 4
- };
-
-
- // Audio sub-system status record - this message can be transmitted to the host at
- // periodic intervals. See cmRtSysStatusNotifyEnable().
- // When transmitted to the host this record acts as the message header.
- // This header is followed by two arrays of doubles containing the input
- // and output meter values associated with the input and output audio devices.
- // Message Layout:
- // [ rtSubIdx kStatusSelId cmRtSysStatus_t iMeterArray[iMeterCnt] oMeterArray[oMeterCnt] ]
- typedef struct
- {
- cmRtSysMsgHdr_t hdr;
-
- unsigned updateCnt; // count of callbacks from the audio devices.
- unsigned wakeupCnt; // count of times the audio system thread has woken up after the cond. var has been signaled by the audio update thread.
- unsigned msgCbCnt; // count of msgs delivered via cmRtCallback() .
- unsigned audioCbCnt; // count of times the DSP execution was requested via cmRtCallback().
-
- unsigned iDevIdx; // Input device index
- unsigned oDevIdx; // Output device index
-
- unsigned overflowCnt; // count of times the audio input buffers overflowed
- unsigned underflowCnt; // count of times the audio output buffers underflowed
- unsigned iMeterCnt; // count of input meter channels
- unsigned oMeterCnt; // count of output meter channels
-
- } cmRtSysStatus_t;
-
-
- typedef struct
- {
- cmRtSysMsgHdr_t hdr;
- unsigned devIdx;
- unsigned portIdx;
- unsigned msgCnt;
- // cmMidiMsg msgArray[msgCnt]
- } cmRtSysMidi_t;
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
|