Carla Backend
CarlaEngine.hpp
Go to the documentation of this file.
1 /*
2  * Carla Plugin Host
3  * Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation; either version 2 of
8  * the License, or any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * For a full copy of the GNU General Public License see the doc/GPL.txt file.
16  */
17 
18 #ifndef CARLA_ENGINE_HPP_INCLUDED
19 #define CARLA_ENGINE_HPP_INCLUDED
20 
21 #include "CarlaBackend.h"
22 #include "CarlaPluginPtr.hpp"
23 
24 namespace water {
25 class MemoryOutputStream;
26 class XmlDocument;
27 }
28 
29 CARLA_BACKEND_START_NAMESPACE
30 
31 // -----------------------------------------------------------------------
32 
43 enum EngineType {
48 
54 
59 
64 
69 
74 
79 };
80 
89 
95 
101 
107 };
108 
117 
123 
129 };
130 
139 
145 
150 
155 
160 
165 };
166 
170 static const uint8_t kEngineEventNonMidiChannel = 0x30;
171 
172 // -----------------------------------------------------------------------
173 
177 struct CARLA_API EngineControlEvent {
179  uint16_t param;
180  int8_t midiValue;
182  bool handled;
183 
188  uint8_t convertToMidiData(uint8_t channel, uint8_t data[3]) const noexcept;
189 };
190 
194 struct CARLA_API EngineMidiEvent {
195  static const uint8_t kDataSize = 4;
196 
197  uint8_t port;
198  uint8_t size;
199 
204  uint8_t data[kDataSize];
205  const uint8_t* dataExt;
206 };
207 
211 struct CARLA_API EngineEvent {
213  uint32_t time;
214  uint8_t channel;
215 
219  union {
222  };
223 
227  void fillFromMidiData(uint8_t size, const uint8_t* data, uint8_t midiPortOffset) noexcept;
228 };
229 
230 // -----------------------------------------------------------------------
231 
235 struct CARLA_API EngineOptions {
238  const char* transportExtra;
239 
245  uint bgColor;
246  uint fgColor;
247  float uiScale;
248 
254  const char* audioDriver;
255  const char* audioDevice;
256 
257 #ifndef BUILD_BRIDGE
261 #endif
262 
263  const char* pathAudio;
264  const char* pathMIDI;
265 
266  const char* pathLADSPA;
267  const char* pathDSSI;
268  const char* pathLV2;
269  const char* pathVST2;
270  const char* pathVST3;
271  const char* pathSF2;
272  const char* pathSFZ;
273 
274  const char* binaryDir;
275  const char* resourceDir;
276  const char* clientNamePrefix;
277 
279  uintptr_t frontendWinId;
280 
281 #ifndef CARLA_OS_WIN
282  struct Wine {
283  const char* executable;
284 
286  const char* fallbackPrefix;
287 
288  bool rtPrio;
291 
292  Wine() noexcept;
293  ~Wine() noexcept;
294  CARLA_DECLARE_NON_COPY_STRUCT(Wine)
295  } wine;
296 #endif
297 
298 #ifndef DOXYGEN
299  EngineOptions() noexcept;
300  ~EngineOptions() noexcept;
301  CARLA_DECLARE_NON_COPY_STRUCT(EngineOptions)
302 #endif
303 };
304 
308 struct CARLA_API EngineTimeInfoBBT {
309  bool valid;
310 
311  int32_t bar;
312  int32_t beat;
313  double tick;
314  double barStartTick;
315 
316  float beatsPerBar;
317  float beatType;
318 
319  double ticksPerBeat;
321 
325  void clear() noexcept;
326 
327 #ifndef DOXYGEN
328  EngineTimeInfoBBT() noexcept;
329  EngineTimeInfoBBT(const EngineTimeInfoBBT&) noexcept;
330 #endif
331 };
332 
336 struct CARLA_API EngineTimeInfo {
337  bool playing;
338  uint64_t frame;
339  uint64_t usecs;
341 
345  void clear() noexcept;
346 
347 #ifndef DOXYGEN
348  EngineTimeInfo() noexcept;
349  EngineTimeInfo(const EngineTimeInfo&) noexcept;
350  EngineTimeInfo& operator=(const EngineTimeInfo&) noexcept;
351 
352  // fast comparison, doesn't check all values
353  bool compareIgnoringRollingFrames(const EngineTimeInfo& timeInfo, uint32_t maxFrames) const noexcept;
354 
355  // quick operator, doesn't check all values
356  bool operator==(const EngineTimeInfo& timeInfo) const noexcept;
357  bool operator!=(const EngineTimeInfo& timeInfo) const noexcept;
358 #endif
359 };
360 
361 // -----------------------------------------------------------------------
362 
367 class CARLA_API CarlaEnginePort
368 {
369 protected:
374  CarlaEnginePort(const CarlaEngineClient& client, bool isInputPort, uint32_t indexOffset) noexcept;
375 
376 public:
380  virtual ~CarlaEnginePort() noexcept;
381 
385  virtual EnginePortType getType() const noexcept = 0;
386 
390  virtual void initBuffer() noexcept = 0;
391 
395  inline bool isInput() const noexcept
396  {
397  return kIsInput;
398  }
399 
403  inline uint32_t getIndexOffset() const noexcept
404  {
405  return kIndexOffset;
406  }
407 
411  inline const CarlaEngineClient& getEngineClient() const noexcept
412  {
413  return kClient;
414  }
415 
419  virtual void setMetaData(const char* key, const char* value, const char* type);
420 
421 #ifndef DOXYGEN
422 protected:
423  const CarlaEngineClient& kClient;
424  const bool kIsInput;
425  const uint32_t kIndexOffset;
426 
427  CARLA_DECLARE_NON_COPY_CLASS(CarlaEnginePort)
428 #endif
429 };
430 
434 class CARLA_API CarlaEngineAudioPort : public CarlaEnginePort
435 {
436 public:
441  CarlaEngineAudioPort(const CarlaEngineClient& client, bool isInputPort, uint32_t indexOffset) noexcept;
442 
446  ~CarlaEngineAudioPort() noexcept override;
447 
451  inline EnginePortType getType() const noexcept final
452  {
453  return kEnginePortTypeAudio;
454  }
455 
459  void initBuffer() noexcept override;
460 
465  inline float* getBuffer() const noexcept
466  {
467  return fBuffer;
468  }
469 
470 #ifndef DOXYGEN
471 protected:
472  float* fBuffer;
473 
474  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngineAudioPort)
475 #endif
476 };
477 
481 class CARLA_API CarlaEngineCVPort : public CarlaEnginePort
482 {
483 public:
488  CarlaEngineCVPort(const CarlaEngineClient& client, bool isInputPort, uint32_t indexOffset) noexcept;
489 
493  ~CarlaEngineCVPort() noexcept override;
494 
498  inline EnginePortType getType() const noexcept final
499  {
500  return kEnginePortTypeCV;
501  }
502 
506  void initBuffer() noexcept override;
507 
512  inline float* getBuffer() const noexcept
513  {
514  return fBuffer;
515  }
516 
520  inline void getRange(float& min, float& max) const noexcept
521  {
522  min = fMinimum;
523  max = fMaximum;
524  }
525 
529  void setRange(float min, float max) noexcept;
530 
531 #ifndef DOXYGEN
532 protected:
533  float* fBuffer;
534  float fMinimum, fMaximum;
535 
536  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngineCVPort)
537 #endif
538 };
539 
543 class CARLA_API CarlaEngineEventPort : public CarlaEnginePort
544 {
545 public:
550  CarlaEngineEventPort(const CarlaEngineClient& client, bool isInputPort, uint32_t indexOffset) noexcept;
551 
555  ~CarlaEngineEventPort() noexcept override;
556 
560  inline EnginePortType getType() const noexcept final
561  {
562  return kEnginePortTypeEvent;
563  }
564 
568  void initBuffer() noexcept override;
569 
574  virtual uint32_t getEventCount() const noexcept;
575 
580  virtual EngineEvent& getEvent(uint32_t index) const noexcept;
581 
585  virtual EngineEvent& getEventUnchecked(uint32_t index) const noexcept;
586 
591  bool writeControlEvent(uint32_t time, uint8_t channel, const EngineControlEvent& ctrl) noexcept;
592 
598  virtual bool writeControlEvent(uint32_t time, uint8_t channel, EngineControlEventType type,
599  uint16_t param, int8_t midiValue, float normalizedValue) noexcept;
600 
605  bool writeMidiEvent(uint32_t time, uint8_t size, const uint8_t* data) noexcept;
606 
611  bool writeMidiEvent(uint32_t time, uint8_t channel, const EngineMidiEvent& midi) noexcept;
612 
618  virtual bool writeMidiEvent(uint32_t time, uint8_t channel, uint8_t size, const uint8_t* data) noexcept;
619 
620 #ifndef DOXYGEN
621 protected:
622  const EngineProcessMode kProcessMode;
623  EngineEvent* fBuffer;
624  friend class CarlaPluginInstance;
625  friend class CarlaEngineCVSourcePorts;
626 
627  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngineEventPort)
628 #endif
629 };
630 
631 // -----------------------------------------------------------------------
632 
638 {
639 public:
643  virtual ~CarlaEngineCVSourcePorts();
644 
648  virtual bool addCVSource(CarlaEngineCVPort* port, uint32_t portIndexOffset, bool reconfigureNow);
649 
653  virtual bool removeCVSource(uint32_t portIndexOffset);
654 
659  virtual void initPortBuffers(const float* const* buffers, uint32_t frames,
660  bool sampleAccurate, CarlaEngineEventPort* eventPort);
661 
665  bool setCVSourceRange(uint32_t portIndexOffset, float minimum, float maximum);
666 
670  void cleanup();
671 
672 #ifndef DOXYGEN
673 protected:
675  struct ProtectedData;
676  ProtectedData* const pData;
677 
682 
683  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngineCVSourcePorts)
684 #endif
685 };
686 
687 // -----------------------------------------------------------------------
688 
694 class CARLA_API CarlaEngineClient
695 {
696 public:
700  virtual ~CarlaEngineClient() noexcept;
701 
706  virtual void activate() noexcept;
707 
712  virtual void deactivate(bool willClose) noexcept;
713 
717  virtual bool isActive() const noexcept;
718 
724  virtual bool isOk() const noexcept;
725 
729  virtual uint32_t getLatency() const noexcept;
730 
734  virtual void setLatency(uint32_t samples) noexcept;
735 
740  virtual CarlaEnginePort* addPort(EnginePortType portType, const char* name, bool isInput, uint32_t indexOffset);
741 
745  virtual bool removePort(EnginePortType portType, const char* name, bool isInput);
746 
747 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
748 
752  virtual CarlaEngineCVSourcePorts* createCVSourcePorts();
753 #endif
754 
758  const CarlaEngine& getEngine() const noexcept;
759 
763  EngineProcessMode getProcessMode() const noexcept;
764 
768  uint getPortCount(EnginePortType portType, bool isInput) const noexcept;
769 
773  const char* getAudioPortName(bool isInput, uint index) const noexcept;
774 
778  const char* getCVPortName(bool isInput, uint index) const noexcept;
779 
783  const char* getEventPortName(bool isInput, uint index) const noexcept;
784 
785 #ifndef DOXYGEN
786 protected:
788  struct ProtectedData;
789  ProtectedData* const pData;
790 
794  CarlaEngineClient(ProtectedData* pData);
795 
796  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngineClient)
797 #endif
798 };
799 
800 // -----------------------------------------------------------------------
801 
806 class CARLA_API CarlaEngine
807 {
808 protected:
813  CarlaEngine();
814 
815 public:
820  virtual ~CarlaEngine();
821 
822  // -------------------------------------------------------------------
823  // Static calls
824 
828  static uint getDriverCount();
829 
833  static const char* getDriverName(uint index);
834 
838  static const char* const* getDriverDeviceNames(uint index);
839 
843  static const EngineDriverDeviceInfo* getDriverDeviceInfo(uint index, const char* driverName);
844 
849  static bool showDriverDeviceControlPanel(uint index, const char* deviceName);
850 
856  static CarlaEngine* newDriverByName(const char* driverName);
857 
858  // -------------------------------------------------------------------
859  // Constant values
860 
864  virtual uint getMaxClientNameSize() const noexcept;
865 
869  virtual uint getMaxPortNameSize() const noexcept;
870 
874  uint getCurrentPluginCount() const noexcept;
875 
880  uint getMaxPluginNumber() const noexcept;
881 
882  // -------------------------------------------------------------------
883  // Virtual, per-engine type calls
884 
889  virtual bool init(const char* clientName) = 0;
890 
896  virtual bool close();
897 
901  virtual void idle() noexcept;
902 
906  virtual bool isRunning() const noexcept = 0;
907 
911  virtual bool isOffline() const noexcept = 0;
912 
917  virtual bool usesConstantBufferSize() const noexcept;
918 
922  virtual EngineType getType() const noexcept = 0;
923 
927  virtual const char* getCurrentDriverName() const noexcept = 0;
928 
933  virtual CarlaEngineClient* addClient(CarlaPluginPtr plugin);
934 
938  virtual float getDSPLoad() const noexcept;
939 
943  virtual uint32_t getTotalXruns() const noexcept;
944 
948  virtual void clearXruns() const noexcept;
949 
955  virtual bool setBufferSizeAndSampleRate(uint bufferSize, double sampleRate);
956 
961  virtual bool showDeviceControlPanel() const noexcept;
962 
963  // -------------------------------------------------------------------
964  // Plugin management
965 
970  bool addPlugin(BinaryType btype, PluginType ptype,
971  const char* filename, const char* name, const char* label, int64_t uniqueId,
972  const void* extra, uint options = PLUGIN_OPTIONS_NULL);
973 
978  bool addPlugin(PluginType ptype,
979  const char* filename, const char* name, const char* label, int64_t uniqueId,
980  const void* extra);
981 
986  virtual bool removePlugin(uint id);
987 
991  bool removeAllPlugins();
992 
993 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
994 
1000  virtual bool renamePlugin(uint id, const char* newName);
1001 
1005  bool clonePlugin(uint id);
1006 
1012  bool replacePlugin(uint id) noexcept;
1013 
1017  virtual bool switchPlugins(uint idA, uint idB) noexcept;
1018 #endif
1019 
1027  virtual void touchPluginParameter(uint id, uint32_t parameterId, bool touch) noexcept;
1028 
1032  CarlaPluginPtr getPlugin(uint id) const noexcept;
1033 
1037  CarlaPluginPtr getPluginUnchecked(uint id) const noexcept;
1038 
1043  const char* getUniquePluginName(const char* name) const;
1044 
1045  // -------------------------------------------------------------------
1046  // Project management
1047 
1053  bool loadFile(const char* filename);
1054 
1059  bool loadProject(const char* filename, bool setAsCurrentProject);
1060 
1064  bool saveProject(const char* filename, bool setAsCurrentProject);
1065 
1066 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1067 
1071  virtual const char* getCurrentProjectFolder() const noexcept;
1072 
1077  const char* getCurrentProjectFilename() const noexcept;
1078 
1082  void clearCurrentProjectFilename() noexcept;
1083 #endif
1084 
1085  // -------------------------------------------------------------------
1086  // Information (base)
1087 
1091  uint32_t getBufferSize() const noexcept;
1092 
1096  double getSampleRate() const noexcept;
1097 
1101  const char* getName() const noexcept;
1102 
1106  EngineProcessMode getProccessMode() const noexcept;
1107 
1111  const EngineOptions& getOptions() const noexcept;
1112 
1116  virtual EngineTimeInfo getTimeInfo() const noexcept;
1117 
1118  // -------------------------------------------------------------------
1119  // Information (peaks)
1120 
1125  const float* getPeaks(uint pluginId) const noexcept;
1126 
1130  float getInputPeak(uint pluginId, bool isLeft) const noexcept;
1131 
1135  float getOutputPeak(uint pluginId, bool isLeft) const noexcept;
1136 
1137  // -------------------------------------------------------------------
1138  // Callback
1139 
1144  virtual void callback(bool sendHost, bool sendOSC,
1145  EngineCallbackOpcode action, uint pluginId,
1146  int value1, int value2, int value3, float valuef, const char* valueStr) noexcept;
1147 
1151  void setCallback(EngineCallbackFunc func, void* ptr) noexcept;
1152 
1153  // -------------------------------------------------------------------
1154  // Callback
1155 
1160  virtual const char* runFileCallback(FileCallbackOpcode action,
1161  bool isDir, const char* title, const char* filter) noexcept;
1162 
1166  void setFileCallback(FileCallbackFunc func, void* ptr) noexcept;
1167 
1168 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1169  // -------------------------------------------------------------------
1170  // Patchbay
1171 
1175  virtual bool patchbayConnect(bool external,
1176  uint groupA, uint portA,
1177  uint groupB, uint portB);
1178 
1182  virtual bool patchbayDisconnect(bool external, uint connectionId);
1183 
1187  virtual bool patchbaySetGroupPos(bool sendHost, bool sendOSC, bool external,
1188  uint groupId, int x1, int y1, int x2, int y2);
1189 
1193  virtual bool patchbayRefresh(bool sendHost, bool sendOSC, bool external);
1194 #endif
1195 
1196  // -------------------------------------------------------------------
1197  // Transport
1198 
1202  virtual void transportPlay() noexcept;
1203 
1207  virtual void transportPause() noexcept;
1208 
1212  virtual void transportBPM(double bpm) noexcept;
1213 
1217  virtual void transportRelocate(uint64_t frame) noexcept;
1218 
1219  // -------------------------------------------------------------------
1220  // Error handling
1221 
1225  const char* getLastError() const noexcept;
1226 
1230  void setLastError(const char* error) const noexcept;
1231 
1232  // -------------------------------------------------------------------
1233  // Misc
1234 
1238  bool isAboutToClose() const noexcept;
1239 
1245  bool setAboutToClose() noexcept;
1246 
1247 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1248 
1251  bool isLoadingProject() const noexcept;
1252 #endif
1253 
1258  void setActionCanceled(bool canceled) noexcept;
1259 
1263  bool wasActionCanceled() const noexcept;
1264 
1265  // -------------------------------------------------------------------
1266  // Options
1267 
1271  virtual void setOption(EngineOption option, int value, const char* valueStr) noexcept;
1272 
1273  // -------------------------------------------------------------------
1274  // OSC Stuff
1275 
1276 #ifndef BUILD_BRIDGE
1277 
1280  bool isOscControlRegistered() const noexcept;
1281 
1285  const char* getOscServerPathTCP() const noexcept;
1286 
1290  const char* getOscServerPathUDP() const noexcept;
1291 #endif
1292 
1293  // -------------------------------------------------------------------
1294 
1295 protected:
1299  struct ProtectedData;
1300  ProtectedData* const pData;
1301 
1305  friend class CarlaEngineEventPort;
1306  friend class CarlaEngineOsc;
1307  friend class CarlaEngineThread;
1308  friend class CarlaPluginInstance;
1309  friend class EngineInternalGraph;
1310  friend class PendingRtEventsRunner;
1311  friend class ScopedActionLock;
1312  friend class ScopedEngineEnvironmentLocker;
1313  friend class ScopedThreadStopper;
1314  friend class PatchbayGraph;
1315  friend struct ExternalGraph;
1316  friend struct RackGraph;
1317 
1318  // -------------------------------------------------------------------
1319  // Internal stuff
1320 
1324  void bufferSizeChanged(uint32_t newBufferSize);
1325 
1330  void sampleRateChanged(double newSampleRate);
1331 
1335  void offlineModeChanged(bool isOffline);
1336 
1341  void setPluginPeaksRT(uint pluginId, float const inPeaks[2], float const outPeaks[2]) noexcept;
1342 
1346  void saveProjectInternal(water::MemoryOutputStream& outStrm) const;
1347 
1351  bool loadProjectInternal(water::XmlDocument& xmlDoc, bool alwaysLoadConnections);
1352 
1353  // -------------------------------------------------------------------
1354  // Helper functions
1355 
1360  EngineEvent* getInternalEventBuffer(bool isInput) const noexcept;
1361 
1362 #ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1363  // -------------------------------------------------------------------
1364  // Patchbay stuff
1365 
1370  struct PatchbayPosition { const char* name; int x1, y1, x2, y2, pluginId; bool dealloc; };
1371  virtual const char* const* getPatchbayConnections(bool external) const;
1372  virtual const PatchbayPosition* getPatchbayPositions(bool external, uint& count) const;
1373  virtual void restorePatchbayConnection(bool external, const char* sourcePort, const char* targetPort);
1374  // returns true if plugin name mapping found, ppos.name updated to its converted name
1375  virtual bool restorePatchbayGroupPosition(bool external, PatchbayPosition& ppos);
1376 
1380  virtual bool connectExternalGraphPort(uint, uint, const char*);
1381  virtual bool disconnectExternalGraphPort(uint, uint, const char*);
1382 #endif
1383 
1384  // -------------------------------------------------------------------
1385 
1386  CARLA_DECLARE_NON_COPY_CLASS(CarlaEngine)
1387 };
1388 
1391 // -----------------------------------------------------------------------
1392 
1393 CARLA_BACKEND_END_NAMESPACE
1394 
1395 #endif // CARLA_ENGINE_HPP_INCLUDED
EngineMidiEvent
Definition: CarlaEngine.hpp:194
kEngineTypePlugin
@ kEngineTypePlugin
Definition: CarlaEngine.hpp:68
kEnginePortTypeNull
@ kEnginePortTypeNull
Definition: CarlaEngine.hpp:88
EngineOptions::bgColor
uint bgColor
Definition: CarlaEngine.hpp:245
EngineOptions
Definition: CarlaEngine.hpp:235
EngineTimeInfoBBT::beatType
float beatType
time signature "denominator"
Definition: CarlaEngine.hpp:317
CarlaEngineClient
Definition: CarlaEngine.hpp:694
CarlaEngineAudioPort::getType
EnginePortType getType() const noexcept final
Definition: CarlaEngine.hpp:451
EngineOptions::binaryDir
const char * binaryDir
Definition: CarlaEngine.hpp:274
EngineTimeInfo::bbt
EngineTimeInfoBBT bbt
Definition: CarlaEngine.hpp:340
EngineOptions::pathMIDI
const char * pathMIDI
Definition: CarlaEngine.hpp:264
EngineProcessMode
EngineProcessMode
Definition: CarlaBackend.h:1499
EngineEvent::time
uint32_t time
Time offset in frames.
Definition: CarlaEngine.hpp:213
CarlaPluginPtr.hpp
EngineOptions::pathSF2
const char * pathSF2
Definition: CarlaEngine.hpp:271
kEnginePortTypeAudio
@ kEnginePortTypeAudio
Definition: CarlaEngine.hpp:94
EngineOptions::uiBridgesTimeout
uint uiBridgesTimeout
Definition: CarlaEngine.hpp:250
FileCallbackOpcode
FileCallbackOpcode
Definition: CarlaBackend.h:1574
EngineTimeInfoBBT::barStartTick
double barStartTick
Definition: CarlaEngine.hpp:314
EngineOptions::pathLADSPA
const char * pathLADSPA
Definition: CarlaEngine.hpp:266
EngineOptions::uiScale
float uiScale
Definition: CarlaEngine.hpp:247
EngineEvent::type
EngineEventType type
Event Type; either Control or MIDI.
Definition: CarlaEngine.hpp:212
CarlaEnginePort::getIndexOffset
uint32_t getIndexOffset() const noexcept
Definition: CarlaEngine.hpp:403
EngineOptions::resourceDir
const char * resourceDir
Definition: CarlaEngine.hpp:275
EngineEvent::midi
EngineMidiEvent midi
Definition: CarlaEngine.hpp:221
EngineOptions::pathSFZ
const char * pathSFZ
Definition: CarlaEngine.hpp:272
CarlaEngine::PatchbayPosition::y2
int y2
Definition: CarlaEngine.hpp:1370
EngineMidiEvent::port
uint8_t port
Port offset (usually 0)
Definition: CarlaEngine.hpp:197
CarlaBackend.h
EngineMidiEvent::size
uint8_t size
Number of bytes used.
Definition: CarlaEngine.hpp:198
CarlaEnginePort::getEngineClient
const CarlaEngineClient & getEngineClient() const noexcept
Definition: CarlaEngine.hpp:411
kEngineControlEventTypeParameter
@ kEngineControlEventTypeParameter
Definition: CarlaEngine.hpp:144
CarlaEnginePort::isInput
bool isInput() const noexcept
Definition: CarlaEngine.hpp:395
CarlaEngine
Definition: CarlaEngine.hpp:806
EngineCallbackOpcode
EngineCallbackOpcode
Definition: CarlaBackend.h:834
EngineTimeInfoBBT::beat
int32_t beat
current beat-within-bar
Definition: CarlaEngine.hpp:312
kEngineTypeRtAudio
@ kEngineTypeRtAudio
Definition: CarlaEngine.hpp:63
EnginePortType
EnginePortType
Definition: CarlaEngine.hpp:84
CarlaEngineCVPort::getType
EnginePortType getType() const noexcept final
Definition: CarlaEngine.hpp:498
EngineType
EngineType
Definition: CarlaEngine.hpp:43
EngineOptions::pathLV2
const char * pathLV2
Definition: CarlaEngine.hpp:268
water
Definition: CarlaEngine.hpp:24
kEngineTypeJack
@ kEngineTypeJack
Definition: CarlaEngine.hpp:53
kEngineTypeJuce
@ kEngineTypeJuce
Definition: CarlaEngine.hpp:58
EngineOptions::preferPluginBridges
bool preferPluginBridges
Definition: CarlaEngine.hpp:242
EngineOptions::clientNamePrefix
const char * clientNamePrefix
Definition: CarlaEngine.hpp:276
EngineDriverDeviceInfo
Definition: CarlaBackend.h:1904
EngineOptions::oscPortTCP
int oscPortTCP
Definition: CarlaEngine.hpp:259
EngineOptions::oscPortUDP
int oscPortUDP
Definition: CarlaEngine.hpp:260
EngineOptions::Wine::autoPrefix
bool autoPrefix
Definition: CarlaEngine.hpp:285
EngineEventType
EngineEventType
Definition: CarlaEngine.hpp:112
EngineTimeInfo::playing
bool playing
Definition: CarlaEngine.hpp:337
EngineOptions::forceStereo
bool forceStereo
Definition: CarlaEngine.hpp:240
kEngineControlEventTypeMidiProgram
@ kEngineControlEventTypeMidiProgram
Definition: CarlaEngine.hpp:154
CarlaEngineCVPort
Definition: CarlaEngine.hpp:481
CarlaEngine::pData
ProtectedData *const pData
Definition: CarlaEngine.hpp:1299
EngineOptions::audioBufferSize
uint audioBufferSize
Definition: CarlaEngine.hpp:251
EngineTimeInfoBBT::ticksPerBeat
double ticksPerBeat
Definition: CarlaEngine.hpp:319
kEngineTypeBridge
@ kEngineTypeBridge
Definition: CarlaEngine.hpp:73
EngineOptions::Wine
Definition: CarlaEngine.hpp:282
EngineOptions::processMode
EngineProcessMode processMode
Definition: CarlaEngine.hpp:236
CarlaEngineCVSourcePorts
Definition: CarlaEngine.hpp:637
EngineOptions::preferUiBridges
bool preferUiBridges
Definition: CarlaEngine.hpp:243
EngineOptions::pathVST2
const char * pathVST2
Definition: CarlaEngine.hpp:269
EngineOptions::Wine::serverRtPrio
int serverRtPrio
Definition: CarlaEngine.hpp:290
EngineControlEvent
Definition: CarlaEngine.hpp:177
EngineOptions::resetXruns
bool resetXruns
Definition: CarlaEngine.hpp:241
FileCallbackFunc
const typedef char *(* FileCallbackFunc)(void *ptr, FileCallbackOpcode action, bool isDir, const char *title, const char *filter)
Definition: CarlaBackend.h:1653
kEngineEventTypeControl
@ kEngineEventTypeControl
Definition: CarlaEngine.hpp:122
EngineOptions::fgColor
uint fgColor
Definition: CarlaEngine.hpp:246
PLUGIN_OPTIONS_NULL
static const uint PLUGIN_OPTIONS_NULL
Definition: CarlaBackend.h:274
CarlaEngineAudioPort
Definition: CarlaEngine.hpp:434
EngineOptions::oscEnabled
bool oscEnabled
Definition: CarlaEngine.hpp:258
kEngineTypeDummy
@ kEngineTypeDummy
Definition: CarlaEngine.hpp:78
EngineOptions::pathDSSI
const char * pathDSSI
Definition: CarlaEngine.hpp:267
EngineTimeInfoBBT::beatsPerMinute
double beatsPerMinute
Definition: CarlaEngine.hpp:320
CarlaEngineEventPort::getType
EnginePortType getType() const noexcept final
Definition: CarlaEngine.hpp:560
kEngineEventTypeMidi
@ kEngineEventTypeMidi
Definition: CarlaEngine.hpp:128
EngineTimeInfo::frame
uint64_t frame
Definition: CarlaEngine.hpp:338
EngineOptions::transportMode
EngineTransportMode transportMode
Definition: CarlaEngine.hpp:237
EngineTimeInfoBBT::beatsPerBar
float beatsPerBar
time signature "numerator"
Definition: CarlaEngine.hpp:316
EngineOptions::Wine::executable
const char * executable
Definition: CarlaEngine.hpp:283
kEngineControlEventTypeMidiBank
@ kEngineControlEventTypeMidiBank
Definition: CarlaEngine.hpp:149
kEnginePortTypeEvent
@ kEnginePortTypeEvent
Definition: CarlaEngine.hpp:106
EngineOptions::Wine::fallbackPrefix
const char * fallbackPrefix
Definition: CarlaEngine.hpp:286
CarlaEngineEventPort
Definition: CarlaEngine.hpp:543
EngineOptions::Wine::rtPrio
bool rtPrio
Definition: CarlaEngine.hpp:288
kEnginePortTypeCV
@ kEnginePortTypeCV
Definition: CarlaEngine.hpp:100
EngineControlEvent::type
EngineControlEventType type
Control-Event type.
Definition: CarlaEngine.hpp:178
EngineEvent::ctrl
EngineControlEvent ctrl
Definition: CarlaEngine.hpp:220
EngineTransportMode
EngineTransportMode
Definition: CarlaBackend.h:1537
CarlaEnginePort
Definition: CarlaEngine.hpp:367
EngineControlEvent::midiValue
int8_t midiValue
Raw midi value, >= 0 if applicable, -1 otherwise.
Definition: CarlaEngine.hpp:180
EngineTimeInfoBBT::bar
int32_t bar
current bar
Definition: CarlaEngine.hpp:311
EngineOptions::maxParameters
uint maxParameters
Definition: CarlaEngine.hpp:249
kEngineControlEventTypeNull
@ kEngineControlEventTypeNull
Definition: CarlaEngine.hpp:138
CarlaEngine::PatchbayPosition
Definition: CarlaEngine.hpp:1370
EngineOptions::transportExtra
const char * transportExtra
Definition: CarlaEngine.hpp:238
EngineTimeInfoBBT::valid
bool valid
Definition: CarlaEngine.hpp:309
EngineOptions::audioTripleBuffer
bool audioTripleBuffer
Definition: CarlaEngine.hpp:253
EngineTimeInfoBBT::tick
double tick
current tick-within-beat
Definition: CarlaEngine.hpp:313
EngineOptions::uisAlwaysOnTop
bool uisAlwaysOnTop
Definition: CarlaEngine.hpp:244
EngineOptions::Wine::baseRtPrio
int baseRtPrio
Definition: CarlaEngine.hpp:289
CarlaPluginPtr
CARLA_BACKEND_START_NAMESPACE typedef std::shared_ptr< CarlaPlugin > CarlaPluginPtr
Definition: CarlaPluginPtr.hpp:267
EngineOptions::audioDevice
const char * audioDevice
Definition: CarlaEngine.hpp:255
EngineOptions::frontendWinId
uintptr_t frontendWinId
Definition: CarlaEngine.hpp:279
EngineOptions::audioDriver
const char * audioDriver
Definition: CarlaEngine.hpp:254
EngineMidiEvent::dataExt
const uint8_t * dataExt
Definition: CarlaEngine.hpp:205
EngineTimeInfo
Definition: CarlaEngine.hpp:336
BinaryType
BinaryType
Definition: CarlaBackend.h:509
kEngineEventTypeNull
@ kEngineEventTypeNull
Definition: CarlaEngine.hpp:116
EngineTimeInfo::usecs
uint64_t usecs
Definition: CarlaEngine.hpp:339
EngineControlEvent::param
uint16_t param
Parameter Id, midi bank or midi program.
Definition: CarlaEngine.hpp:179
EngineOptions::pathAudio
const char * pathAudio
Definition: CarlaEngine.hpp:263
EngineOption
EngineOption
Definition: CarlaBackend.h:1277
CarlaEnginePort::initBuffer
virtual void initBuffer() noexcept=0
kEngineControlEventTypeAllNotesOff
@ kEngineControlEventTypeAllNotesOff
Definition: CarlaEngine.hpp:164
CarlaEngineCVPort::getRange
void getRange(float &min, float &max) const noexcept
Definition: CarlaEngine.hpp:520
kEngineControlEventTypeAllSoundOff
@ kEngineControlEventTypeAllSoundOff
Definition: CarlaEngine.hpp:159
EngineOptions::audioSampleRate
uint audioSampleRate
Definition: CarlaEngine.hpp:252
kEngineEventNonMidiChannel
static const uint8_t kEngineEventNonMidiChannel
Definition: CarlaEngine.hpp:170
EngineOptions::preventBadBehaviour
bool preventBadBehaviour
Definition: CarlaEngine.hpp:278
EngineOptions::pathVST3
const char * pathVST3
Definition: CarlaEngine.hpp:270
PluginType
PluginType
Definition: CarlaBackend.h:573
EngineControlEvent::handled
bool handled
Indicates that event was handled/received at least once.
Definition: CarlaEngine.hpp:182
EngineControlEvent::normalizedValue
float normalizedValue
Parameter value, normalized to 0.0f<->1.0f.
Definition: CarlaEngine.hpp:181
EngineEvent
Definition: CarlaEngine.hpp:211
EngineCallbackFunc
void(* EngineCallbackFunc)(void *ptr, EngineCallbackOpcode action, uint pluginId, int value1, int value2, int value3, float valuef, const char *valueStr)
Definition: CarlaBackend.h:1645
EngineEvent::channel
uint8_t channel
Channel, used for MIDI-related events.
Definition: CarlaEngine.hpp:214
EngineTimeInfoBBT
Definition: CarlaEngine.hpp:308
kEngineTypeNull
@ kEngineTypeNull
Definition: CarlaEngine.hpp:47
EngineControlEventType
EngineControlEventType
Definition: CarlaEngine.hpp:134