|
- /*
- * Carla Bridge utils
- * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * For a full copy of the GNU General Public License see the doc/GPL.txt file.
- */
-
- #ifndef CARLA_BRIDGE_UTILS_HPP_INCLUDED
- #define CARLA_BRIDGE_UTILS_HPP_INCLUDED
-
- #include "CarlaRingBuffer.hpp"
-
- // -----------------------------------------------------------------------
-
- enum PluginBridgeInfoType {
- kPluginBridgeAudioCount = 0,
- kPluginBridgeMidiCount,
- kPluginBridgeParameterCount,
- kPluginBridgeProgramCount,
- kPluginBridgeMidiProgramCount,
- kPluginBridgePluginInfo,
- kPluginBridgeParameterInfo,
- kPluginBridgeParameterData,
- kPluginBridgeParameterRanges,
- kPluginBridgeProgramInfo,
- kPluginBridgeMidiProgramInfo,
- kPluginBridgeConfigure,
- kPluginBridgeSetParameterValue,
- kPluginBridgeSetDefaultValue,
- kPluginBridgeSetProgram,
- kPluginBridgeSetMidiProgram,
- kPluginBridgeSetCustomData,
- kPluginBridgeSetChunkData,
- kPluginBridgeUpdateNow,
- kPluginBridgeError
- };
-
- enum PluginBridgeOpcode {
- kPluginBridgeOpcodeNull = 0,
- kPluginBridgeOpcodeSetAudioPool = 1, // long
- kPluginBridgeOpcodeSetBufferSize = 2, // int
- kPluginBridgeOpcodeSetSampleRate = 3, // float
- kPluginBridgeOpcodeSetParameter = 4, // int, float
- kPluginBridgeOpcodeSetProgram = 5, // int
- kPluginBridgeOpcodeSetMidiProgram = 6, // int
- kPluginBridgeOpcodeMidiEvent = 7, // long, int, char[] (long = timeFrame, int = size max 4)
- kPluginBridgeOpcodeProcess = 8,
- kPluginBridgeOpcodeQuit = 9
- };
-
- const char* const CARLA_BRIDGE_MSG_HIDE_GUI = "CarlaBridgeHideGUI"; //!< Plugin -> Host call, tells host GUI is now hidden
- const char* const CARLA_BRIDGE_MSG_SAVED = "CarlaBridgeSaved"; //!< Plugin -> Host call, tells host state is saved
- #if 0
- const char* const CARLA_BRIDGE_MSG_SAVE_NOW = "CarlaBridgeSaveNow"; //!< Host -> Plugin call, tells plugin to save state now
- const char* const CARLA_BRIDGE_MSG_SET_CHUNK = "CarlaBridgeSetChunk"; //!< Host -> Plugin call, tells plugin to set chunk in file \a value
- const char* const CARLA_BRIDGE_MSG_SET_CUSTOM = "CarlaBridgeSetCustom"; //!< Host -> Plugin call, tells plugin to set a custom data set using \a value ("type·key·rvalue").
- //If \a type is 'chunk' or 'binary' \a rvalue refers to chunk file.
- #endif
-
- // -----------------------------------------------------------------------
-
- PRE_PACKED_STRUCTURE
- struct BridgeShmControl {
- union {
- void* runServer;
- char _padServer[32];
- };
- union {
- void* runClient;
- char _padClient[32];
- };
- RingBuffer ringBuffer;
- } POST_PACKED_STRUCTURE;
-
- // -----------------------------------------------------------------------
-
- static inline
- const char* PluginBridgeInfoType2str(const PluginBridgeInfoType type)
- {
- switch (type)
- {
- case kPluginBridgeAudioCount:
- return "kPluginBridgeAudioCount";
- case kPluginBridgeMidiCount:
- return "kPluginBridgeMidiCount";
- case kPluginBridgeParameterCount:
- return "kPluginBridgeParameterCount";
- case kPluginBridgeProgramCount:
- return "kPluginBridgeProgramCount";
- case kPluginBridgeMidiProgramCount:
- return "kPluginBridgeMidiProgramCount";
- case kPluginBridgePluginInfo:
- return "kPluginBridgePluginInfo";
- case kPluginBridgeParameterInfo:
- return "kPluginBridgeParameterInfo";
- case kPluginBridgeParameterData:
- return "kPluginBridgeParameterData";
- case kPluginBridgeParameterRanges:
- return "kPluginBridgeParameterRanges";
- case kPluginBridgeProgramInfo:
- return "kPluginBridgeProgramInfo";
- case kPluginBridgeMidiProgramInfo:
- return "kPluginBridgeMidiProgramInfo";
- case kPluginBridgeConfigure:
- return "kPluginBridgeConfigure";
- case kPluginBridgeSetParameterValue:
- return "kPluginBridgeSetParameterValue";
- case kPluginBridgeSetDefaultValue:
- return "kPluginBridgeSetDefaultValue";
- case kPluginBridgeSetProgram:
- return "kPluginBridgeSetProgram";
- case kPluginBridgeSetMidiProgram:
- return "kPluginBridgeSetMidiProgram";
- case kPluginBridgeSetCustomData:
- return "kPluginBridgeSetCustomData";
- case kPluginBridgeSetChunkData:
- return "kPluginBridgeSetChunkData";
- case kPluginBridgeUpdateNow:
- return "kPluginBridgeUpdateNow";
- case kPluginBridgeError:
- return "kPluginBridgeError";
- }
-
- carla_stderr("CarlaBackend::PluginBridgeInfoType2str(%i) - invalid type", type);
- return nullptr;
- }
-
- static inline
- const char* PluginBridgeOpcode2str(const PluginBridgeOpcode opcode)
- {
- switch (opcode)
- {
- case kPluginBridgeOpcodeNull:
- return "kPluginBridgeOpcodeNull";
- case kPluginBridgeOpcodeSetAudioPool:
- return "kPluginBridgeOpcodeSetAudioPool";
- case kPluginBridgeOpcodeSetBufferSize:
- return "kPluginBridgeOpcodeSetBufferSize";
- case kPluginBridgeOpcodeSetSampleRate:
- return "kPluginBridgeOpcodeSetSampleRate";
- case kPluginBridgeOpcodeSetParameter:
- return "kPluginBridgeOpcodeSetParameter";
- case kPluginBridgeOpcodeSetProgram:
- return "kPluginBridgeOpcodeSetProgram";
- case kPluginBridgeOpcodeSetMidiProgram:
- return "kPluginBridgeOpcodeSetMidiProgram";
- case kPluginBridgeOpcodeMidiEvent:
- return "kPluginBridgeOpcodeMidiEvent";
- case kPluginBridgeOpcodeProcess:
- return "kPluginBridgeOpcodeProcess";
- case kPluginBridgeOpcodeQuit:
- return "kPluginBridgeOpcodeQuit";
- }
-
- carla_stderr("CarlaBackend::PluginBridgeOpcode2str(%i) - invalid opcode", opcode);
- return nullptr;
- }
-
- // -----------------------------------------------------------------------
-
- #endif // CARLA_BRIDGE_UTILS_HPP_INCLUDED
|