18#ifndef CARLA_ENGINE_HPP_INCLUDED
19#define CARLA_ENGINE_HPP_INCLUDED
25class MemoryOutputStream;
29CARLA_BACKEND_START_NAMESPACE
301 CARLA_DECLARE_NON_COPYABLE(
Wine)
360 bool compareIgnoringRollingFrames(const
EngineTimeInfo& timeInfo, uint32_t maxFrames) const noexcept;
426 virtual void setMetaData(
const char* key,
const char* value,
const char* type);
432 const uint32_t kIndexOffset;
527 inline void getRange(
float& min,
float& max)
const noexcept
541 float fMinimum, fMaximum;
606 uint16_t param, int8_t midiValue,
float normalizedValue) 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;
731 virtual
bool isOk() const noexcept;
754#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
795 struct ProtectedData;
796 ProtectedData*
const pData;
896 virtual
bool init(const
char* clientName) = 0;
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,
1000#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1073#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
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);
1254#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1306 struct ProtectedData;
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
EnginePortType getType() const noexcept final
Definition CarlaEngine.hpp:458
float * getBuffer() const noexcept
Definition CarlaEngine.hpp:472
Definition CarlaEngine.hpp:489
void getRange(float &min, float &max) const noexcept
Definition CarlaEngine.hpp:527
float * getBuffer() const noexcept
Definition CarlaEngine.hpp:519
~CarlaEngineCVPort() noexcept override
void initBuffer() noexcept override
CarlaEngineCVPort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
void setRange(float min, float max) noexcept
EnginePortType getType() const noexcept final
Definition CarlaEngine.hpp:505
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 char * getAudioPortName(bool isInput, uint index) const noexcept
const CarlaEngine & getEngine() const noexcept
const char * getEventPortName(bool isInput, uint index) const noexcept
virtual bool isOk() const noexcept
virtual void deactivate(bool willClose) noexcept
virtual bool removePort(EnginePortType portType, const char *name, bool isInput)
virtual ~CarlaEngineClient() noexcept
virtual bool isActive() const noexcept
uint getPortCount(EnginePortType portType, bool isInput) const noexcept
virtual void setLatency(uint32_t samples) noexcept
const char * getCVPortName(bool isInput, uint index) const noexcept
virtual uint32_t getLatency() const noexcept
EngineProcessMode getProcessMode() const noexcept
virtual CarlaEngineCVSourcePorts * createCVSourcePorts()
virtual void activate() noexcept
virtual CarlaEnginePort * addPort(EnginePortType portType, const char *name, bool isInput, uint32_t indexOffset)
Definition CarlaEngine.hpp:551
CarlaEngineEventPort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
EnginePortType getType() const noexcept final
Definition CarlaEngine.hpp:567
void initBuffer() noexcept override
virtual uint32_t getEventCount() const noexcept
~CarlaEngineEventPort() noexcept override
virtual EngineEvent & getEvent(uint32_t index) const noexcept
bool writeControlEvent(uint32_t time, uint8_t channel, const EngineControlEvent &ctrl) noexcept
virtual EngineEvent & getEventUnchecked(uint32_t index) const noexcept
bool writeMidiEvent(uint32_t time, uint8_t size, const uint8_t *data) noexcept
Definition CarlaEngine.hpp:375
virtual void setMetaData(const char *key, const char *value, const char *type)
virtual EnginePortType getType() const noexcept=0
virtual ~CarlaEnginePort() noexcept
uint32_t getIndexOffset() const noexcept
Definition CarlaEngine.hpp:410
const CarlaEngineClient & getEngineClient() const noexcept
Definition CarlaEngine.hpp:418
bool isInput() const noexcept
Definition CarlaEngine.hpp:402
CarlaEnginePort(const CarlaEngineClient &client, bool isInputPort, uint32_t indexOffset) noexcept
virtual void initBuffer() noexcept=0
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)
virtual bool usesConstantBufferSize() const noexcept
bool setAboutToClose() noexcept
bool isOscControlRegistered() const noexcept
friend class CarlaEngineRunner
Definition CarlaEngine.hpp:1314
static CarlaEngine * newDriverByName(const char *driverName)
friend class ScopedEngineEnvironmentLocker
Definition CarlaEngine.hpp:1319
virtual uint getMaxClientNameSize() const noexcept
static bool showDriverDeviceControlPanel(uint index, const char *deviceName)
virtual bool disconnectExternalGraphPort(uint, uint, const char *)
virtual const char * getCurrentDriverName() const noexcept=0
virtual bool patchbaySetGroupPos(bool sendHost, bool sendOSC, bool external, uint groupId, int x1, int y1, int x2, int y2)
friend class PatchbayGraph
Definition CarlaEngine.hpp:1321
const char * getOscServerPathUDP() const noexcept
static const EngineDriverDeviceInfo * getDriverDeviceInfo(uint index, const char *driverName)
virtual bool removePlugin(uint id)
bool loadProject(const char *filename, bool setAsCurrentProject)
const char * getLastError() const noexcept
virtual bool restorePatchbayGroupPosition(bool external, PatchbayPosition &ppos)
virtual bool setBufferSizeAndSampleRate(uint bufferSize, double sampleRate)
virtual bool init(const char *clientName)=0
friend class EngineInternalGraph
Definition CarlaEngine.hpp:1316
bool isLoadingProject() const noexcept
friend struct RackGraph
Definition CarlaEngine.hpp:1323
friend class ScopedActionLock
Definition CarlaEngine.hpp:1318
void clearCurrentProjectFilename() noexcept
const float * getPeaks(uint pluginId) const noexcept
friend struct ExternalGraph
Definition CarlaEngine.hpp:1322
friend class ScopedRunnerStopper
Definition CarlaEngine.hpp:1320
const EngineOptions & getOptions() const noexcept
const char * getOscServerPathTCP() const noexcept
double getSampleRate() const noexcept
uint getMaxPluginNumber() const noexcept
bool saveProject(const char *filename, bool setAsCurrentProject)
friend class CarlaEngineEventPort
Definition CarlaEngine.hpp:1312
friend class CarlaEngineOsc
Definition CarlaEngine.hpp:1313
const char * getCurrentProjectFilename() const noexcept
virtual const char * runFileCallback(FileCallbackOpcode action, bool isDir, const char *title, const char *filter) noexcept
virtual void transportBPM(double bpm) noexcept
CarlaPluginPtr getPluginUnchecked(uint id) const noexcept
uint getCurrentPluginCount() const noexcept
virtual void restorePatchbayConnection(bool external, const char *sourcePort, const char *targetPort)
void saveProjectInternal(water::MemoryOutputStream &outStrm) const
void setLastError(const char *error) const noexcept
void setFileCallback(FileCallbackFunc func, void *ptr) noexcept
ProtectedData *const pData
Definition CarlaEngine.hpp:1307
void sampleRateChanged(double newSampleRate)
bool isAboutToClose() const noexcept
void setActionCanceled(bool canceled) noexcept
friend class PendingRtEventsRunner
Definition CarlaEngine.hpp:1317
void offlineModeChanged(bool isOffline)
virtual bool switchPlugins(uint idA, uint idB) noexcept
bool loadFile(const char *filename)
friend class CarlaPluginInstance
Definition CarlaEngine.hpp:1315
bool addPlugin(BinaryType btype, PluginType ptype, const char *filename, const char *name, const char *label, int64_t uniqueId, const void *extra, uint options=PLUGIN_OPTIONS_NULL)
virtual uint32_t getTotalXruns() const noexcept
static const char *const * getDriverDeviceNames(uint index)
virtual void transportPlay() noexcept
virtual void clearXruns() const noexcept
virtual const char *const * getPatchbayConnections(bool external) const
virtual EngineType getType() const noexcept=0
EngineEvent * getInternalEventBuffer(bool isInput) const noexcept
virtual const PatchbayPosition * getPatchbayPositions(bool external, uint &count) const
virtual void callback(bool sendHost, bool sendOSC, EngineCallbackOpcode action, uint pluginId, int value1, int value2, int value3, float valuef, const char *valueStr) noexcept
void setPluginPeaksRT(uint pluginId, float const inPeaks[2], float const outPeaks[2]) noexcept
virtual bool isRunning() const noexcept=0
virtual void transportPause() noexcept
virtual bool isOffline() const noexcept=0
virtual bool showDeviceControlPanel() const 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)
float getInputPeak(uint pluginId, bool isLeft) const noexcept
virtual void setOption(EngineOption option, int value, const char *valueStr) noexcept
EngineProcessMode getProccessMode() const noexcept
static const char * getDriverName(uint index)
float getOutputPeak(uint pluginId, bool isLeft) const noexcept
virtual float getDSPLoad() const noexcept
const char * getName() const noexcept
virtual void transportRelocate(uint64_t frame) noexcept
virtual const char * getCurrentProjectFolder() const noexcept
virtual CarlaEngineClient * addClient(CarlaPluginPtr plugin)
bool wasActionCanceled() const noexcept
virtual void idle() noexcept
bool replacePlugin(uint id) noexcept
virtual uint getMaxPortNameSize() const noexcept
bool loadProjectInternal(water::XmlDocument &xmlDoc, bool alwaysLoadConnections)
void setCallback(EngineCallbackFunc func, void *ptr) noexcept
bool clonePlugin(uint id)
virtual EngineTimeInfo getTimeInfo() const noexcept
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
int x2
Definition CarlaEngine.hpp:1379
const char * name
Definition CarlaEngine.hpp:1379
bool dealloc
Definition CarlaEngine.hpp:1379
int y2
Definition CarlaEngine.hpp:1379
int x1
Definition CarlaEngine.hpp:1379
int y1
Definition CarlaEngine.hpp:1379
int pluginId
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 data[kDataSize]
Definition CarlaEngine.hpp:209
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
static const uint8_t kDataSize
Size of internal data.
Definition CarlaEngine.hpp:200
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
struct EngineOptions::Wine wine
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