TracktionEngine
|
Provides custom handlers to control various aspects of the engine's behaviour. More...
#include <tracktion_EngineBehaviour.h>
Classes | |
struct | ClipDefaults |
Determines the default properties of clips. More... | |
struct | ControlSurfaces |
struct | LevelMeterSettings |
Public Member Functions | |
EngineBehaviour ()=default | |
virtual | ~EngineBehaviour ()=default |
virtual Plugin::Ptr | createCustomPlugin (PluginCreationInfo) |
This will be called if the PluginManager doesn't know how to create a Plugin for the given info. | |
virtual void | doAdditionalInitialisation (ExternalPlugin &) |
Gives the host a chance to do any extra configuration after a plugin is loaded. | |
virtual std::unique_ptr< juce::PluginDescription > | findDescriptionForFileOrID (const juce::String &) |
Gives an opportunity to load custom plugins for those that have been registered as custom formats but not added to the list. | |
virtual bool | isPluginDisabled (const juce::String &) |
Should return if the given plugin is disabled or not. | |
virtual void | setPluginDisabled (const juce::String &, bool) |
Should implement a way of saving if plugin is disabled or not. | |
virtual bool | shouldLoadPlugin (ExternalPlugin &) |
Should the plugin be loaded. | |
virtual void | saveCustomPluginProperties (juce::ValueTree &, juce::AudioPluginInstance &, juce::UndoManager *) |
Gives plugins an opportunity to save custom data when the plugin state gets flushed. | |
virtual bool | canScanPluginsOutOfProcess () |
Return true if your application supports scanning plugins out of process. | |
virtual bool | autoInitialiseDeviceManager () |
You may want to disable auto initialisation of the device manager if you are using the engine in a plugin. | |
virtual bool | addSystemAudioIODeviceTypes () |
In plugin builds, you might want to avoid adding the system audio devices and only use the host inputs. | |
virtual bool | shouldOpenAudioInputByDefault () |
If true, then the engine will attempt to open both an audio input and output. | |
virtual bool | isDescriptionOfWaveDevicesSupported () |
If this returns true, you must implement describeWaveDevices to determine the wave devices for a given device. | |
virtual void | describeWaveDevices (std::vector< WaveDeviceDescription > &, juce::AudioIODevice &, bool) |
If isDescriptionOfWaveDevicesSupported returns true, this should be implemented to describe the wave devices for a given audio device. | |
virtual bool | shouldBypassedPluginsBeRemovedFromPlaybackGraph () |
Should return if plugins which have been bypassed should be included in the playback graph. | |
virtual bool | shouldProcessAuxSendWhenTrackIsMuted (AuxSendPlugin &) |
Whether or not to include muted track contents in aux send plugins. | |
virtual bool | enableReadAheadForTimeStretchNodes () |
TEMPORARY: If enabled, real-time time-stretch Nodes will use a larger buffer and background thread to reduce audio CPU use. | |
virtual bool | isMidiDriverUsedForIncommingMessageTiming () |
Should return true if the incoming timestamp for MIDI messages should be used. | |
virtual void | setMidiDriverUsedForIncommingMessageTiming (bool) |
virtual bool | shouldPlayMidiGuideNotes () |
virtual int | getNumberOfCPUsToUseForAudio () |
virtual bool | shouldProcessMutedTracks () |
Should muted tracks processing be disabled to save CPU. | |
virtual bool | muteTrackContentsWhilstRecording () |
Should track contents be audible whilst a recording is in progress. | |
virtual void | setProcessPriority (int) |
0 = normal, 1 = high, 2 = realtime | |
virtual int | getMiddleCOctave () |
virtual void | setMiddleCOctave (int) |
virtual void | editHasBeenSaved (Edit &, juce::File) |
virtual EditLimits | getEditLimits () |
Should return the maximum number of elements that can be added to an Edit. | |
virtual juce::ReferenceCountedObjectPtr< RackType > | createPresetRackType (int, Edit &) |
virtual juce::Array< Exportable::ReferencedItem > | getReferencedItems (ExternalPlugin &) |
If you have any special plugins that access items in the Edit, you need to return them. | |
virtual void | reassignReferencedItem (Clip &, const Exportable::ReferencedItem &, ProjectItemID, double) |
If you have any special plugins that access items in the Edit, you need to reassign them. | |
virtual juce::Array< Exportable::ReferencedItem > | getReferencedItems (Clip &) |
If you have any special clips that access items in the Edit, you need to return them. | |
virtual void | reassignReferencedItem (ExternalPlugin &, const Exportable::ReferencedItem &, ProjectItemID, double) |
If you have any special clips that access items in the Edit, you need to reassign them. | |
virtual bool | areClipSlotsEnabled () |
If this returns false, ClipSlot Clips won't be included in the playback graph and arranger track clips will always be audible. | |
virtual int | getDefaultNoteColour () |
virtual bool | ignoreBWavTimestamps () |
virtual bool | areAudioClipsRemappedWhenTempoChanges () |
virtual void | setAudioClipsRemappedWhenTempoChanges (bool) |
virtual bool | areAutoTempoClipsRemappedWhenTempoChanges () |
virtual void | setAutoTempoClipsRemappedWhenTempoChanges (bool) |
virtual bool | areMidiClipsRemappedWhenTempoChanges () |
virtual void | setMidiClipsRemappedWhenTempoChanges (bool) |
virtual bool | arePluginsRemappedWhenTempoChanges () |
virtual void | setPluginsRemappedWhenTempoChanges (bool) |
virtual bool | lengthOfOneBeatDependsOnTimeSignature () |
If this returns true, it means that the length (in seconds) of one "beat" at any point in an edit is considered to be the length of one division in the current bar's time signature. | |
virtual juce::MidiMessageSequence | createPlaybackMidiSequence (const MidiList &list, MidiClip &clip, MidiList::TimeBase tb, bool generateMPE) |
Called by the MidiList to create a MidiMessageSequence for playback. | |
virtual int | getDefaultLoopedSequenceType () |
Must return the default looped sequence type to use. | |
virtual bool | autoAddClipEdgeFades () |
If this returns true, it means that newly inserted clips will automatically have a fade-in and fade-out of 3ms applied. | |
virtual bool | interpolateAutomation () |
Interpolate automation at 10ms intervals (faster) or calculate actual value (slower) | |
virtual LevelMeterSettings | getLevelMeterSettings () |
virtual void | setLevelMeterSettings (LevelMeterSettings) |
virtual ClipDefaults | getClipDefaults () |
Returns the defaults to be applied to new clips. | |
virtual void | newClipAdded (Clip &, bool fromRecording) |
Allows a new clip to be customised. | |
virtual ControlSurfaces | getDesiredControlSurfaces () |
Return the control surfaces you want enabled in the engine. | |
virtual ControlSurface * | getCustomControlSurfaceForXML (ExternalControllerManager &, const juce::XmlElement &) |
Restore a custom control surface from custom XML. | |
virtual bool | enableExperimentalAutomation () |
Provides custom handlers to control various aspects of the engine's behaviour.
Create a subclass of EngineBehaviour to customise how the engine operates
|
default |
|
virtualdefault |
|
virtual |
This will be called if the PluginManager doesn't know how to create a Plugin for the given info.
|
virtual |
Gives the host a chance to do any extra configuration after a plugin is loaded.
|
virtual |
Gives an opportunity to load custom plugins for those that have been registered as custom formats but not added to the list.
|
virtual |
Should return if the given plugin is disabled or not.
ExternalPlugins will use this to determine if they should load themselves or not. This can be called often so should be quick to execute.
|
virtual |
Should implement a way of saving if plugin is disabled or not.
N.B. only in use for ExternalPlugins at the moment.
|
virtual |
Should the plugin be loaded.
Normally plugins aren't loaded when Edit is for exporting or examining. Override this if you always need a plugin loaded
|
virtual |
Gives plugins an opportunity to save custom data when the plugin state gets flushed.
|
virtual |
Return true if your application supports scanning plugins out of process.
If you want to support scanning out of process, the allowing should be added to your JUCEApplication::initialise() function:
void initialise (const juce::String& commandLine) override { if (PluginManager::startChildProcessPluginScan (commandLine)) return;
...continue as normal
|
virtual |
You may want to disable auto initialisation of the device manager if you are using the engine in a plugin.
|
virtual |
In plugin builds, you might want to avoid adding the system audio devices and only use the host inputs.
|
virtual |
If true, then the engine will attempt to open both an audio input and output.
If false, it'll only open an output device. (This won't prevent your app opening an input device later if you allow the user to do that)
|
virtual |
If this returns true, you must implement describeWaveDevices to determine the wave devices for a given device.
If it's false, a standard, stereo pair layout will be automatically generated.
|
virtual |
If isDescriptionOfWaveDevicesSupported returns true, this should be implemented to describe the wave devices for a given audio device.
|
virtual |
Should return if plugins which have been bypassed should be included in the playback graph.
By default this is false and bypassed plugins will still call processBypassed and introduce the same latency as if they weren't. But by returning false here, you can opt to remove them from the playback graph entirely which means they won't introduce latency which can be useful for tracking.
|
virtual |
Whether or not to include muted track contents in aux send plugins.
Returning true here enables you to still listen to return busses when send tracks are muted or other tracks are soloed.
|
virtual |
TEMPORARY: If enabled, real-time time-stretch Nodes will use a larger buffer and background thread to reduce audio CPU use.
|
virtual |
Should return true if the incoming timestamp for MIDI messages should be used.
If this returns false, the current system time will be used (which could be less accurate). N.B. this is called from multiple threads, including the MIDI thread for every incoming message so should be thread safe and quick to return.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Should muted tracks processing be disabled to save CPU.
Referenced by tracktion::engine::AudioTrack::processAudioNodesWhileMuted().
|
virtual |
Should track contents be audible whilst a recording is in progress.
|
virtual |
0 = normal, 1 = high, 2 = realtime
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Should return the maximum number of elements that can be added to an Edit.
|
virtual |
|
virtual |
If you have any special plugins that access items in the Edit, you need to return them.
|
virtual |
If you have any special plugins that access items in the Edit, you need to reassign them.
|
virtual |
If you have any special clips that access items in the Edit, you need to return them.
|
virtual |
If you have any special clips that access items in the Edit, you need to reassign them.
|
virtual |
If this returns false, ClipSlot Clips won't be included in the playback graph and arranger track clips will always be audible.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
If this returns true, it means that the length (in seconds) of one "beat" at any point in an edit is considered to be the length of one division in the current bar's time signature.
So for example at 120BPM, in a bar of 4/4, one beat would be the length of a quarter-note (0.5s), but in a bar of 4/8, one beat would be the length of an eighth-note (0.25s)
If false, then the length of one beat always depends only the current BPM at that point in the edit, so where the BPM = 120, one beat is always 0.5s, regardless of the time-sig.
You shouldn't dynamically change this function's return value - just implement a function that always returns true or false.
|
virtual |
Called by the MidiList to create a MidiMessageSequence for playback.
You can override this to add your own messages but should generally follow the procedure in MidiList::createDefaultPlaybackMidiSequence.
References tracktion::engine::MidiList::createDefaultPlaybackMidiSequence().
|
virtual |
Must return the default looped sequence type to use.
Current options are: 0: loopRangeDefinesAllRepetitions - The looped sequence is the same for all repetitions including the first. 1: loopRangeDefinesSubsequentRepetitions - The first section is the whole sequence, subsequent repitions are determined by the loop range.
|
virtual |
If this returns true, it means that newly inserted clips will automatically have a fade-in and fade-out of 3ms applied.
|
virtual |
Interpolate automation at 10ms intervals (faster) or calculate actual value (slower)
|
virtual |
|
virtual |
|
virtual |
Returns the defaults to be applied to new clips.
|
virtual |
Allows a new clip to be customised.
|
virtual |
Return the control surfaces you want enabled in the engine.
|
virtual |
Restore a custom control surface from custom XML.
|
virtual |