#ifndef cwFlowDecl_h #define cwFlowDecl_h namespace cw { namespace flow { enum { kAudioDevTypeId, kMidiDevTypeId, kSerialDevTypeId, kSocketDevTypeId }; enum { kInFl = 0x01, kOutFl = 0x02 }; struct abuf_str; typedef struct audio_dev_cfg_str { struct abuf_str* abuf; // Buffer to receive incoming or send outgoing audio for this device // The audio_in/audio_out proc's locate and use these buffers. } audio_dev_cfg_t; struct external_device_str; typedef rc_t (*send_midi_triple_func_t)( struct external_device_str* dev, uint8_t ch, uint8_t status, uint8_t d0, uint8_t d1 ); typedef struct midi_dev_cfg_str { // msgArray[] contains the current msgs for all devices NOT just the device that this record is embedded in. // We do this so that the order of messages as they arrived is maintained. Otherwise, to achieve this ordering, // the messages for all devices would need to be collected and sorted by time. const midi::ch_msg_t* msgArray; unsigned msgCnt; unsigned maxMsgCnt; // max possible value of msgCnt send_midi_triple_func_t sendTripleFunc; } midi_dev_cfg_t; // Generate external device record typedef struct external_device_str { void* reserved; const char* devLabel; // IO framework device label const char* portLabel; // IO framework MIDI port label (only used by MIDI devices) unsigned typeId; // see ???DevTypeId above unsigned flags; // see ???Fl above unsigned ioDevIdx; // IO framework device index unsigned ioPortIdx; // IO framework MIDI port index (only used by MIDI devices) union { audio_dev_cfg_t a; // audio devices use this record midi_dev_cfg_t m; // MIDI " " " " } u; } external_device_t; enum { kPriPresetProbFl = 0x01, kSecPresetProbFl = 0x02, kInterpPresetFl = 0x04, kAllowAllPresetFl = 0x08 }; typedef struct preset_order_str { const char* preset_label; unsigned order; } preset_order_t; typedef struct multi_preset_selector_str { unsigned flags; const double* coeffV; const double* coeffMinV; const double* coeffMaxV; unsigned coeffN; const preset_order_t* presetA; unsigned presetN; } multi_preset_selector_t; } } #endif