35#define TRACKTION_ENGINE_H_INCLUDED
37#if ! JUCE_PROJUCER_LIVE_BUILD
58#if __has_include(<choc/audio/choc_SampleBuffers.h>)
59 #include <choc/audio/choc_SampleBuffers.h>
60 #include <choc/audio/choc_MIDI.h>
61 #include <choc/containers/choc_SingleReaderSingleWriterFIFO.h>
62 #include <choc/containers/choc_NonAllocatingStableSort.h>
64 #include "../3rd_party/choc/audio/choc_SampleBuffers.h"
65 #include "../3rd_party/choc/audio/choc_MIDI.h"
66 #include "../3rd_party/choc/containers/choc_SingleReaderSingleWriterFIFO.h"
67 #include "../3rd_party/choc/containers/choc_NonAllocatingStableSort.h"
70#include "../3rd_party/expected/expected.hpp"
77#ifndef TRACKTION_ENABLE_SINGLETONS
78 #define TRACKTION_ENABLE_SINGLETONS 0
85#ifndef TRACKTION_ENABLE_ARA
86 #define TRACKTION_ENABLE_ARA 0
94#ifndef TRACKTION_ENABLE_CMAJOR
95 #define TRACKTION_ENABLE_CMAJOR 0
101#ifndef TRACKTION_ENABLE_REWIRE
102 #define TRACKTION_ENABLE_REWIRE 0
108#ifndef TRACKTION_ENABLE_AUTOMAP
109 #define TRACKTION_ENABLE_AUTOMAP 0
115#ifndef TRACKTION_ENABLE_VIDEO
116 #define TRACKTION_ENABLE_VIDEO 0
122#ifndef TRACKTION_ENABLE_REX
123 #define TRACKTION_ENABLE_REX 0
129#ifndef TRACKTION_ENABLE_CONTROL_SURFACES
130 #define TRACKTION_ENABLE_CONTROL_SURFACES 0
137#ifndef TRACKTION_ENABLE_CONTROL_SURFACE_MACKIEC4
138 #define TRACKTION_ENABLE_CONTROL_SURFACE_MACKIEC4 0
145#ifndef TRACKTION_ENABLE_TIMESTRETCH_ELASTIQUE
146 #define TRACKTION_ENABLE_TIMESTRETCH_ELASTIQUE 0
154#ifndef TRACKTION_ENABLE_TIMESTRETCH_ELASTIQUE_IPP
155 #define TRACKTION_ENABLE_TIMESTRETCH_ELASTIQUE_IPP TRACKTION_ENABLE_TIMESTRETCH_ELASTIQUE
167#ifndef TRACKTION_ENABLE_TIMESTRETCH_RUBBERBAND
168 #define TRACKTION_ENABLE_TIMESTRETCH_RUBBERBAND 0
183#ifndef TRACKTION_BUILD_RUBBERBAND
184 #define TRACKTION_BUILD_RUBBERBAND 0
190#ifndef TRACKTION_ENABLE_TIMESTRETCH_SOUNDTOUCH
191 #define TRACKTION_ENABLE_TIMESTRETCH_SOUNDTOUCH 0
198#ifndef TRACKTION_ENABLE_ABLETON_LINK
199 #define TRACKTION_ENABLE_ABLETON_LINK 0
205#ifndef TRACKTION_ENABLE_FFMPEG
206 #define TRACKTION_ENABLE_FFMPEG 0
213#ifndef TRACKTION_UNIT_TESTS
214 #define TRACKTION_UNIT_TESTS 0
221#ifndef TRACKTION_BENCHMARKS
222 #define TRACKTION_BENCHMARKS 0
228#ifndef TRACKTION_CHECK_FOR_SLOW_RENDERING
229 #define TRACKTION_CHECK_FOR_SLOW_RENDERING 0
235#ifndef TRACKTION_AIR_WINDOWS
236 #define TRACKTION_AIR_WINDOWS 0
243#ifndef TRACKTION_LOG_DEVICES
244 #define TRACKTION_LOG_DEVICES 1
249#ifndef TRACKTION_LOG_ENABLED
250 #define TRACKTION_LOG_ENABLED 1
253#if TRACKTION_LOG_ENABLED
258 #define TRACKTION_LOG(a) Ase::trkn_tracktion_log_msg (a)
259 #define TRACKTION_LOG_ERROR(a) Ase::trkn_tracktion_log_error (a)
263 #define TRACKTION_LOG(a) {}
264 #define TRACKTION_LOG_ERROR(a) {}
268#define TRACKTION_ASSERT_MESSAGE_THREAD \
269 jassert (juce::MessageManager::getInstance()->currentThreadHasLockedMessageManager());
272namespace tracktion {
inline namespace graph
278#include "../tracktion_core/tracktion_core.h"
282namespace tracktion {
inline namespace engine
284 class EngineBehaviour;
287 class GrooveTemplateManager;
293 struct PluginRenderContext;
298 class WaveInputDevice;
299 class MidiInputDevice;
302 class AutomationTrack;
308 struct TrackInsertPoint;
310 class TrackCompManager;
312 class WarpTimeFactory;
314 class WarpTimeManager;
315 class ControlSurface;
316 struct AudioFileInfo;
319 class AutomatableParameter;
320 class MacroParameterList;
321 class MelodyneFileReader;
322 struct ARADocumentHolder;
325 class CollectionClip;
330 class TransportControl;
332 class ParameterControlMappings;
333 class ParameterChangeHandler;
334 class AutomationRecordManager;
336 class EditPlaybackContext;
337 class EditInputDevices;
338 class InputDeviceInstance;
339 class GrooveTemplate;
340 class MidiOutputDevice;
341 class LevelMeterPlugin;
342 class VolumeAndPanPlugin;
344 class NovationAutomap;
345 class ExternalController;
346 class EditInsertPoint;
347 class AudioFileManager;
353 class MidiControllerParser;
354 class MidiInputDeviceInstanceBase;
355 struct RetrospectiveMidiBuffer;
356 class MidiLearnState;
359 class AudioFileFormatManager;
360 class AutomatableEditItem;
361 class RecordingThumbnailManager;
362 class WaveInputRecordingThread;
363 class ProjectManager;
364 class ExternalAutomatableParameter;
365 class PitchShiftPlugin;
366 struct PluginUnloadInhibitor;
368 struct TimecodeSnapType;
370 class AutomationCurveSource;
372 class MidiTimecodeGenerator;
373 class MidiClockGenerator;
374 class MidiOutputDeviceInstance;
375 class WaveInputDeviceInstance;
376 class WaveOutputDeviceInstance;
377 struct RetrospectiveRecordBuffer;
379 class PropertyStorage;
383 class LaunchQuantisation;
384 class BufferedAudioFileManager;
387#include <trkn/tracktion_decls.hh>
390 #pragma GCC diagnostic push
391 #pragma GCC diagnostic ignored "-Wfloat-equal"
395#include "../tracktion_graph/utilities/tracktion_PerformanceMeasurement.h"
458#include "../tracktion_graph/utilities/tracktion_MidiMessageArray.h"
618 #include "playback/tracktion_ScopedSteadyLoad.h"
627#if TRACKTION_AIR_WINDOWS
628#include "plugins/airwindows/tracktion_AirWindows.h"
657#if TRACKTION_ENABLE_CONTROL_SURFACES
658 #include "control_surfaces/types/tracktion_NovationAutomap.h"
663#if TRACKTION_ENABLE_CONTROL_SURFACES
664 #include "control_surfaces/types/tracktion_AlphaTrack.h"
665 #include "control_surfaces/types/tracktion_MackieC4.h"
666 #include "control_surfaces/types/tracktion_MackieMCU.h"
667 #include "control_surfaces/types/tracktion_MackieXT.h"
668 #include "control_surfaces/types/tracktion_IconProG2.h"
669 #include "control_surfaces/types/tracktion_NovationRemoteSl.h"
670 #include "control_surfaces/types/tracktion_RemoteSLCompact.h"
671 #include "control_surfaces/types/tracktion_Tranzport.h"
677 #pragma GCC diagnostic pop