| 
							- /*
 -  * Carla Bridge utils
 -  * Copyright (C) 2013-2014 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 {
 -     kPluginBridgePong = 0,
 -     kPluginBridgePluginInfo1,          // uuh    => category, hints, uniqueId
 -     kPluginBridgePluginInfo2,          // ssss   => realName, label, maker, copyright
 -     kPluginBridgeAudioCount,           // uu     => ins, outs
 -     kPluginBridgeMidiCount,            // uu     => ins, outs
 -     kPluginBridgeParameterCount,       // uu     => ins, outs
 -     kPluginBridgeProgramCount,         // u      => count
 -     kPluginBridgeMidiProgramCount,     // u      => count
 -     kPluginBridgeParameterData,        // uiuuss => index, rindex, type, hints, name, unit
 -     kPluginBridgeParameterRanges1,     // ufff   => index, def, min, max
 -     kPluginBridgeParameterRanges2,     // ufff   => index, step, stepSmall, stepLarge
 -     kPluginBridgeParameterMidiCC,      // ui     => index, cc
 -     kPluginBridgeParameterMidiChannel, // uu     => index, channel
 -     kPluginBridgeParameterValue,       // uf     => index, value
 -     kPluginBridgeDefaultValue,         // uf     => index, value
 -     kPluginBridgeCurrentProgram,       // i      => index
 -     kPluginBridgeCurrentMidiProgram,   // i      => index
 -     kPluginBridgeProgramName,          // us     => index, name
 -     kPluginBridgeMidiProgramData,      // uuus   => index, bank, program, name
 -     kPluginBridgeConfigure,            // ss     => key, value
 -     kPluginBridgeSetCustomData,        // sss    => type, key, value
 -     kPluginBridgeSetChunkData,         // s      => chunkFile
 -     kPluginBridgeUpdateNow,            //
 -     kPluginBridgeError                 //
 - };
 - 
 - enum PluginBridgeOpcode {
 -     kPluginBridgeOpcodeNull              =  0,
 -     kPluginBridgeOpcodeSetAudioPool      =  1, // long
 -     kPluginBridgeOpcodeSetBufferSize     =  2, // int
 -     kPluginBridgeOpcodeSetSampleRate     =  3, // float
 -     kPluginBridgeOpcodeSetParameterRt    =  4, // int, float
 -     kPluginBridgeOpcodeSetParameterNonRt =  5, // int, float
 -     kPluginBridgeOpcodeSetProgram        =  6, // int
 -     kPluginBridgeOpcodeSetMidiProgram    =  7, // int
 -     kPluginBridgeOpcodeMidiEvent         =  8, // long, int, char[] (long = timeFrame, int = size max 4)
 -     kPluginBridgeOpcodeProcess           =  9,
 -     kPluginBridgeOpcodeQuit              = 10
 - };
 - 
 - 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
 - 
 - // -----------------------------------------------------------------------
 - 
 - struct BridgeTimeInfo {
 -     bool playing;
 -     uint64_t frame;
 -     uint64_t usecs;
 -     uint     valid;
 -     // bbt
 -     int32_t bar, beat, tick;
 -     float beatsPerBar, beatType;
 -     double barStartTick, ticksPerBeat, beatsPerMinute;
 - };
 - 
 - // -----------------------------------------------------------------------
 - 
 - struct BridgeShmControl {
 -     union {
 -         void* runServer;
 -         char _padServer[32];
 -     };
 -     union {
 -         void* runClient;
 -         char _padClient[32];
 -     };
 -     StackBuffer buffer;
 - };
 - 
 - // -----------------------------------------------------------------------
 - 
 - static inline
 - const char* PluginBridgeInfoType2str(const PluginBridgeInfoType type) noexcept
 - {
 -     switch (type)
 -     {
 -     case kPluginBridgePong:
 -         return "kPluginBridgePong";
 -     case kPluginBridgePluginInfo1:
 -         return "kPluginBridgePluginInfo1";
 -     case kPluginBridgePluginInfo2:
 -         return "kPluginBridgePluginInfo2";
 -     case kPluginBridgeAudioCount:
 -         return "kPluginBridgeAudioCount";
 -     case kPluginBridgeMidiCount:
 -         return "kPluginBridgeMidiCount";
 -     case kPluginBridgeParameterCount:
 -         return "kPluginBridgeParameterCount";
 -     case kPluginBridgeProgramCount:
 -         return "kPluginBridgeProgramCount";
 -     case kPluginBridgeMidiProgramCount:
 -         return "kPluginBridgeMidiProgramCount";
 -     case kPluginBridgeParameterData:
 -         return "kPluginBridgeParameterData";
 -     case kPluginBridgeParameterRanges1:
 -         return "kPluginBridgeParameterRanges1";
 -     case kPluginBridgeParameterRanges2:
 -         return "kPluginBridgeParameterRanges2";
 -     case kPluginBridgeParameterMidiCC:
 -         return "kPluginBridgeParameterMidiCC";
 -     case kPluginBridgeParameterMidiChannel:
 -         return "kPluginBridgeParameterMidiChannel";
 -     case kPluginBridgeParameterValue:
 -         return "kPluginBridgeParameterValue";
 -     case kPluginBridgeDefaultValue:
 -         return "kPluginBridgeDefaultValue";
 -     case kPluginBridgeCurrentProgram:
 -         return "kPluginBridgeCurrentProgram";
 -     case kPluginBridgeCurrentMidiProgram:
 -         return "kPluginBridgeCurrentMidiProgram";
 -     case kPluginBridgeProgramName:
 -         return "kPluginBridgeProgramName";
 -     case kPluginBridgeMidiProgramData:
 -         return "kPluginBridgeMidiProgramData";
 -     case kPluginBridgeConfigure:
 -         return "kPluginBridgeConfigure";
 -     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) noexcept
 - {
 -     switch (opcode)
 -     {
 -     case kPluginBridgeOpcodeNull:
 -         return "kPluginBridgeOpcodeNull";
 -     case kPluginBridgeOpcodeSetAudioPool:
 -         return "kPluginBridgeOpcodeSetAudioPool";
 -     case kPluginBridgeOpcodeSetBufferSize:
 -         return "kPluginBridgeOpcodeSetBufferSize";
 -     case kPluginBridgeOpcodeSetSampleRate:
 -         return "kPluginBridgeOpcodeSetSampleRate";
 -     case kPluginBridgeOpcodeSetParameterRt:
 -         return "kPluginBridgeOpcodeSetParameterRt";
 -     case kPluginBridgeOpcodeSetParameterNonRt:
 -         return "kPluginBridgeOpcodeSetParameterNonRt";
 -     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
 
 
  |