18#ifndef CARLA_ENGINE_HPP_INCLUDED
19#define CARLA_ENGINE_HPP_INCLUDED
25class MemoryOutputStream;
29CARLA_BACKEND_START_NAMESPACE
200 static const uint8_t kDataSize = 4;
209 uint8_t data[kDataSize];
301 CARLA_DECLARE_NON_COPYABLE(
Wine)
360 bool compareIgnoringRollingFrames(const
EngineTimeInfo& timeInfo, uint32_t maxFrames) const noexcept;
397 virtual
void initBuffer() noexcept = 0;
402 inline
bool isInput() const noexcept
426 virtual void setMetaData(
const char* key,
const char* value,
const char* type);
432 const uint32_t kIndexOffset;
472 inline
float* getBuffer() const noexcept
519 inline
float* getBuffer() const noexcept
527 inline void getRange(
float& min,
float& max)
const noexcept
541 float fMinimum, fMaximum;
581 virtual uint32_t getEventCount() const noexcept;
592 virtual
EngineEvent& getEventUnchecked(uint32_t index) const noexcept;
606 uint16_t param, int8_t midiValue,
float normalizedValue) noexcept;
612 bool writeMidiEvent(uint32_t time, uint8_t size, const uint8_t* data) noexcept;
618 bool writeMidiEvent(uint32_t time, uint8_t channel, const
EngineMidiEvent& midi) noexcept;
625 virtual
bool writeMidiEvent(uint32_t time, uint8_t channel, uint8_t size, const uint8_t* data) noexcept;
631 friend class CarlaPluginInstance;
682 struct ProtectedData;
683 ProtectedData*
const pData;
713 virtual
void activate() noexcept;
719 virtual
void deactivate(
bool willClose) noexcept;
724 virtual
bool isActive() const noexcept;
731 virtual
bool isOk() const noexcept;
736 virtual uint32_t getLatency() const noexcept;
741 virtual
void setLatency(uint32_t samples) noexcept;
752 virtual
bool removePort(
EnginePortType portType, const
char* name,
bool isInput);
754#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
780 const
char* getAudioPortName(
bool isInput, uint index) const noexcept;
785 const
char* getCVPortName(
bool isInput, uint index) const noexcept;
790 const
char* getEventPortName(
bool isInput, uint index) const noexcept;
795 struct ProtectedData;
796 ProtectedData*
const pData;
876 virtual uint getMaxPortNameSize() const noexcept;
881 uint getCurrentPluginCount() const noexcept;
887 uint getMaxPluginNumber() const noexcept;
896 virtual
bool init(const
char* clientName) = 0;
903 virtual
bool close();
908 virtual
void idle() noexcept;
913 virtual
bool isRunning() const noexcept = 0;
918 virtual
bool isOffline() const noexcept = 0;
924 virtual
bool usesConstantBufferSize() const noexcept;
934 virtual const
char* getCurrentDriverName() const noexcept = 0;
945 virtual
float getDSPLoad() const noexcept;
950 virtual uint32_t getTotalXruns() const noexcept;
955 virtual
void clearXruns() const noexcept;
962 virtual
bool setBufferSizeAndSampleRate(uint bufferSize,
double sampleRate);
968 virtual
bool showDeviceControlPanel() const noexcept;
978 const
char* filename, const
char* name, const
char* label, int64_t uniqueId,
986 const
char* filename, const
char* name, const
char* label, int64_t uniqueId,
993 virtual
bool removePlugin(uint
id);
998 bool removeAllPlugins();
1000#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1073#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1084 const
char* getCurrentProjectFilename() const noexcept;
1089 void clearCurrentProjectFilename() noexcept;
1103 double getSampleRate() const noexcept;
1108 const
char* getName() const noexcept;
1132 const
float* getPeaks(uint pluginId) const noexcept;
1137 float getInputPeak(uint pluginId,
bool isLeft) const noexcept;
1142 float getOutputPeak(uint pluginId,
bool isLeft) const noexcept;
1151 virtual
void callback(
bool sendHost,
bool sendOSC,
1153 int value1,
int value2,
int value3,
float valuef, const
char* valueStr) noexcept;
1168 bool isDir, const
char* title, const
char* filter) noexcept;
1175#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1183 uint groupA, uint portA,
1184 uint groupB, uint portB);
1195 uint groupId,
int x1,
int y1,
int x2,
int y2);
1214 virtual
void transportPause() noexcept;
1219 virtual
void transportBPM(
double bpm) noexcept;
1224 virtual
void transportRelocate(uint64_t frame) noexcept;
1232 const
char* getLastError() const noexcept;
1237 void setLastError(const
char* error) const noexcept;
1245 bool isAboutToClose() const noexcept;
1252 bool setAboutToClose() noexcept;
1254#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1278 virtual
void setOption(
EngineOption option,
int value, const
char* valueStr) noexcept;
1292 const
char* getOscServerPathTCP() const noexcept;
1297 const
char* getOscServerPathUDP() const noexcept;
1306 struct ProtectedData;
1313 friend class CarlaEngineOsc;
1314 friend class CarlaEngineRunner;
1315 friend class CarlaPluginInstance;
1316 friend class EngineInternalGraph;
1317 friend class PendingRtEventsRunner;
1318 friend class ScopedActionLock;
1319 friend class ScopedEngineEnvironmentLocker;
1320 friend class ScopedRunnerStopper;
1321 friend class PatchbayGraph;
1322 friend struct ExternalGraph;
1323 friend struct RackGraph;
1348 void setPluginPeaksRT(uint pluginId,
float const inPeaks[2],
float const outPeaks[2])
noexcept;
1371#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1402CARLA_BACKEND_END_NAMESPACE
CARLA_BACKEND_START_NAMESPACE typedef std::shared_ptr< CarlaPlugin > CarlaPluginPtr
Definition: CarlaPluginPtr.hpp:267
Definition: CarlaEngine.hpp:442
void initBuffer() noexcept override
CarlaEngineAudioPort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
~CarlaEngineAudioPort() noexcept override
Definition: CarlaEngine.hpp:489
void getRange(float &min, float &max) const noexcept
Definition: CarlaEngine.hpp:527
~CarlaEngineCVPort() noexcept override
void initBuffer() noexcept override
CarlaEngineCVPort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
void setRange(float min, float max) noexcept
Definition: CarlaEngine.hpp:645
virtual void initPortBuffers(const float *const *buffers, uint32_t frames, bool sampleAccurate, CarlaEngineEventPort *eventPort)
bool setCVSourceRange(uint32_t portIndexOffset, float minimum, float maximum)
virtual bool addCVSource(CarlaEngineCVPort *port, uint32_t portIndexOffset, bool reconfigureNow)
virtual bool removeCVSource(uint32_t portIndexOffset)
virtual ~CarlaEngineCVSourcePorts()
Definition: CarlaEngine.hpp:702
const CarlaEngine & getEngine() const noexcept
virtual ~CarlaEngineClient() noexcept
virtual CarlaEngineCVSourcePorts * createCVSourcePorts()
Definition: CarlaEngine.hpp:551
CarlaEngineEventPort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
void initBuffer() noexcept override
~CarlaEngineEventPort() noexcept override
Definition: CarlaEngine.hpp:375
virtual void setMetaData(const char *key, const char *value, const char *type)
virtual ~CarlaEnginePort() noexcept
uint32_t getIndexOffset() const noexcept
Definition: CarlaEngine.hpp:410
const CarlaEngineClient & getEngineClient() const noexcept
Definition: CarlaEngine.hpp:418
CarlaEnginePort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
Definition: CarlaEngine.hpp:814
virtual void touchPluginParameter(uint id, uint32_t parameterId, bool touch) noexcept
virtual bool connectExternalGraphPort(uint, uint, const char *)
static uint getDriverCount()
virtual bool patchbayDisconnect(bool external, uint connectionId)
virtual bool renamePlugin(uint id, const char *newName)
virtual bool patchbayRefresh(bool sendHost, bool sendOSC, bool external)
bool isOscControlRegistered() const noexcept
static CarlaEngine * newDriverByName(const char *driverName)
virtual uint getMaxClientNameSize() const noexcept
static bool showDriverDeviceControlPanel(uint index, const char *deviceName)
virtual bool disconnectExternalGraphPort(uint, uint, const char *)
virtual bool patchbaySetGroupPos(bool sendHost, bool sendOSC, bool external, uint groupId, int x1, int y1, int x2, int y2)
static const EngineDriverDeviceInfo * getDriverDeviceInfo(uint index, const char *driverName)
bool loadProject(const char *filename, bool setAsCurrentProject)
virtual bool restorePatchbayGroupPosition(bool external, PatchbayPosition &ppos)
bool isLoadingProject() const noexcept
bool saveProject(const char *filename, bool setAsCurrentProject)
CarlaPluginPtr getPluginUnchecked(uint id) const noexcept
virtual void restorePatchbayConnection(bool external, const char *sourcePort, const char *targetPort)
void saveProjectInternal(water::MemoryOutputStream &outStrm) const
ProtectedData *const pData
Definition: CarlaEngine.hpp:1306
void sampleRateChanged(double newSampleRate)
void setActionCanceled(bool canceled) noexcept
void offlineModeChanged(bool isOffline)
virtual bool switchPlugins(uint idA, uint idB) noexcept
bool loadFile(const char *filename)
static const char *const * getDriverDeviceNames(uint index)
virtual void transportPlay() noexcept
virtual const char *const * getPatchbayConnections(bool external) const
EngineEvent * getInternalEventBuffer(bool isInput) const noexcept
virtual const PatchbayPosition * getPatchbayPositions(bool external, uint &count) const
void setPluginPeaksRT(uint pluginId, float const inPeaks[2], float const outPeaks[2]) noexcept
const char * getUniquePluginName(const char *name) const
CarlaPluginPtr getPlugin(uint id) const noexcept
virtual bool patchbayConnect(bool external, uint groupA, uint portA, uint groupB, uint portB)
static const char * getDriverName(uint index)
virtual const char * getCurrentProjectFolder() const noexcept
bool wasActionCanceled() const noexcept
bool replacePlugin(uint id) noexcept
bool loadProjectInternal(water::XmlDocument &xmlDoc, bool alwaysLoadConnections)
bool clonePlugin(uint id)
uint32_t getBufferSize() const noexcept
void bufferSizeChanged(uint32_t newBufferSize)
FileCallbackOpcode
Definition: CarlaBackend.h:1624
void(* EngineCallbackFunc)(void *ptr, EngineCallbackOpcode action, uint pluginId, int value1, int value2, int value3, float valuef, const char *valueStr)
Definition: CarlaBackend.h:1695
const char *(* FileCallbackFunc)(void *ptr, FileCallbackOpcode action, bool isDir, const char *title, const char *filter)
Definition: CarlaBackend.h:1703
PluginType
Definition: CarlaBackend.h:608
BinaryType
Definition: CarlaBackend.h:544
EngineOption
Definition: CarlaBackend.h:1318
EngineTransportMode
Definition: CarlaBackend.h:1587
EngineProcessMode
Definition: CarlaBackend.h:1549
EngineCallbackOpcode
Definition: CarlaBackend.h:874
EngineControlEventType
Definition: CarlaEngine.hpp:139
static const uint8_t kEngineEventNonMidiChannel
Definition: CarlaEngine.hpp:175
EngineEventType
Definition: CarlaEngine.hpp:117
EnginePortType
Definition: CarlaEngine.hpp:89
EngineType
Definition: CarlaEngine.hpp:43
@ kEngineControlEventTypeNull
Definition: CarlaEngine.hpp:143
@ kEngineControlEventTypeParameter
Definition: CarlaEngine.hpp:149
@ kEngineControlEventTypeMidiBank
Definition: CarlaEngine.hpp:154
@ kEngineControlEventTypeAllSoundOff
Definition: CarlaEngine.hpp:164
@ kEngineControlEventTypeMidiProgram
Definition: CarlaEngine.hpp:159
@ kEngineControlEventTypeAllNotesOff
Definition: CarlaEngine.hpp:169
@ kEngineEventTypeMidi
Definition: CarlaEngine.hpp:133
@ kEngineEventTypeControl
Definition: CarlaEngine.hpp:127
@ kEngineEventTypeNull
Definition: CarlaEngine.hpp:121
@ kEnginePortTypeNull
Definition: CarlaEngine.hpp:93
@ kEnginePortTypeAudio
Definition: CarlaEngine.hpp:99
@ kEnginePortTypeEvent
Definition: CarlaEngine.hpp:111
@ kEnginePortTypeCV
Definition: CarlaEngine.hpp:105
@ kEngineTypeJuce
Definition: CarlaEngine.hpp:58
@ kEngineTypeNull
Definition: CarlaEngine.hpp:47
@ kEngineTypeRtAudio
Definition: CarlaEngine.hpp:63
@ kEngineTypeSDL
Definition: CarlaEngine.hpp:68
@ kEngineTypeDummy
Definition: CarlaEngine.hpp:83
@ kEngineTypePlugin
Definition: CarlaEngine.hpp:73
@ kEngineTypeJack
Definition: CarlaEngine.hpp:53
@ kEngineTypeBridge
Definition: CarlaEngine.hpp:78
static const uint PLUGIN_OPTIONS_NULL
Definition: CarlaBackend.h:283
Definition: CarlaEngine.hpp:24
Definition: CarlaEngine.hpp:1379
bool dealloc
Definition: CarlaEngine.hpp:1379
Definition: CarlaEngine.hpp:182
uint8_t convertToMidiData(uint8_t channel, uint8_t data[3]) const noexcept
bool handled
Indicates that event was handled/received at least once.
Definition: CarlaEngine.hpp:187
EngineControlEventType type
Control-Event type.
Definition: CarlaEngine.hpp:183
float normalizedValue
Parameter value, normalized to 0.0f<->1.0f.
Definition: CarlaEngine.hpp:186
uint16_t param
Parameter Id, midi bank or midi program.
Definition: CarlaEngine.hpp:184
int8_t midiValue
Raw midi value, >= 0 if applicable, -1 otherwise.
Definition: CarlaEngine.hpp:185
Definition: CarlaBackend.h:1954
Definition: CarlaEngine.hpp:216
void fillFromMidiData(uint8_t size, const uint8_t *data, uint8_t midiPortOffset) noexcept
EngineControlEvent ctrl
Definition: CarlaEngine.hpp:225
uint8_t channel
Channel, used for MIDI-related events.
Definition: CarlaEngine.hpp:219
EngineEventType type
Event Type; either Control or MIDI.
Definition: CarlaEngine.hpp:217
uint32_t time
Time offset in frames.
Definition: CarlaEngine.hpp:218
EngineMidiEvent midi
Definition: CarlaEngine.hpp:226
Definition: CarlaEngine.hpp:199
uint8_t port
Port offset (usually 0)
Definition: CarlaEngine.hpp:202
uint8_t size
Number of bytes used.
Definition: CarlaEngine.hpp:203
const uint8_t * dataExt
Definition: CarlaEngine.hpp:210
Definition: CarlaEngine.hpp:289
bool autoPrefix
Definition: CarlaEngine.hpp:292
bool rtPrio
Definition: CarlaEngine.hpp:295
int baseRtPrio
Definition: CarlaEngine.hpp:296
const char * executable
Definition: CarlaEngine.hpp:290
int serverRtPrio
Definition: CarlaEngine.hpp:297
const char * fallbackPrefix
Definition: CarlaEngine.hpp:293
Definition: CarlaEngine.hpp:240
uint bgColor
Definition: CarlaEngine.hpp:251
const char * clientNamePrefix
Definition: CarlaEngine.hpp:283
bool resetXruns
Definition: CarlaEngine.hpp:246
uint audioSampleRate
Definition: CarlaEngine.hpp:258
const char * pathVST3
Definition: CarlaEngine.hpp:276
bool preventBadBehaviour
Definition: CarlaEngine.hpp:285
int oscPortTCP
Definition: CarlaEngine.hpp:265
const char * resourceDir
Definition: CarlaEngine.hpp:282
EngineTransportMode transportMode
Definition: CarlaEngine.hpp:242
bool pluginsAreStandalone
Definition: CarlaEngine.hpp:250
const char * pathJSFX
Definition: CarlaEngine.hpp:279
const char * pathSFZ
Definition: CarlaEngine.hpp:278
bool oscEnabled
Definition: CarlaEngine.hpp:264
const char * binaryDir
Definition: CarlaEngine.hpp:281
uint fgColor
Definition: CarlaEngine.hpp:252
const char * pathLADSPA
Definition: CarlaEngine.hpp:272
const char * pathAudio
Definition: CarlaEngine.hpp:269
uintptr_t frontendWinId
Definition: CarlaEngine.hpp:286
const char * pathMIDI
Definition: CarlaEngine.hpp:270
bool preferPluginBridges
Definition: CarlaEngine.hpp:247
bool uisAlwaysOnTop
Definition: CarlaEngine.hpp:249
const char * pathVST2
Definition: CarlaEngine.hpp:275
const char * pathLV2
Definition: CarlaEngine.hpp:274
EngineProcessMode processMode
Definition: CarlaEngine.hpp:241
const char * audioDevice
Definition: CarlaEngine.hpp:261
const char * transportExtra
Definition: CarlaEngine.hpp:243
int oscPortUDP
Definition: CarlaEngine.hpp:266
uint uiBridgesTimeout
Definition: CarlaEngine.hpp:256
uint maxParameters
Definition: CarlaEngine.hpp:255
uint audioBufferSize
Definition: CarlaEngine.hpp:257
bool forceStereo
Definition: CarlaEngine.hpp:245
const char * pathSF2
Definition: CarlaEngine.hpp:277
bool preferUiBridges
Definition: CarlaEngine.hpp:248
float uiScale
Definition: CarlaEngine.hpp:253
bool audioTripleBuffer
Definition: CarlaEngine.hpp:259
const char * pathDSSI
Definition: CarlaEngine.hpp:273
const char * audioDriver
Definition: CarlaEngine.hpp:260
Definition: CarlaEngine.hpp:315
bool valid
Definition: CarlaEngine.hpp:316
double ticksPerBeat
Definition: CarlaEngine.hpp:326
float beatsPerBar
time signature "numerator"
Definition: CarlaEngine.hpp:323
double barStartTick
Definition: CarlaEngine.hpp:321
double beatsPerMinute
Definition: CarlaEngine.hpp:327
int32_t bar
current bar
Definition: CarlaEngine.hpp:318
int32_t beat
current beat-within-bar
Definition: CarlaEngine.hpp:319
double tick
current tick-within-beat
Definition: CarlaEngine.hpp:320
float beatType
time signature "denominator"
Definition: CarlaEngine.hpp:324
Definition: CarlaEngine.hpp:343
uint64_t usecs
Definition: CarlaEngine.hpp:346
bool playing
Definition: CarlaEngine.hpp:344
uint64_t frame
Definition: CarlaEngine.hpp:345
EngineTimeInfoBBT bbt
Definition: CarlaEngine.hpp:347