TracktionEngine
Loading...
Searching...
No Matches
Namespaces | Classes | Concepts | Typedefs | Enumerations | Functions | Variables

Namespaces

namespace  AppFunctions
 
namespace  benchmark_utilities
 
namespace  Click
 
namespace  ClipConstants
 Constraints for clip speeds.
 
namespace  dawproject
 DAWproject interchange format support.
 
namespace  detail
 
namespace  details
 
namespace  IDs
 
namespace  legacy
 
namespace  MidiNodeHelpers
 
namespace  modifier
 
namespace  ModifierCommon
 
namespace  PredefinedWavetable
 
namespace  ProjectUtilities
 Utilities for consolidating Projects and Edits.
 
namespace  RackNodeBuilder
 
namespace  render_utils
 
namespace  TracktionBinaryData
 

Classes

class  AbletonLink
 Manages an Ableton Link session connecting an Edit with a number of networked peers, syncronising their tempos, bar phases and start/stop statuses. More...
 
struct  ActiveEdits
 A list of all currently open edits. More...
 
struct  ActiveNoteList
 
class  AirWindowsAutomatableParameter
 
class  AirWindowsBase
 
class  AirWindowsCallback
 
class  AirWindowsPlugin
 
class  AlphaTrackControlSurface
 
struct  ARADocumentHolder
 
class  ARAFileReader
 Manages an ARA plugin instance for an audio clip. More...
 
struct  ARAIXMLResult
 Result of detecting ARA iXML chunks in an audio file. More...
 
class  ARANode
 Node for playing back audio through an ARA plugin. More...
 
class  ARAPluginBinding
 RAII wrapper for an ARA document-controller binding created by ARADocumentHolder::bindPluginToDocument, owned by the bound ExternalPlugin (see ExternalPlugin::setARADocumentBinding). More...
 
class  ArchiveJob
 Job that archives a Project or single Edit into a standard zip file. More...
 
class  ArrangerClip
 
class  ArrangerLauncherSwitchingNode
 A Node that switches between two of its inputs based on a flag. More...
 
class  ArrangerTrack
 A track similar to the MarkerTrack but can be used to move sections of an Edit around. More...
 
struct  AsyncCaller
 Asyncronously call a function. More...
 
struct  AsyncFunctionCaller
 Holds a list of function objects and enables you to call them asyncronously. More...
 
struct  AtomicWrapper
 Wraps an atomic with an interface compatible with var so it can be used within CachedValues in a thread safe way. More...
 
struct  AudioAnalysisOptions
 Options for the standard analyseAudioFile() convenience overload. More...
 
class  AudioBufferSnapshot
 
class  AudioClipBase
 Base class for Clips that produce some kind of audio e.g. More...
 
struct  AudioClipPlayhead
 Holds a playhead for an AudioClipBase. More...
 
struct  AudioFadeCurve
 
class  AudioFifo
 A single-producer, single-consumer fifo of audio samples. More...
 
class  AudioFile
 
class  AudioFileAnalyser
 Interface for a streaming audio-file analyser. More...
 
class  AudioFileCache
 
class  AudioFileFormatManager
 Keeps a list of available wave formats and can create a format object for a file. More...
 
struct  AudioFileInfo
 
class  AudioFileManager
 
struct  AudioFileUtils
 
class  AudioFileWriter
 Smart wrapper for writing to an audio file. More...
 
struct  AudioFormatReaderWithTimeout
 
class  AudioMidiFifo
 
class  AudioProxyGenerator
 
class  AudioScratchBuffer
 An audio scratch buffer that has pooled storage. More...
 
class  AudioSegmentList
 Holds a list of audio regions for playback of things like warp time. More...
 
class  AudioTrack
 
class  AutomatableEditItem
 Base class for elements that have some kind of automatable parameters. More...
 
class  AutomatableParameter
 
struct  AutomatableParameterID
 Contains the ID of an AutomatableEditItem and the paramID. More...
 
class  AutomatableParameterTree
 
class  AutomationCurve
 
class  AutomationCurveList
 Manages a list of AutomationCurveModifiers which can be used to control the values and modifiers of AutomatableParameters. More...
 
class  AutomationCurveModifier
 An AutomationCurveModifier contains three curves to control automation: absolute, relative and scale. More...
 
struct  AutomationCurvePlayhead
 Holds a playhead for an AutomationCurveModifier type. More...
 
class  AutomationDragDropTarget
 Components can implement this to let things know which automatable parameter they control. More...
 
struct  AutomationIterator
 A cache of automation points, with a cursor which moves through it. More...
 
class  AutomationRecordManager
 Stores automation data as it's being read in, and writes it back to the edit when recording finishes. More...
 
class  AutomationTrack
 
class  AuxReturnPlugin
 
class  AuxSendNode
 Node for an aux send. More...
 
class  AuxSendPlugin
 
class  BackgroundJobManager
 Manages a set of background tasks that can be run concurrently on a background thread. More...
 
class  BandlimitedWaveLookupTables
 
struct  BaseAndModValue
 Contains the base and modifier values if they are active. More...
 
struct  BeatDetect
 
struct  BlockingFunction
 
class  BreakpointOscillatorModifier
 
class  BufferedAudioFileManager
 
class  BufferedAudioReader
 
class  BufferedFileReader
 
class  BufferedFileReaderWrapper
 
class  BufferingAudioReaderWrapper
 AudioFormatReaderWithTimeout that wraps a BufferingAudioReader to avoid reading on the audio thread. More...
 
class  ChannelMapperPlugin
 A plugin that applies an explicit channel mapping. More...
 
class  Chord
 
class  ChordClip
 
class  ChordTrack
 
class  ChorusPlugin
 
class  ClickGenerator
 Generates click audio and MIDI and adds them to the provided buffer. More...
 
class  ClickNode
 Adds audio and MIDI clicks to the input buffers. More...
 
class  Clip
 A clip in an edit. More...
 
class  Clipboard
 
class  ClipEffect
 
class  ClipEffects
 
struct  ClipLevel
 Holds a clip's level state. More...
 
class  ClipOwner
 Base class for items that can contain clips. More...
 
struct  ClipPosition
 Represents the position of a clip on a timeline. More...
 
struct  ClipPositionBeats
 Represents the position of a clip on a timeline. More...
 
struct  ClipPositionInfo
 Holds information about the position of a clip. More...
 
class  ClipSlot
 Represents a slot on a track that a Clip can live in to be played as a launched clip. More...
 
class  ClipSlotList
 A list of the ClipSlots on a Track. More...
 
class  ClipTrack
 
class  CollectionClip
 
struct  ColourArea
 An area of the edit currently control by a control surface. More...
 
class  CombiningNode
 An Node that mixes a sequence of clips of other nodes. More...
 
class  CompFactory
 
class  CompManager
 
class  CompressorPlugin
 
class  ConstrainedCachedValue
 A CachedValue that can take a std::function to constrain its value. More...
 
class  ContainerClip
 A clip that can contain multiple other clips and mix their output together. More...
 
class  ContainerClipNode
 
class  ControlSurface
 Base class for types of control surface. More...
 
struct  CrashStackTracer
 Used by the CRASH_TRACER macros to help provide a useful crash log of the stack. More...
 
struct  CreateNodeParams
 Contains options for Edit Node content creation. More...
 
class  CurveEditor
 
class  CurveEditorPoint
 
struct  CurvePoint
 
struct  CurvePosition
 A position of a curve in an Edit. More...
 
class  CustomControlSurface
 
struct  DbTimePair
 
struct  DeadMansPedalMessage
 This RAII class saves a property which will be reported at startup as a failure if the app disappears before its destructor is called. More...
 
struct  DelayBufferBase
 
class  DelayPlugin
 
class  DeviceManager
 
struct  DiscreteLabelledParameter
 
struct  Ditherer
 An extremely naive ditherer. More...
 
struct  DummyConstrainer
 Dummy constrainer which should optimise away to nothing. More...
 
class  DynamicallyOffsettableNodeBase
 
class  DynamicOffsetNode
 
class  Edit
 The Tracktion Edit class! More...
 
class  EditClip
 This is the main source of an Edit clip and is responsible for managing its properties. More...
 
struct  EditDefaults
 Defaults applied to newly created Edits. More...
 
struct  EditDeleter
 Deferred Edit object deleter. More...
 
class  EditFileOperations
 Contains methods for saving an Edit to a file. More...
 
class  EditInputDevices
 
class  EditInsertPoint
 An EditInsertPoint is like a "paste location". More...
 
class  EditItem
 Base class for objects that live inside an edit - e.g. More...
 
struct  EditItemCache
 
struct  EditItemID
 ID for objects of type EditElement - e.g. More...
 
struct  EditLimits
 Contains the limits of the various elements that can be added to an Edit. More...
 
class  EditLoader
 Some useful utility functions for asyncronously loading Edits on background threads. More...
 
struct  EditNodeBuilder
 
class  EditPlaybackContext
 
struct  EditPosition
 Represents a time point in an Edit stored as either time or beats. More...
 
class  EditPositionWithTempoSequence
 
class  EditRenderer
 Some useful utility functions for asyncronously rendering Edits on background threads. More...
 
class  EditRenderJob
 
class  EditSnapshot
 Holds a snapshot of an Edit file of the last time it was saved. More...
 
struct  EditTimecodeRemapperSnapshot
 Takes a copy of all the beat related things in an edit in terms of bars/beats and then remaps these after a tempo change. More...
 
struct  EditTimeRange
 Represents a time range in an Edit stored as either time or beats. More...
 
class  Engine
 The Engine is the central class for all tracktion sessions. More...
 
class  EngineBehaviour
 Provides custom handlers to control various aspects of the engine's behaviour. More...
 
class  EnvelopeFollowerModifier
 
class  EqualiserPlugin
 
class  ExpEnvelope
 
class  Exportable
 An interface for objects within an edit that can be exported. More...
 
class  ExternalAutomatableParameter
 
class  ExternalController
 Acts as a holder for a ControlSurface object. More...
 
class  ExternalControllerManager
 Keeps a list of external controllers and keeps them connected to the right MIDI in/out devices. More...
 
class  ExternalPlayheadSynchroniser
 An ExternalPlayheadSynchroniser is used to synchronise the internal Edit's playhead with an AudioProcessor, for use in plugins. More...
 
class  ExternalPlugin
 Wraps a juce::AudioPluginInstance (VST2, VST3, AU, etc.) as a tracktion Plugin. More...
 
struct  FadeInOutEffect
 
class  FadeInOutNode
 A Node that fades in and out given time regions. More...
 
class  FileBasedProject
 Contains the implementation logic for a file-based (.tracktion) project. More...
 
struct  FileDragList
 
class  FloatAudioFormat
 A raw, proprietary, simple floating point format used for freeze files, etc. More...
 
class  FolderBasedProject
 A project backend that represents a folder on disk. More...
 
class  FolderTrack
 
class  FollowActions
 
class  FourOscPlugin
 
class  FreezePointPlugin
 
class  GrooveTemplate
 
class  GrooveTemplateManager
 Looks after the list of groove templates. More...
 
struct  HertzTag
 
class  HostedAudioDeviceInterface
 The HostedAudioDeviceInterface allows an application or plugin to pass audio and midi buffers to the engine, rather than the engine directly opening the audio devices. More...
 
class  HostedMidiInputDeviceNode
 A Node that intercepts MIDI from a plugin callback and inserts it in to the playback graph. More...
 
class  IconProG2
 
class  ImpulseResponsePlugin
 ImpulseResponsePlugin that loads an impulse response and applies it the audio stream. More...
 
class  InputDevice
 Represents an input device. More...
 
class  InputDeviceInstance
 An instance of an InputDevice that's available to an Edit. More...
 
struct  InputProvider
 
class  InsertNode
 
class  InsertPlugin
 
class  InsertSendNode
 The send node picks up audio/MIDI data from the InsertPlugin and then its output will be sent to the corresponding OutputDevice. More...
 
struct  InvertEffect
 
struct  KeyResult
 
class  LambdaSelectableListener
 A SelectableListener that safely handles listener to a Selectable and uses a lambda for its callback. More...
 
class  LambdaTimer
 
class  LambdaValueTreeAllEventListener
 
class  LAMEManager
 Manages the LAME location property and an AudioFormat if the LAME encoder is provided. More...
 
class  LatencyPlugin
 A test plugin that introduces latency to the incoming signal. More...
 
class  LauncherClipPlaybackHandle
 
class  LaunchHandle
 A handle used to control the launching of a clip. More...
 
class  LaunchQuantisation
 Represents a launch quantisation. More...
 
class  LevelMeasurer
 Monitors the levels of buffers that are passed in, and keeps peak values, overloads, etc., for display in a level meter component. More...
 
class  LevelMeasurerProcessingNode
 A Node that introduces latency to balance the latency at the root Node and its position in the graph. More...
 
class  LevelMeasuringNode
 A Node that passes its incoming audio and MIDI through a LevelMeasurer. More...
 
class  LevelMeterPlugin
 
class  LFOModifier
 
class  LinEnvelope
 
struct  LiveClipLevel
 Provides a thread-safe way to share a clip's levels with an audio engine without worrying about the Clip being deleted from underneath you. More...
 
class  LiveMidiInjectingNode
 A Node that injects MIDI message in to the stream, for keyboard key entry, note previews and MIDI step entry etc. More...
 
class  LiveMidiOutputNode
 A Node that calls the listeners of an AudioTrack with any incoming MIDI. More...
 
class  LoopInfo
 Holds tempo/beat information about an audio file. More...
 
class  LoopingMidiNode
 A Node that plays MIDI data from a MidiMessageSequence, at a specific MIDI channel. More...
 
class  LoudnessMeter
 A real-time-safe EBU R128 / ITU-R BS.1770-4 loudness meter. More...
 
class  LowPassPlugin
 
class  MackieC4
 
class  MackieMCU
 
class  MackieXT
 
class  MacroParameter
 A MacroParameter is an AutomatableParameter which is a collection of Mappings. More...
 
class  MacroParameterElement
 Base class for elements which can contain macro parameters. More...
 
class  MacroParameterList
 
struct  MakeMonoEffect
 
class  MarkerClip
 
class  MarkerManager
 
struct  MarkerSetting
 
class  MarkerTrack
 
class  MasterTrack
 A track to represent the master plugins. More...
 
struct  MemoryMappedFileReader
 AudioFormatReaderWithTimeout that wraps a MemoryMappedFile which usually improves read speeds. More...
 
class  MessageThreadCallback
 Calls a function on the message thread checking a calling thread for an exit signal. More...
 
class  MidiAssignable
 Base class for things that can be assigned to external control surfaces, not plugin paramters. More...
 
struct  MidiChannel
 Represents a MIDI channel 1-16, and also contains extra ID bits to encode info about the event's origin. More...
 
class  MidiClip
 
class  MidiCompManager
 
class  MidiControllerEvent
 
struct  MidiExpression
 
struct  MidiID
 
class  MidiInputDevice
 
class  MidiInputDeviceNode
 A Node that intercepts incoming live MIDI and inserts it in to the playback graph. More...
 
class  MidiLearnState
 Manages the Midi learn state and Listener interface to notify subclasses when the state changes. More...
 
class  MidiList
 
struct  MidiMessageArray
 
struct  MidiMessageWithSource
 
class  MidiModifierPlugin
 
class  MidiNode
 A Node that plays MIDI data from a MidiMessageSequence, at a specific MIDI channel. More...
 
class  MidiNote
 
class  MidiNoteDispatcher
 
class  MidiOutputDevice
 
class  MidiOutputDeviceInstance
 
class  MidiOutputDeviceInstanceInjectingNode
 A Node that injects the MIDI buffer of its input to the MidiOutputDevice. More...
 
class  MidiPatchBayPlugin
 
class  MidiProgramManager
 
class  MidiSysexEvent
 
class  MIDITrackerModifier
 
struct  MinBeatConstrainer
 
struct  Modifier
 Bass class for parameter Modifiers. More...
 
class  ModifierList
 Holds a list of Modifiers that have been added to a Track. More...
 
class  ModifierNode
 Node for processing a Modifier. More...
 
struct  ModifierTimer
 Base class for objects which need to know about the global Edit time every block. More...
 
struct  MonotonicBeat
 
struct  MonotonicBeatRange
 
class  MouseHoverDetector
 
struct  MPEStartTrimmer
 If you need to play back MPE data from a point after the data starts, it's important to reconstruct the expression values immediately preceding the last note-on, then the note on, then the last expression values before the trim point. More...
 
class  MultiThreadedNodePlayer
 Plays back a Node with PlayHeadState and ProcessState. More...
 
class  MultiVoiceOscillator
 
class  NodeRenderContext
 Holds the state of an audio render procedure so it can be rendered in blocks. More...
 
struct  NormaliseEffect
 
class  NovationRemoteSl
 
struct  OldEditConversion
 Logic for reading legacy tracktion edit files. More...
 
class  Oscillator
 
class  OutputDevice
 Base class for audio or midi output devices, to which a track's output can be sent. More...
 
class  OutputDeviceInstance
 
class  ParameterChangeHandler
 Manages a set of AutomatableParameters for an Edit and notifies controllers and registered listeners when they change. More...
 
class  ParameterControlMappings
 Controls the set of midi-controller-to-parameter mappings. More...
 
class  ParameterisableDragDropSource
 
struct  ParameterSetting
 
struct  ParameterWithStateValue
 A helper class that creates an AutomatableParameter and links it to a CachedValue, to make it easier to create and manage parameters whose values are stored as a property in a plugin's ValueTree state. More...
 
class  PatchBayPlugin
 
class  PatternGenerator
 
class  PhaserPlugin
 
class  PhysicalMidiInputDevice
 
struct  Pitch
 
class  PitchSequence
 
class  PitchSetting
 
struct  PitchShiftEffect
 
class  PitchShiftPlugin
 
struct  PlannedRenderJob
 A concrete render job created from a RenderSpecification. More...
 
class  PlayHeadPositionNode
 A Node that calculates a position to show visually what time is currently being processed by the graph based on its internal latency. More...
 
class  Plugin
 Base class for all audio plugins in the Tracktion Engine. More...
 
class  PluginCache
 
struct  PluginComponent
 Components that represent a Plugin should inherit from this to ensure they are correctly notified when their colour changes e.g. More...
 
struct  PluginCreationInfo
 Holds the information needed to construct a Plugin: the owning Edit, the ValueTree that stores the plugin's persistent state, and whether this is a brand-new insertion vs. More...
 
struct  PluginEffect
 
struct  PluginInitialisationInfo
 Passed into Plugins when they are being initialised, to give them useful contextual information that they may need. More...
 
class  PluginList
 Holds a sequence of plugins. More...
 
class  PluginManager
 
class  PluginNode
 Node for processing a plugin. More...
 
struct  PluginRenderContext
 The context passed to plugin render methods to provide it with buffers to fill. More...
 
struct  PluginScanHelpers
 
struct  PluginWetDryAutomatableParam
 Specialised AutomatableParameter for wet/dry. More...
 
struct  PluginWindowState
 
struct  ProcessState
 Holds the state of a process call. More...
 
class  Project
 A tracktion project. More...
 
class  ProjectBase
 Abstract base class for project backends. More...
 
class  ProjectID
 A strongly-typed wrapper for a project's numeric ID. More...
 
class  ProjectItem
 Represents a file-based resource that is used in a project. More...
 
class  ProjectItemID
 An ID representing one of the items in a Project. More...
 
class  ProjectItemRef
 A lightweight reference that can hold either a ProjectItemID or a file path. More...
 
class  ProjectManager
 Manages the master list of projects known to the engine. More...
 
class  PropertyStorage
 Create a subclass of PropertyStorage to customize how settings are saved and recalled. More...
 
class  QuantisationType
 
struct  RackConnection
 
class  RackInstance
 
class  RackInstanceNode
 Sends an input Node to a Rack bus handling the channel mapping and channel gain levels. More...
 
class  RackNodePlayer
 Simple processor for a Node which uses an InputProvider to pass input in to the graph. More...
 
class  RackReturnNode
 Sends an input Node to a Rack bus handling the channel mapping and channel gain levels. More...
 
class  RackType
 
class  RackTypeList
 
struct  Ramp
 A ramp which goes between 0 and 1 over a set duration. More...
 
class  RandomModifier
 
class  ReadAheadTimeStretcher
 Wraps a TimeStretcher but keeps a larger internal input and output buffer and uses a background thread to try and process frames, reducing CPU cost on real-time threads. More...
 
class  RecordingThumbnailManager
 Holds a pool of Thumbnails that are populated whilst recording. More...
 
class  ReferenceCountedValueTree
 Holds a ValueTree as a ReferenceCountedObject. More...
 
class  ReferencedMaterialList
 A list of all the source files needed by an edit (or a section of an edit). More...
 
class  RemoteSLCompact
 
class  Renderer
 Lowest level render operation. More...
 
class  RenderManager
 Manages a set of reference counted render jobs and can be used to retrieve matching jobs or create new ones. More...
 
class  RenderOptions
 Represents a set of user properties used to control a render operation, using a ValueTree to hold them so that they can be saved and reloaded. More...
 
class  RenderQueue
 Runs a list of render jobs strictly one at a time, in order. More...
 
struct  RenderSpecification
 A plain-data description of a single render operation: one output file. More...
 
class  ReverbPlugin
 
struct  ReverseEffect
 
class  ReverseRenderJob
 
class  SafeScopedListener
 Manages adding and removing listeners in an RAII way so you don't forget to unregister a listener. More...
 
class  SafeSelectable
 Holds a pointer to some type of Selectable, which automatically becomes null if the selectable is deleted. More...
 
class  SampleFader
 
class  SamplerPlugin
 
class  Scale
 
class  Scene
 A Scene is a collection of ClipSlots across tracks. More...
 
class  SceneList
 Represents the Scenes in an Edit. More...
 
class  SceneWatcher
 Notifies UI components of changes to the scenes and clips. More...
 
struct  ScopedCpuMeter
 
struct  ScopedDirectoryDeleter
 
class  ScopedListener
 Manages adding and removing listeners in an RAII way so you don't forget to unregister a listener. More...
 
struct  ScopedPluginUnloadInhibitor
 
class  ScopedSteadyLoad
 
struct  ScopedThreadExitStatusEnabler
 Enables the calling thread to be cancelled from another thread and the calling thread to be able to query this. More...
 
class  ScopedTrackMuter
 Mutes a set of tracks for its lifetime, restoring their previous mute states on destruction. More...
 
class  ScopedWaitCursor
 Shows and hides the mouse wait cursor where appropriate. More...
 
struct  ScreenSaverDefeater
 As long as at least one of these objects exists, the screensaver will be disabled. More...
 
class  Selectable
 Base class for things that can be selected, and whose properties can appear in the properties panel. More...
 
class  SelectableClass
 Represents a type of object that can be selected. More...
 
class  SelectableClassWithPan
 
class  SelectableClassWithVolume
 
struct  SelectableList
 A list of Selectables, similar to a juce::Array but contains a cached list of the SelectableClasses for each entry. More...
 
class  SelectableListener
 
class  SelectedMidiEvents
 Represents a set of selected MIDI notes. More...
 
class  SelectionManager
 Manages a list of items that are currently selected. More...
 
class  SharedLevelMeasurer
 A shared level measurer that can be used by several threads to provide a total output level. More...
 
class  SharedLevelMeasuringNode
 Applies a SharedLevelMeter to the audio passing through this node. More...
 
class  SharedTimer
 
class  SimpleLFO
 
class  SlotControlNode
 
class  SmartThumbnail
 SmartThumnail automatically tracks changes to an AudioFile and will update its cache if the file changes. More...
 
class  SoftwareMidiOutputDevice
 Create a software midi port on macOS. More...
 
struct  SortedValueTreeObjectList
 
class  SourceFileReference
 This class wraps a string that is generally held in a 'source' property, and which is a reference to some sort of file, either in the form of a local filename or as a project ID that can be resolved. More...
 
struct  SpeedFadeDescription
 Describes the time and type of the speed fade in/outs. More...
 
class  SpeedRampWaveNode
 An Node that plays back a wave file. More...
 
struct  Spline
 An interpolated spline curve, used by the EQ to draw its response graph. More...
 
class  StepClip
 
class  StepModifier
 
struct  StepVolumeEffect
 
class  StereoFieldAnalyser
 A real-time-safe stereo field analyser: phase correlation, stereo balance and stereo width, over a short sliding window and over the whole measurement. More...
 
struct  StopwatchTimer
 
struct  SuffixedParameter
 
struct  SyncPoint
 Holds a reference sample position and the Edit time and beat that it corresponds to. More...
 
struct  SyncRange
 
class  TempoDetect
 Uses the SoundTouch BPMDetect class to guess the tempo of some audio. More...
 
class  TemporaryFileManager
 Holds info about where temp files should go, and tidies up old ones when needed. More...
 
class  TempoSequence
 Holds a list of TempoSetting objects, to form a sequence of tempo changes. More...
 
class  TempoSetting
 A tempo value, as used in a TempoSequence. More...
 
class  TempoTrack
 A track to represent the "global" items such as tempo, key changes etc. More...
 
class  TextPlugin
 
class  ThreadPoolJobWithProgress
 
struct  TimecodeDisplayFormat
 A timecode display mode, e.g. More...
 
struct  TimecodeDisplayIterator
 Iterates along a timeline for drawing things like the ticks on the timebar. More...
 
class  TimecodeDuration
 Stores a duration in both beats and seconds. More...
 
struct  TimecodeSnapType
 A snap mode, e.g. More...
 
class  TimedMutingNode
 A Node that mutes its input at specific time ranges. More...
 
class  TimeSigSetting
 
class  TimeStretcher
 Handles time/pitch stretching using various supported libraries. More...
 
class  TimeStretchingWaveNode
 Node that reads from a file node and timestretches its output. More...
 
class  ToneGeneratorPlugin
 
class  Track
 Base class for tracks which contain clips and plugins and can be added to Edit[s]. More...
 
struct  TrackAutomationSection
 Holds a reference to a section of automation for a given Track. More...
 
class  TrackCompManager
 
struct  TrackInsertPoint
 Defines the place to insert Track[s]. More...
 
class  TrackItem
 Base class for EditItems that live in a Track, e.g. More...
 
struct  TrackList
 An iterable list of Track[s] that live either in an Edit or as subtracks of a Track. More...
 
class  TrackMidiInputDeviceNode
 A Node that takes MIDI from the output of a track and sends it to its corresponding InputDevice. More...
 
class  TrackMuteState
 Holds the state of a Track and if its contents/plugins should be played or not. More...
 
class  TrackMutingNode
 A Node that handles muting/soloing of its input node, according to the audibility of a track. More...
 
class  TrackOutput
 Represents the destination output device(s) for a track. More...
 
struct  TrackSection
 Defines a time raneg sectin of a Track. More...
 
class  TracktionEngineNode
 Base class for Nodes that provides information about the current process call. More...
 
class  TracktionNodePlayer
 Plays back a Node with PlayHeadState and ProcessState. More...
 
class  TrackWaveInputDeviceNode
 A Node that takes audio from the output of a track and sends it to its corresponding InputDevice. More...
 
struct  TransparentToMouseInTrackItemComp
 
class  TransportControl
 Controls the transport of an Edit's playback. More...
 
class  TranzportControlSurface
 
class  UIBehaviour
 Create a subclass of UIBehaviour to custom UI elements created by the engine. More...
 
class  ValueSmoother
 Smooths a value between 0 and 1 at a constant rate. More...
 
struct  ValueTreeAllEventListener
 
struct  ValueTreeComparator
 
class  ValueTreeObjectList
 
class  ValueTreePropertyChangedListener
 
class  VCAPlugin
 The VCA plugin sits on a folder track to control the overall level of all the volume/pan plugins in its child tracks. More...
 
class  VirtualMidiInputDevice
 
class  VolumeAndPanPlugin
 The built-in Tracktion volume/pan plugin. More...
 
struct  VolumeEffect
 
class  VSTXML
 
struct  WarpMarker
 A WarpMarker is a point that maps from a linear "source" time to a "warped" time. More...
 
struct  WarpPoint
 
struct  WarpTimeEffect
 
class  WarpTimeFactory
 A WarpTimeFactory manages WarpTimeManagers for Clips living in an Edit. More...
 
class  WarpTimeManager
 A WarpTimeManager contains a list of WarpMarkers and some source material and maps times from a linear "view" time to a "wapred" source time. More...
 
class  WarpTimeRenderJob
 
class  WaveAudioClip
 An audio clip that uses an audio file as its source. More...
 
class  WaveCompManager
 
struct  WaveDeviceDescription
 Describes a group of audio channels from a physical device, which are to be treated as a WaveInputDevice or WaveOutputDevice. More...
 
struct  WaveDeviceDescriptionList
 
class  WaveInputDevice
 A (virtual) audio input device. More...
 
class  WaveInputDeviceNode
 A Node that intercepts incoming live audio and inserts it in to the playback graph. More...
 
class  WaveInputRecordingThread
 
class  WaveNode
 An Node that plays back a wave file. More...
 
class  WaveNodeRealTime
 An Node that plays back a wave file. More...
 
class  WaveOutputDevice
 A (virtual) audio output device. More...
 
class  WaveOutputDeviceInstance
 

Concepts

concept  WeakReferenceable
 

Typedefs

using EditDuration = std::variant< TimeDuration, BeatDuration >
 Alias for a duration.
 
using EditTime = EditPosition
 Alias provided for compatibility, may be removed in future.
 
using MelodyneNode = ARANode
 
using WarpMap = std::vector< WarpPoint >
 
using MelodyneFileReader = ARAFileReader
 
template<typename Type , typename Constrainer = DummyConstrainer<Type>>
using AtomicWrapperRelaxed = AtomicWrapper< Type, Constrainer, std::memory_order_relaxed, std::memory_order_relaxed >
 
template<typename Type , typename Constrainer = DummyConstrainer<Type>>
using AtomicWrapperAcqRel = AtomicWrapper< Type, Constrainer, std::memory_order_acquire, std::memory_order_release >
 
using SampleCount = int64_t
 
using SampleRange = juce::Range< SampleCount >
 
using HashCode = int64_t
 
using MPESourceID = uint32_t
 

Enumerations

enum class  CurveModifierType { absolute , relative , scale }
 Determines the behaviour of a curve. More...
 
enum class  AutomationMode { read , touch , latch , write }
 Determines the behaviour of writing automation. More...
 
enum class  AutomationTrigger { touch , value }
 
enum class  DeleteExistingClips { no , yes }
 Determines behaviour for overwriting clips. More...
 
enum class  FollowAction {
  none , globalStop , globalReturnToArrangement , globalPlayAgain ,
  trackPrevious , trackNext , trackFirst , trackLast ,
  trackAny , trackOther , trackRoundRobin , currentGroupPrevious ,
  currentGroupNext , currentGroupFirst , currentGroupLast , currentGroupAny ,
  currentGroupOther , currentGroupRoundRobin , previousGroupFirst , previousGroupLast ,
  previousGroupAny , nextGroupFirst , nextGroupLast , nextGroupAny ,
  otherGroupFirst , otherGroupLast , otherGroupAny
}
 Determines the type of action to perform after a Clip has played for a set period. More...
 
enum class  CloseGap { no , yes }
 An enum to specify if gaps deleted should be closed or not. More...
 
enum class  MoveClipAction { moveToEndOfLast , moveToStartOfNext , moveStartToCursor , moveEndToCursor }
 Enum to dictate move clip behaviour. More...
 
enum class  LaunchQType {
  none , eightBars , fourBars , twoBars ,
  bar , halfT , half , halfD ,
  quarterT , quarter , quarterD , eighthT ,
  eighth , eighthD , sixteenthT , sixteenth ,
  sixteenthD , thirtySecondT , thirtySecond , thirtySecondD ,
  sixtyFourthT , sixtyFourth , sixtyFourthD
}
 
enum class  TimecodeType {
  millisecs , barsBeats , fps24 , fps25 ,
  fps30
}
 
enum class  RenderFormat {
  wav , aiff , flac , ogg ,
  mp3 , midi
}
 The file format a render is written in. More...
 
enum class  ProjectType { fileBased , folderBased }
 Selects whether a new project is stored as a single .tracktion file or as a folder on disk. More...
 
enum class  ResamplingQuality { lagrange , sincFast , sincMedium , sincBest }
 Specifies a number of resampling qualities that can be used. More...
 
enum  PanLaw {
  PanLawDefault = -1 , PanLawLinear = 0 , PanLaw2point5dBCenter = 1 , PanLaw3dBCenter = 2 ,
  PanLaw4point5dBCenter = 3 , PanLaw6dBCenter = 4
}
 All laws have been designed to be equal-power, excluding linear respectively. More...
 
enum class  AuxPosition { byBus , byPosition }
 
enum class  SettingID {
  invalid , addAntiDenormalNoise , audio_device_setup , audiosettings ,
  audioDeviceLayoutPresets , autoFreeze , autoTempoMatch , autoTempoDetect ,
  automapVst , automapNative , automapGuids1 , automapGuids2 ,
  cacheSizeSamples , compCrossfadeMs , countInMode , clickTrackMidiNoteBig ,
  clickTrackMidiNoteLittle , clickTrackSampleSmall , clickTrackSampleBig , crossfadeBlock ,
  cpu , customMidiControllers , deadMansPedal , defaultMidiOutDevice ,
  defaultWaveOutDevice , defaultMidiInDevice , defaultWaveInDevice , externControlIn ,
  externControlOut , externControlNum , externControlMain , externControlShowSelection ,
  externControlSelectionColour , externControlEnable , externOscInputPort , externOscOutputPort ,
  externOscOutputAddr , filterControlMappingPresets , filterGui , fitClipsToRegion ,
  findExamples , freezePoint , hasEnabledMidiDefaultDevs , glideLength ,
  grooveTemplates , knownPluginList , knownPluginList64 , lameEncoder ,
  lastClickTrackLevel , lastEditRender , lowLatencyBuffer , MCUoneTouchRecord ,
  maxLatency , midiin , midiout , midiEditorOctaves ,
  midiProgramManager , newMarker , numThreadsForPluginScanning , projectList ,
  projects , recentProjects , renameClipRenamesSource , renameMode ,
  renderRecentFilesList , resetCursorOnPlay , retrospectiveRecord , reWireEnabled ,
  safeRecord , sendControllerOffMessages , simplifyAfterRecording , snapCursor ,
  tempDirectory , trackExpansionMode , use64Bit , xFade ,
  xtCount , xtIndices , virtualmididevices , virtualmidiin ,
  midiScanIntervalSeconds , useSeparateProcessForScanning , useRealtime , wavein ,
  waveout , windowsDoubleClick , renderFormat , trackRenderSampRate ,
  trackRenderBits , bypassFilters , markedRegion , editClipRenderSampRate ,
  editClipRenderBits , editClipRenderDither , editClipRealtime , editClipRenderStereo ,
  editClipRenderNormalise , editClipRenderRMS , editClipRenderRMSLevelDb , editClipRenderPeakLevelDb ,
  editClipPassThroughFilters , exportFormat , renderOnlySelectedClips , renderOnlyMarked ,
  renderNormalise , renderRMS , renderRMSLevelDb , renderPeakLevelDb ,
  renderTrimSilence , renderSampRate , renderStereo , renderChannelConfig ,
  renderBits , renderDither , quality , addId3Info ,
  realtime , passThroughFilters , externControlShowClipSlotSelection , addAcidMetadata
}
 A list of settings the engine will get and set. More...
 

Functions

tl::expected< juce::var, juce::String > analyseAudioFile (Engine &, const juce::File &, const std::vector< AudioFileAnalyser * > &, const std::function< bool()> &shouldAbort={})
 Streams an audio file once through the given analysers, returning their combined results as a JSON-style object with the file's basic properties (sampleRate, channels, seconds) always included.
 
tl::expected< juce::var, juce::String > analyseAudioFile (Engine &, const juce::File &, const AudioAnalysisOptions &={})
 Analyses a file with the standard level/spectrum/envelope analysers.
 
juce::Array< KeyResultdetermineKeyOfNotes (const juce::Array< MidiNote * > &notes)
 
AutomationMode getAutomationMode (const AutomatableParameter &)
 Looks for the Track this parameter is currently on and returns the AutomationMode for it.
 
template<typename AssignmentType >
juce::ReferenceCountedArray< AssignmentType > getAssignmentsOfType (const AutomatableParameter &ap)
 Returns all the Assignments of a specific type.
 
template<typename ModifierType >
juce::Array< ModifierType * > getModifiersOfType (const AutomatableParameter &ap)
 Returns all the modifers in use of a specific type.
 
template<typename AssignmentType , typename ModifierSourceType , typename EditType >
juce::ReferenceCountedArray< AssignmentType > getAssignmentsForSource (EditType &edit, const ModifierSourceType &source)
 Iterates an Edit looking for all parameters that assigned to a given parameter.
 
AutomatableParameter::ModifierSourcegetSourceForAssignment (const AutomatableParameter::ModifierAssignment &)
 Iterates an Edit looking for the source of this assignment.
 
juce::ReferenceCountedArray< AutomatableParametergetAllParametersBeingModifiedBy (Edit &, AutomatableParameter::ModifierSource &)
 Iterates an Edit looking for all parameters that are being modified by the given ModifierSource.
 
AutomatableParametergetParameter (AutomatableParameter::ModifierAssignment &)
 Iterates an Edit looking for the parameter that this ModifierAssignment has been made from.
 
int getIntParamValue (const AutomatableParameter &ap)
 Returns an int version of an AutomatableParameter.
 
bool getBoolParamValue (const AutomatableParameter &ap)
 Returns a bool version of an AutomatableParameter.
 
template<typename Type >
Type getTypedParamValue (const AutomatableParameter &ap)
 Returns an int version of an AutomatableParameter cast to a enum type.
 
int simplify (AutomationCurve &, int strength, EditTimeRange, juce::Range< float > valueRange, juce::UndoManager *)
 Removes points from the curve to simplify it and returns the number of points removed.
 
void mergeCurve (AutomationCurve &dest, EditTimeRange destRange, const AutomationCurve &source, EditPosition sourceStartTime, float defaultValue, EditDuration fadeLength, bool leaveOpenAtStart, bool leaveOpenEnded)
 
float getValueAt (AutomatableParameter &, EditPosition)
 Returns the value of a parameter's curve at the given position.
 
float getValueAt (AutomatableParameter &, TimePosition)
 Returns the value of a parameter's curve at the given position.
 
EditTimeRange getFullRange (const AutomationCurve &)
 Returns the range the curve occupies.
 
juce::String toString (CurveModifierType)
 Converts a CurveModifierType to a string if possible.
 
std::optional< CurveModifierTypecurveModifierTypeFromString (juce::String)
 Converts a string to a CurveModifierType if possible.
 
BaseAndModValue getValuesAtEditPosition (AutomationCurveModifier &, AutomatableParameter &, EditPosition)
 Returns the base and modifier values this AutomationCurveModifier will apply at the given position.
 
BaseAndModValue getValuesAtCurvePosition (AutomationCurveModifier &, AutomatableParameter &, EditPosition)
 Returns the base and modifier values this AutomationCurveModifier will apply at the given position.
 
BaseAndModValue getValuesAtCurvePositionUnlooped (AutomationCurveModifier &, AutomatableParameter &, EditPosition)
 Similar to getValuesAtCurvePosition but doesn't apply the looping which can be useful when drawing the curves.
 
std::optional< EditPositionapplyTimingToCurvePosition (AutomationCurveModifier &, CurveModifierType, EditPosition)
 Takes a position relative to the AutomationCurveModifier and applies the CurveTiming to it, giving a final position relative to the AutomationCurve.
 
std::optional< EditPositioneditPositionToCurvePosition (AutomationCurveModifier &, CurveModifierType, EditPosition)
 Converts a position relative to the Edit and applies the CurvePosition and CurveTiming to it, giving a final position relative to the AutomationCurve.
 
float getDefaultValue (AutomatableParameter &, CurveModifierType)
 Returns the default value used if there is no curve for the given type.
 
bool hasAnyPoints (AutomationCurveModifier &)
 Returns true if any of the curves have any points.
 
AutomatableParameter::Ptr getParameter (const AutomationCurveModifier &)
 Returns the destination parameter this curve is controlling.
 
AutomationCurveModifier::Ptr getAutomationCurveModifierForID (Edit &, EditItemID)
 Returns the AutomationCurveModifier with the given EditItemID.
 
void updateRelativeDestinationOrRemove (AutomationCurveList &, AutomationCurveModifier &, Clip &newParent)
 Looks at the destinations on the given AutomationCurveModifier and tries to re-assign parameters to corresponding parameters via the newParent Clip.
 
void assignNewIDsToAutomationCurveModifiers (Edit &, juce::ValueTree &)
 Iterates over the given tree and gives new IDs to any AutomationCurveModifier states.
 
void removeInvalidAutomationCurveModifiers (juce::ValueTree &, const AutomatableParameter &)
 Removes any assignments in the given state if they don't have the given parameter as the destination.
 
std::optional< AutomationModeautomationModeFromString (juce::String)
 Converts an AutomationMode from a string.
 
juce::String toString (AutomationMode)
 Converts an AutomationMode to string.
 
MacroParameter::Ptr getMacroParameterForID (Edit &, EditItemID)
 Searched the Edit for a MacroParameter with this ID.
 
juce::ReferenceCountedObjectPtr< PlugingetOwnerPlugin (MacroParameterList *)
 If this MacroParameterList belongs to an Plugin, this will return it.
 
template<typename ModifierType >
juce::ReferenceCountedArray< ModifierType > getModifiersOfType (const ModifierList &ml)
 Returns the modifers of a specific type.
 
Modifier::Ptr findModifierForID (ModifierList &, EditItemID)
 Returns a Modifier if it can be found in the list.
 
void showARAWindow (AudioClipBase &)
 Shows the ARA plugin window if this clip is using an ARA plugin.
 
void hideARAWindow (AudioClipBase &)
 Hides the ARA plugin window if this clip is using an ARA plugin.
 
void araConvertToMIDI (AudioClipBase &)
 If this clip is using an ARA plugin, this will create a new MIDI clip based on the ARA plugin's analysis.
 
void showMelodyneWindow (AudioClipBase &c)
 
void hideMelodyneWindow (AudioClipBase &c)
 
void melodyneConvertToMIDI (AudioClipBase &c)
 
ClipfindClipForState (ClipOwner &, const juce::ValueTree &)
 Returns a clip with the given state if the ClipOwner contains it.
 
ClipfindClipForID (ClipOwner &, EditItemID)
 Returns a clip with the given ID if the ClipOwner contains it.
 
ClipinsertClipWithState (ClipOwner &, juce::ValueTree)
 Inserts a clip with the given state in to the ClipOwner's clip list.
 
ClipinsertClipWithState (ClipOwner &, const juce::ValueTree &stateToUse, const juce::String &name, TrackItem::Type, ClipPosition, DeleteExistingClips, bool allowSpottingAdjustment)
 Inserts a clip with the given state in to the ClipOwner's clip list.
 
ClipinsertNewClip (ClipOwner &, TrackItem::Type, EditTimeRange)
 Inserts a new clip with the given type and a default name.
 
ClipinsertNewClip (ClipOwner &, TrackItem::Type, const juce::String &name, EditTimeRange)
 Inserts a new clip with the given type and name.
 
ClipinsertNewClip (ClipOwner &, TrackItem::Type, const juce::String &name, ClipPosition)
 Inserts a new clip with the given type and name.
 
juce::ReferenceCountedObjectPtr< WaveAudioClipinsertWaveClip (ClipOwner &, const juce::String &name, const juce::File &sourceFile, ClipPosition, DeleteExistingClips)
 Inserts a new WaveAudioClip into the ClipOwner's clip list.
 
juce::ReferenceCountedObjectPtr< WaveAudioClipinsertWaveClip (ClipOwner &, const juce::String &name, ProjectItemRef sourceID, ClipPosition, DeleteExistingClips)
 Inserts a new WaveAudioClip into the ClipOwner's clip list.
 
juce::ReferenceCountedObjectPtr< MidiClipinsertMIDIClip (ClipOwner &, const juce::String &name, TimeRange)
 Inserts a new MidiClip into the ClipOwner's clip list.
 
juce::ReferenceCountedObjectPtr< MidiClipinsertMIDIClip (ClipOwner &, TimeRange)
 Inserts a new MidiClip into the ClipOwner's clip list.
 
juce::ReferenceCountedObjectPtr< EditClipinsertEditClip (ClipOwner &, TimeRange, ProjectItemRef)
 Inserts a new EditClip into the ClipOwner's clip list.
 
juce::Array< Clip * > deleteRegion (ClipOwner &, TimeRange)
 Removes a region of a ClipOwner and returns any newly created clips.
 
juce::Array< Clip * > deleteRegion (Clip &, TimeRange)
 Removes a region of a clip and returns any newly created clips.
 
juce::Array< Clip * > split (ClipOwner &, TimePosition)
 Splits the given clp owner at the time and returns any newly created clips.
 
Clipsplit (Clip &, TimePosition)
 Splits the given clip at the time and returns the newly created clip.
 
bool containsAnyMIDIClips (const ClipOwner &)
 Returns true if the clip owner contains any MIDI clips.
 
template<typename ClipType >
juce::Array< ClipType * > getClipsOfType (const ClipOwner &)
 Returns the subclips of the given type.
 
template<typename ClipType >
juce::Array< ClipType * > getClipsOfTypeRecursive (const ClipOwner &)
 Returns the subclips of the given type, if any clips contain other clips, this will also return those.
 
bool isMasterTrack (const Track &)
 Returns true if this is a MasterTrack.
 
bool isTempoTrack (const Track &)
 Returns true if this is a TempoTrack.
 
bool isAutomationTrack (const Track &)
 Returns true if this is an AutomationTrack.
 
bool isAudioTrack (const Track &)
 Returns true if this is an AudioTrack.
 
bool isFolderTrack (const Track &)
 Returns true if this is a FolderTrack.
 
bool isMarkerTrack (const Track &)
 Returns true if this is a MarkerTrack.
 
bool isChordTrack (const Track &)
 Returns true if this is a ChordTrack.
 
bool isArrangerTrack (const Track &)
 Returns true if this is an ArrangerTrack.
 
bool isAudioTrack (const ClipOwner &)
 Returns true if this is an AudioTrack.
 
bool isFolderTrack (const ClipOwner &)
 Returns true if this is a FolderTrack.
 
bool isMarkerTrack (const ClipOwner &)
 Returns true if this is a MarkerTrack.
 
bool isChordTrack (const ClipOwner &)
 Returns true if this is a ChordTrack.
 
bool isArrangerTrack (const ClipOwner &)
 Returns true if this is an ArrangerTrack.
 
bool canContainMIDI (const ClipOwner &)
 Returns true if this Track can contain MidiClip[s].
 
bool canContainAudio (const ClipOwner &)
 Returns true if this Track can contain WaveAudioClip[s].
 
bool isMovable (const Track &)
 Returns true if this Track is movable.
 
bool isOnTop (const Track &)
 Returns true if this a global Track and should be on top of others.
 
std::optional< FollowActionfollowActionFromString (juce::String)
 Converts a string to a FollowAction if possible.
 
juce::String toString (FollowAction)
 Converts a FollowAction to a string if possible.
 
std::function< void(MonotonicBeat)> createFollowAction (Clip &)
 Creates a follow action for a Clip.
 
void mergeInMidiSequence (MidiClip &, juce::MidiMessageSequence, TimeDuration offsetToApply, MidiList::NoteAutomationType)
 Copies a zero-time origin based MIDI sequence in to a MidiClip.
 
std::unique_ptr< EditloadEditFromFile (Engine &, const juce::File &, Edit::EditRole role=Edit::EditRole::forEditing, Edit::LoadContext *=nullptr)
 Loads an edit from a file, ready for playback / editing.
 
std::unique_ptr< EditloadEditFromState (Engine &, const juce::ValueTree &, Edit::EditRole role=Edit::EditRole::forEditing, Edit::LoadContext *=nullptr)
 Loads an edit from a ValueTree, ready for playback / editing.
 
std::unique_ptr< EditcreateEmptyEdit (Engine &, const juce::File &)
 Creates a new edit for a file, ready for playback / editing.
 
juce::ValueTree loadEditFromProjectManager (ProjectManager &, ProjectItemRef)
 Uses the ProjectManager to find an Edit file and load it as a ValueTree.
 
std::unique_ptr< EditloadEditForExamining (ProjectManager &, ProjectItemRef, Edit::EditRole role=Edit::EditRole::forExamining, Edit::LoadContext *=nullptr)
 Uses the ProjectManager to find an Edit file and open it.
 
juce::ValueTree loadEditFromFile (Engine &, const juce::File &, ProjectItemRef)
 Legacy, will be deprecated soon.
 
juce::ValueTree createEmptyEdit (Engine &)
 Legacy, will be deprecated soon.
 
juce::ValueTree updateLegacyEdit (const juce::ValueTree &)
 Converts old edit formats to the latest structure.
 
void updateLegacyEdit (juce::XmlElement &editXML)
 Converts old edit formats to the latest structure.
 
Project::Ptr getProjectForEdit (const Edit &)
 Tries to find the project that contains this edit (but may return nullptr!)
 
ProjectItem::Ptr getProjectItemForEdit (const Edit &)
 Tries to find the project item that refers to this edit (but may return nullptr!)
 
juce::File getEditFileFromProjectManager (Edit &)
 Uses the ProjectManager to look up the file for an Edit.
 
bool referencesProjectItem (Edit &, ProjectItemRef)
 Returns true if the ProjectItemRef is being used for any of the Edit's elements.
 
void convertAllSourcePaths (Edit &, bool useRelativePaths)
 Converts all clip source paths in an Edit to relative or absolute paths.
 
void insertSpaceIntoEdit (Edit &, TimeRange timeRangeToInsert, const juce::Array< Track * > &onlyTheseTracks={})
 Inserts blank space in to an Edit, splitting clips if necessary.
 
void insertSpaceIntoEditFromBeatRange (Edit &, BeatRange)
 Inserts a number of blank beats in to the Edit.
 
EditItemfindEditItemForID (Edit &, EditItemID)
 Looks for an item in an edit with a given ID.
 
juce::Array< Track * > getAllTracks (const Edit &)
 Returns all the tracks in an Edit.
 
juce::Array< Track * > getTopLevelTracks (const Edit &)
 Returns all of the non-foldered tracks in an Edit.
 
template<typename TrackType >
juce::Array< TrackType * > getTracksOfType (const Edit &, bool recursive)
 Returns the tracks of a given type in an Edit.
 
juce::Array< AudioTrack * > getAudioTracks (const Edit &)
 Returns all the AudioTracks in an Edit.
 
juce::Array< ClipTrack * > getClipTracks (const Edit &)
 Returns all the ClipTracks in an Edit.
 
int getTotalNumTracks (const Edit &)
 Returns the total number of Tracks in an Edit.
 
TrackfindTrackForID (const Edit &, EditItemID)
 Returns the Track with a given ID if contained in the Edit.
 
AudioTrackfindAudioTrackForID (const Edit &, EditItemID)
 Returns the AudioTrack with a given ID if contained in the Edit.
 
juce::Array< Track * > findTracksForIDs (const Edit &, const juce::Array< EditItemID > &)
 Returns the Tracks for the given IDs in the Edit.
 
TrackfindTrackForState (const Edit &, const juce::ValueTree &)
 Returns the Track with a given state if contained in the Edit.
 
AudioTrackgetFirstAudioTrack (const Edit &)
 Returns the first audio track in an Edit.
 
juce::Array< Track * > findAllTracksContainingSelectedItems (const SelectableList &)
 Returns all the tracks containing the selected tracks or TrackItems.
 
ClipTrackfindFirstClipTrackFromSelection (const SelectableList &)
 Returns the first ClipTrack from the selected tracks or clips.
 
bool containsTrack (const Edit &, const Track &)
 Returns true if the Edit contains this Track.
 
TrackOutputgetTrackOutput (Track &)
 Returns the TrackOutput if the given track has one.
 
juce::BigInteger toBitSet (const juce::Array< Track * > &)
 Returns the given tracks as a BigInteger, with each set bit corresponding to a track's index in the Edit's array of all tracks (.
 
juce::Array< Track * > toTrackArray (Edit &, const juce::BigInteger &)
 Returns an Array of Track[s] corresponding to the set bits of all tracks in an Edit.
 
template<typename TrackItemType >
juce::Array< TrackItemType * > getTrackItemsOfType (const Track &)
 
ClipOwnerfindClipOwnerForID (const Edit &, EditItemID)
 Returns the ClipOwner with a given ID if it can be found in the Edit.
 
ClipSlotfindClipSlotForID (const Edit &, EditItemID)
 Returns the ClipSlot for the given ID.
 
int findClipSlotIndex (ClipSlot &)
 Returns the index of the ClipSlot in the list it is owned by.
 
ClipfindClipForID (const Edit &, EditItemID)
 Returns the Clip with a given ID if contained in the Edit.
 
ClipfindClipForState (const Edit &, const juce::ValueTree &)
 Returns the Clip for a given state if contained in the Edit.
 
bool containsClip (const Edit &, Clip *)
 Returns true if an Edit contains a given clip.
 
Clip::Ptr duplicateClip (const Clip &)
 Creates a unique copy of this clip with a new EditItemID.
 
void visitAllTrackItems (const Edit &, std::function< bool(TrackItem &)>)
 Calls a function for all TrackItems in an Edit.
 
TimeRange getTimeRangeForSelectedItems (const SelectableList &)
 Returns the time range covered by the given items.
 
void deleteRegionOfTracks (Edit &, TimeRange rangeToDelete, bool onlySelectedTracks, CloseGap, SelectionManager *)
 Deletes a time range of an Edit, optionally closing the gap.
 
void deleteRegionOfClip (Clip &, TimeRange rangeToDelete)
 Deletes a time range of a Clip.
 
void deleteRegionOfSelectedClips (SelectionManager &, TimeRange rangeToDelete, CloseGap, bool moveAllSubsequentClipsOnTrack)
 Deletes a time range of a Clip selection, optionally closing the gap.
 
SelectableList splitClips (const SelectableList &clips, TimePosition time)
 Splits the clips at a given time.
 
void moveSelectedClips (const SelectableList &, Edit &, MoveClipAction mode, bool alsoMoveAutomation)
 Moves the selected clips within their track.
 
SelectableList getClipSelectionWithCollectionClipContents (const SelectableList &)
 Returns a list of clips.
 
juce::Array< ClipEffect * > getAllClipEffects (Edit &edit)
 Returns all clip effects.
 
MidiNotefindNoteForState (const Edit &, const juce::ValueTree &)
 Returns the MidiNote with a given state.
 
juce::Result mergeMidiClips (juce::Array< MidiClip * >, SelectionManager *sm=nullptr)
 Merges a set of MIDI clips in to one new one.
 
juce::OwnedArray< MidiListreadFileToMidiList (juce::File midiFile, bool importAsNoteExpression)
 Helper function to read a file to a number of MidiLists.
 
MidiClip::Ptr createClipFromFile (juce::File midiFile, ClipOwner &, bool importAsNoteExpression)
 Helper function to read a MIDI file and create a MidiClip from it.
 
Plugin::Array getAllPlugins (const Edit &, bool includeMasterVolume)
 Returns all the plugins in a given Edit.
 
Plugin::Ptr findPluginForState (const Edit &, const juce::ValueTree &)
 Returns the plugin with given state.
 
Plugin::Ptr findPluginForID (const Edit &, EditItemID)
 Returns the plugin with given EditItemID.
 
TrackgetTrackContainingPlugin (const Edit &, const Plugin *)
 Returns the track for the track which the plugin is located on.
 
bool areAnyPluginsMissing (const Edit &)
 Returns true if any plugins couldn't be loaded beacuse their files are missing.
 
juce::Array< RackInstance * > getRackInstancesInEditForType (const RackType &)
 Returns all of the instances of a specific RackType in an Edit.
 
void muteOrUnmuteAllPlugins (const Edit &)
 Toggles the enabled state of all plugins in an Edit.
 
void midiPanic (Edit &, bool resetPlugins)
 Performs a "MIDI panic" on the edit, by sending all-note-off messages directly to all plugins in the edit, and optionally resetting them to kill any reverb tails, etc.
 
template<typename PluginType >
juce::ReferenceCountedObjectPtr< PluginType > insertNewPlugin (Track &, int index=0)
 Adds a new instance of the given plugin to the track's plugin list at the specified index.
 
std::vector< AutomatableEditItem * > getAllAutomatableEditItems (const Edit &)
 Returns all AutomatableEditItems in an Edit.
 
void deleteAutomation (const SelectableList &selectedClips)
 Deletes the automation covered by the selected clips.
 
juce::Array< AutomatableParameter::ModifierSource * > getAllModifierSources (const Edit &)
 Returns all the ModifierSources in an Edit.
 
juce::ReferenceCountedArray< ModifiergetAllModifiers (const Edit &)
 Returns all the Modifiers in an Edit.
 
template<typename ModifierType >
ModifierType::Ptr findModifierTypeForID (const Edit &, EditItemID)
 Returns the Modifier with a given type and ID.
 
Modifier::Ptr findModifierForID (const Edit &, EditItemID)
 Returns the Modifier with a given ID.
 
Modifier::Ptr findModifierForID (const RackType &, EditItemID)
 Returns the Modifier with a given ID if the RackType contains it.
 
TrackgetTrackContainingModifier (const Edit &, const Modifier::Ptr &)
 Returns the Track containing a Modifier.
 
TrackgetTrackShowingParameter (AutomatableParameter &)
 Returns the Track that is currently showing an AutomatableParameter's curve.
 
juce::Array< MacroParameterList * > getAllMacroParameterLists (const Edit &)
 Returns all the MacroParameterLists in an Edit.
 
juce::Array< MacroParameterElement * > getAllMacroParameterElements (const Edit &)
 Returns all the MacroParameterElement in an Edit.
 
InputDeviceInstance::RecordingParameters getDefaultRecordingParameters (const EditPlaybackContext &, TimePosition playStart, TimePosition punchIn)
 Returns the default set of recording parameters.
 
juce::Result prepareAndPunchRecord (InputDeviceInstance &, EditItemID)
 Starts an InputDeviceInstance recording to the given target without any count-in etc.
 
tl::expected< Clip::Array, juce::String > punchOutRecording (InputDeviceInstance &)
 If the instance is currently recording, this will stop it and return any created clips or an error message.
 
bool isRecording (EditPlaybackContext &)
 Returns true if any inputs are currently recording.
 
InputDeviceInstance::DestinationassignTrackAsInput (AudioTrack &destinationTrack, const AudioTrack &sourceTrack, InputDevice::DeviceType)
 Creates an InputDeviceInstance::Destination on the destinationTrack from the sourceTrack if possible.
 
template<typename Type >
requires (std::is_same_v<Type, Edit> || requires (Type t) { t.edit; } || requires (Type t) { t.getEdit(); })
EditgetEdit (Type &type)
 Returns a reference to the Edit if accessible by the given object.
 
TempoSequencegetTempoSequence (auto &type)
 
juce::UndoManager & getUndoManager (auto &type)
 
juce::UndoManager * getUndoManager_p (auto &type)
 
juce::StringArray getLaunchQTypeChoices ()
 Returns a list of quantisation type options in the order of LaunchQType.
 
std::optional< LaunchQTypelaunchQTypeFromName (const juce::String &)
 Returns a the launch Q from a string returned from getLaunchQTypeChoices().
 
juce::String getName (LaunchQType)
 Retuns the name of a LaunchQType for display purposes.
 
double toBarFraction (LaunchQType) noexcept
 Returns the fraction of a bar to be used for a given rate type.
 
LaunchQType fromBarFraction (double) noexcept
 Returns the fraction of a bar to be used for a given rate type.
 
BeatPosition getNext (LaunchQType, const TempoSequence &, BeatPosition) noexcept
 Returns the next quantised position.
 
BeatPosition getNext (LaunchQType, const tempo::Sequence &, BeatPosition) noexcept
 Returns the next quantised position.
 
bool operator< (const PitchSetting &p1, const PitchSetting &p2) noexcept
 
tempo::Sequence::Position createPosition (const TempoSequence &)
 Creates a Position to iterate over the given TempoSequence.
 
bool isLegacyArchive (Engine &, const juce::File &)
 Returns true if the file is a legacy .trkarch archive.
 
bool isArchive (Engine &, const juce::File &)
 Returns true if the file is any supported archive format (legacy or zip).
 
juce::StringPairArray createAcidInfo (Edit &, TimeRange)
 Creates ACID metadata info from the Edit.
 
std::optional< RenderFormatrenderFormatFromString (juce::String)
 Converts a RenderFormat from its canonical name, or nullopt if unrecognised.
 
juce::String toString (RenderFormat)
 Converts a RenderFormat to its canonical name.
 
bool isMidiFormat (RenderFormat f)
 True for the format that writes notes rather than audio.
 
juce::StringPairArray createTagMetadata (Edit &)
 Returns an Edit's tag metadata - title, artist, album, date, genre, comment and track number - as the canonical "id3*" key/value pairs.
 
bool hasTagMetadata (Edit &)
 True if an Edit has actually been given any tags, which is what decides whether tagging is enabled by default.
 
bool formatSupportsTagMetadata (RenderFormat)
 True if a format's writer can carry tag metadata at all: wav (in a RIFF INFO chunk), ogg (Vorbis comments) and mp3 (ID3) can; aiff and flac have no metadata support in their writers, and a MIDI file has nowhere to put it.
 
juce::StringPairArray translateMetadataForFormat (const juce::StringPairArray &, RenderFormat)
 Converts canonical "id3*" tag pairs to the keys a format's writer understands: passed through unchanged for ogg and mp3, mapped to the WAV writer's RIFF INFO names for wav, and dropped for the formats which can't carry tags.
 
juce::Result validateRenderSpecification (Edit &, const RenderSpecification &)
 Checks a specification can be rendered from the given Edit, returning a failure result describing the first problem found.
 
juce::Array< EditItemIDfindStemSourceTracks (Edit &, const juce::Array< EditItemID > &stemTracks)
 Finds the tracks a stem render depends on for its sound but which aren't part of the stem itself: sidechain sources of the stem's plugins, tracks with an aux send feeding an aux return in the stem, and tracks hosting instances of a rack the stem shares (a rack is processed once, fed by all its instances).
 
std::optional< PlannedRenderJobcreateRenderJob (Edit &, const RenderSpecification &)
 Creates the render job for a valid specification.
 
std::vector< RenderSpecificationcreatePerTrackSpecifications (Edit &, const RenderSpecification &base, const juce::File &directory)
 Creates one specification per track from a template, for rendering each track to its own file in the given directory.
 
BeatPosition toBeats (TimePosition, const TempoSequence &)
 Converts a TimePosition to a BeatPosition given a TempoSequence.
 
BeatPosition toBeats (TimePosition, const tempo::Sequence &)
 
TimePosition toTime (BeatPosition, const TempoSequence &)
 Converts a BeatPosition to a TimePosition given a TempoSequence.
 
TimePosition toTime (BeatPosition, const tempo::Sequence &)
 
BeatRange toBeats (TimeRange, const TempoSequence &)
 Converts a TimeRange to a BeatRange given a TempoSequence.
 
BeatRange toBeats (TimeRange, const tempo::Sequence &)
 
TimeRange toTime (BeatRange, const TempoSequence &)
 Converts a BeatRange to a TimeRange given a TempoSequence.
 
TimeRange toTime (BeatRange, const tempo::Sequence &)
 
EditPosition toPosition (EditDuration)
 Returns the raw value of beats or seconds, only really useful for comparing two EditDurations with the same time base.
 
double toUnderlying (EditDuration)
 Returns the raw value of beats or seconds, only really useful for comparing two EditDurations with the same time base.
 
bool isZero (EditDuration)
 Returns true if the duration is 0 beats or seconds.
 
bool isGreaterThanZero (EditDuration)
 Returns true if the duration is greater than zero beats or seconds.
 
EditPosition plus (const EditPosition &lhs, const EditDuration &rhs, const TempoSequence &ts)
 
EditPosition minus (const EditPosition &lhs, const EditDuration &rhs, const TempoSequence &ts)
 
bool equals (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
EditDuration minus (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
bool less (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
bool greater (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
bool lessThanOrEqualTo (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
bool greaterThanOrEqualTo (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
EditPosition min (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
EditPosition max (const EditPosition &lhs, const EditPosition &rhs, const TempoSequence &ts)
 
EditDuration toDuration (const EditPosition &p)
 
bool operator== (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
bool operator< (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
bool operator<= (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
bool operator> (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
bool operator>= (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
EditDuration operator- (const EditPositionWithTempoSequence &lhs, const EditPositionWithTempoSequence &rhs)
 
EditPosition operator+ (const EditPositionWithTempoSequence &lhs, const EditDuration &rhs)
 
EditPosition operator- (const EditPositionWithTempoSequence &lhs, const EditDuration &rhs)
 
TimePosition toTime (EditPosition, const TempoSequence &)
 Converts an EditTime to a TimePosition.
 
BeatPosition toBeats (EditPosition, const TempoSequence &)
 Converts an EditTime to a BeatPosition.
 
double toUnderlying (EditPosition)
 Returns the raw number of seconds or beats.
 
juce::Range< double > toUnderlying (EditTimeRange)
 Returns the raw number of seconds or beats.
 
bool contains (EditTimeRange, EditPosition, const TempoSequence &)
 Returns true if the given position is contained within the given range.
 
bool containsInclusive (EditTimeRange, EditPosition, const TempoSequence &)
 Returns true if the given position is contained within the given closed range.
 
TimeRange toTime (EditTimeRange, const TempoSequence &)
 Converts an EditTimeRange to a TimeRange.
 
BeatRange toBeats (EditTimeRange, const TempoSequence &)
 Converts an EditTimeRange to a BeatRange.
 
ClipPosition createClipPosition (const TempoSequence &, TimeRange, TimeDuration offset={})
 Creates a ClipPosition from either a time or beat range.
 
ClipPosition createClipPosition (const TempoSequence &, BeatRange, BeatDuration offset={})
 Creates a ClipPosition from either a time or beat range.
 
TimePosition toTime (EditPosition et, const tempo::Sequence &ts)
 
BeatPosition toBeats (EditPosition et, const tempo::Sequence &ts)
 
TimeRange toTime (EditTimeRange r, const tempo::Sequence &ts)
 
BeatRange toBeats (EditTimeRange r, const tempo::Sequence &ts)
 
int countNumTracks (const juce::ValueTree &)
 Returns the number of tracks from this tree recursively.
 
void moveAutomation (const juce::Array< TrackAutomationSection > &, TimeDuration offset, bool copy)
 Moves a set of automation optionally applying an offset and copying the automation (rather than moving it).
 
template<typename ArrayType >
int findIndexOfNextItemAt (const ArrayType &items, TimePosition time)
 Returns the index of the next item after the given time.
 
template<typename ArrayType >
TimeRange findUnionOfEditTimeRanges (const ArrayType &items)
 Returns the the time range that covers all the given TrackItems.
 
juce::Array< std::pair< AudioTrack *, int > > getTargetTracksAndIndexes (InputDeviceInstance &)
 Returns the AudioTracks and their indexes this instance is assigned to.
 
juce::Array< AudioTrack * > getTargetTracks (InputDeviceInstance &)
 Returns the AudioTracks this instance is assigned to.
 
bool isOnTargetTrack (InputDeviceInstance &, const Track &, int idx)
 Returns true if this instance is assigned to the given Track at the given index .
 
bool isAttached (InputDeviceInstance &)
 Returns true if this input is assigned to a target.
 
juce::Result clearFromTargets (InputDeviceInstance &, juce::UndoManager *)
 Removes this instance from all assigned targets.
 
InputDeviceInstance::DestinationgetDestination (InputDeviceInstance &, const Track &track, int index)
 Returns the destination if one has been assigned for the given arguments.
 
InputDeviceInstance::DestinationgetDestination (InputDeviceInstance &, const ClipSlot &)
 Returns the destination if one has been assigned for the given arguments.
 
InputDeviceInstance::DestinationgetDestination (InputDeviceInstance &, const juce::ValueTree &destinationState)
 Returns the destination if one has been assigned for the given arguments.
 
bool hasErrors (const InputDeviceInstance::PreparedContext &pc)
 Returns true if all the targets were fully prepared.
 
InputDeviceInstance::PreparedContextappend (InputDeviceInstance::PreparedContext &dest, InputDeviceInstance::PreparedContext &&src)
 Appends a PreparedContent to another.
 
std::pair< std::vector< std::unique_ptr< InputDeviceInstance::RecordingContext > >, juce::StringArray > extract (InputDeviceInstance::PreparedContext &&pc)
 Splits the PreparedContext in to valid RecordingContexts and an array of error messages.
 
std::unique_ptr< tracktion::graph::Node > createNodeForEdit (EditPlaybackContext &, std::atomic< double > &audibleTimeToUpdate, const CreateNodeParams &)
 Creates a Node to play back an Edit with live inputs and outputs.
 
std::unique_ptr< tracktion::graph::Node > createNodeForEdit (Edit &, const CreateNodeParams &)
 Creates a Node to render an Edit.
 
std::unique_ptr< tracktion::graph::Node > createGeneratorPluginNode (const Plugin::Ptr &, const CreateNodeParams &, std::unique_ptr< tracktion::graph::Node > output)
 Wraps a Plugin as a generator Node (driven by a silent input) and sums it into the supplied output Node.
 
void toStart (TransportControl &, const SelectableList &)
 Moves the transport to the start of the selected objects.
 
void toEnd (TransportControl &, const SelectableList &)
 Moves the transport to the end of the selected objects.
 
void tabBack (TransportControl &)
 Moves the transport back to the previous point of interest.
 
void tabForward (TransportControl &)
 Moves the transport forwards to the next point of interest.
 
void markIn (TransportControl &)
 Sets the mark in position to the current transport position.
 
void markOut (TransportControl &)
 Sets the mark out position to the current transport position.
 
void scrub (TransportControl &, double unitsForwards)
 Scrubs back and forth in 'units', where a unit is about 1/50th of the width of the strip window.
 
void freePlaybackContextIfNotRecording (TransportControl &)
 Frees the playback context if no recording is in progress, useful for when an app is minimised.
 
void float2string (float f, char *text, int len)
 
void int2string (float i, char *text, int len)
 
void dB2string (float value, char *text, int maxLen)
 
ARAIXMLResult detectARAFromIXMLChunks (Engine &, const juce::File &sourceFile)
 Scans a source audio file for ARA iXML chunks and returns the first matching installed plugin description along with archive data.
 
std::string getCmajorVersion ()
 
std::unique_ptr< juce::AudioPluginFormat > createCmajorPatchPluginFormat (Engine &)
 
bool isCmajorPatchPluginFormat (const juce::PluginDescription &)
 
bool isCmajorPatchPluginFormat (const juce::String &formatName)
 
juce::String getCmajorPatchPluginFormatName ()
 
juce::String getCmajorPatchCompileError (Plugin &)
 
juce::String createIdentifierString (const juce::PluginDescription &)
 
Project::Ptr convertToFolderBasedProject (Project &)
 Converts a file-based project to a folder-based project.
 
bool operator== (ProjectItemID lhs, const ProjectItemRef &rhs)
 
bool operator!= (ProjectItemID lhs, const ProjectItemRef &rhs)
 
AudioTrackgetOrInsertAudioTrackNearestIndex (Edit &edit, int trackIndex)
 
template<typename SelectableType >
SafeSelectable< SelectableType > makeSafeRef (SelectableType &selectable)
 Creates a SafeSelectable for a given selectable object.
 
template<typename Iterable >
auto makeSafeVector (const Iterable &selectables) -> std::vector< SafeSelectable< typename std::remove_reference< decltype(*selectables[0])>::type > >
 Creates a std::vector<SafeSelectable<Something>> for a given juce::Array of selectable objects.
 
template<typename WeakReferenceable >
juce::WeakReference< WeakReferenceable > makeWeakRef (WeakReferenceable &object)
 Creates a juce::WeakReference for an object.
 
template<typename WeakReferenceable >
juce::WeakReference< WeakReferenceable > makeWeakRef (WeakReferenceable *object)
 Creates a juce::WeakReference for an object pointer (which may be null)
 
void resetSelectableListener (SafeScopedListener &scopedListener, Selectable &broadcaster, SelectableListener &listener)
 Registers a SafeScopedListener with a Selectable.
 
void resetSelectableListener (SafeScopedListener &scopedListener, Selectable *broadcaster, SelectableListener &listener)
 Registers a SafeScopedListener with a Selectable, or unregisters it if the broadcaster is null.
 
bool callBlocking (std::function< void()> f)
 Calls a function on the message thread by posting a message and then waiting for it to be delivered.
 
bool callBlockingCatching (std::function< void()> f) noexcept
 The same as callBlocking expect the exception is caught and ignored.
 
float dbToGain (float db) noexcept
 
float gainToDb (float gain) noexcept
 
juce::String gainToDbString (float gain, float infLevel=-96.0f, int decPlaces=2)
 
float dbStringToDb (const juce::String &dbStr)
 
float dbStringToGain (const juce::String &dbStr)
 
juce::String getPanString (float pan)
 
juce::String getSemitonesAsString (double semitones)
 
template<typename FloatType >
FloatType midiNoteToFrequency (FloatType midiNote)
 
template<typename FloatType >
FloatType frequencyToMidiNote (FloatType freq)
 
void sanitiseValues (juce::AudioBuffer< float > &, int startSample, int numSamples, float maxAbsValue, float minAbsThreshold=1.0f/262144.0f)
 
void addAntiDenormalisationNoise (juce::AudioBuffer< float > &, int start, int numSamples) noexcept
 
void resetFP () noexcept
 
bool hasFloatingPointDenormaliseOccurred () noexcept
 
void zeroDenormalisedValuesIfNeeded (juce::AudioBuffer< float > &) noexcept
 
bool isAudioDataAlmostSilent (const float *data, int num)
 
float getAudioDataMagnitude (const float *data, int num)
 
void convertIntsToFloats (juce::AudioBuffer< float > &)
 
void convertFloatsToInts (juce::AudioBuffer< float > &)
 
template<typename SampleType >
choc::buffer::BufferView< SampleType, choc::buffer::SeparateChannelLayout > toBufferView (juce::AudioBuffer< SampleType > &buffer)
 Converts a juce::AudioBuffer<SampleType> to a choc::buffer::BufferView.
 
template<typename SampleType >
SampleType getRMS (choc::buffer::MonoView< SampleType >)
 Returns the RMS of a single channel buffer.
 
PanLaw getDefaultPanLaw () noexcept
 
void setDefaultPanLaw (PanLaw)
 
juce::StringArray getPanLawChoices (bool includeDefault) noexcept
 
float decibelsToVolumeFaderPosition (float dB) noexcept
 
float volumeFaderPositionToDB (float position) noexcept
 
float volumeFaderPositionToGain (float position) noexcept
 
float gainToVolumeFaderPosition (float gain) noexcept
 
void getGainsFromVolumeFaderPositionAndPan (float volSliderPos, float pan, PanLaw lawToUse, float &leftGain, float &rightGain) noexcept
 
void clearChannels (juce::AudioBuffer< float > &buffer, int startChannel, int endChannel=-1, int startSample=0, int endSample=-1)
 
juce::AudioPlayHead::CurrentPositionInfo getCurrentPositionInfo (Edit &)
 Converts an Edit's internal transport information to a juce::AudioPlayHead::CurrentPositionInfo.
 
void synchroniseEditPosition (Edit &, const juce::AudioPlayHead::CurrentPositionInfo &)
 Syncs an Edit's transport and tempo sequence to a juce AudioPlayHead.
 
bool isMidiFile (const juce::File &)
 
bool isTracktionEditFile (const juce::File &)
 
bool isTracktionArchiveFile (const juce::File &)
 
bool isTracktionProjectFile (const juce::File &)
 
bool isTracktionProjectFolder (const juce::File &)
 
bool isTracktionProjectFileOrFolder (const juce::File &)
 
bool isTracktionPresetFile (const juce::File &)
 
juce::File getNonExistentSiblingWithIncrementedNumberSuffix (const juce::File &, bool addHashSymbol)
 
void addSortedListToMenu (juce::PopupMenu &m, juce::StringArray names, int startID)
 
juce::AffineTransform getScaleAroundCentre (juce::Rectangle< float > r, float numPixels)
 
void moveXMLAttributeToStart (juce::XmlElement &xml, juce::StringRef att)
 
template<typename Vector , typename Predicate >
bool removeIf (Vector &v, Predicate &&pred)
 
template<typename FloatingPointType >
bool almostEqual (FloatingPointType firstValue, FloatingPointType secondValue, FloatingPointType precision=(FloatingPointType) 0.00001)
 Checks to see if two values are equal within a given precision.
 
bool isCurrentThreadSupplyingExitStatus ()
 Returns true if the current thread has an active ScopedThreadExitStatusEnabler.
 
void signalThreadShouldExit (std::thread::id)
 Can be used to signal that the current thread is waiting to exit.
 
bool shouldCurrentThreadExit ()
 Returns true if the current thread is waiting to exit.
 
MonotonicBeatRange getMonotonicBeatRange (const SyncRange &)
 
BeatRange getBeatRange (const SyncRange &)
 
int64_t getNumSamples (const SyncRange &)
 
template<typename VarType >
void convertPropertyToType (juce::ValueTree &v, const juce::Identifier &id)
 Ensures a property is a given type which can avoid having to parse a string every time it is read after loading from XML.
 
template<typename Type >
bool matchesAnyOf (const Type &needle, const std::initializer_list< Type > &haystack)
 Returns true if the needle is found in the haystack.
 
template<typename Type , typename UnaryFunction >
void forEachItem (const juce::Array< Type * > &items, const UnaryFunction &fn)
 Calls a function object on each item in an array.
 
template<typename... Others>
void addValueTreeProperties (juce::ValueTree &v, const juce::Identifier &name, const juce::var &value, Others &&... others)
 
template<typename... Properties>
juce::ValueTree createValueTree (const juce::Identifier &name, Properties &&... properties)
 
juce::Array< juce::ValueTree > & removeInvalidValueTrees (juce::Array< juce::ValueTree > &trees)
 Strips out any invalid trees from the array.
 
juce::Array< juce::ValueTree > getTreesOfType (const juce::Array< juce::ValueTree > &trees, const juce::Identifier &type)
 Returns a new array with any trees without the given type removed.
 
void getChildTreesRecursive (juce::Array< juce::ValueTree > &result, const juce::ValueTree &tree)
 
void renamePropertyRecursive (juce::ValueTree &tree, const juce::Identifier &oldName, const juce::Identifier &newName, juce::UndoManager *um)
 
juce::ValueTree getOrCreateChildWithTypeAndProperty (juce::ValueTree &tree, const juce::Identifier &type, const juce::Identifier &property, const juce::var &propertyValue, juce::UndoManager *undoManager)
 Looks for a chile with the given name and property, if one doesn't exist, creates it.
 

Variables

const char *const projectFileSuffix = ".tracktion"
 
const char *const editFileSuffix = ".tracktionedit"
 
const char *const legacyEditFileSuffix = ".trkedit"
 
const char *const legacyArchiveFileSuffix = ".trkarch"
 
const char *const archiveFileSuffix_v2 = ".zip"
 
const char *const soundFileWildCard = "*.wav;*.aiff;*.aif;*.ogg;*.mp3;*.flac;*.au;*.voc;*.caf;*.w64;*.rx2;*.rcy;*.rex;*.wfaf"
 
const char *const soundFileAndMidiWildCard = "*.wav;*.aiff;*.aif;*.ogg;*.mp3;*.mid;*.midi;*.flac;*.au;*.voc;*.caf;*.w64;*.rx2;*.rcy;*.rex;*.wfaf"
 
const char *const midiFileWildCard = "*.midi;*.mid"
 
const char *const soundFileExtensions = "wav;aiff;aif;ogg;mp3;flac;au;voc;caf;w64;rx2;rcy;rex;wfaf"
 
const char *const soundFileAndMidiExtensions = "wav;aiff;aif;ogg;mp3;flac;au;voc;caf;w64;rx2;rcy;rex;wfaf;midi;mid"
 
const char *const midiFileExtensions = "midi;mid"
 
const char *const keyMapWildCard = "*.tracktionkeys"
 
const char *const keyMapSuffix = ".tracktionkeys"
 
const char *const customControllerFileSuffix = ".trkctrlr"
 
const char *const customProgramSetWildcard = "*.trkmidi;*.midnam"
 
const char *const customProgramSetFileSuffix = ".trkmidi"
 
const char *const presetFileSuffix = ".trkpreset"
 
const char *const rackFileSuffix = ".trkrack"
 
const char *const scriptFileSuffix = ".tracktionscript"
 
const char *const grooveTemplateSuffix = ".trkgroove"
 
const char *const grooveTemplateWildCard = "*.trkgroove"
 
constexpr HertzTag HertzTag_t {}
 

Detailed Description

Typedef Documentation

◆ EditDuration

using engine::EditDuration = typedef std::variant<TimeDuration, BeatDuration>

Alias for a duration.

Note this isn't a proper type like EditPosition as a duration by itself doesn't make sense for beats, you can't convert to/from Time without a position as well. So most of the time you'd specify this as an EditRange.

◆ EditTime

using engine::EditTime = typedef EditPosition

Alias provided for compatibility, may be removed in future.

◆ MelodyneNode

using engine::MelodyneNode = typedef ARANode
Deprecated:
Use ARANode instead

◆ WarpMap

using engine::WarpMap = typedef std::vector<WarpPoint>

◆ MelodyneFileReader

◆ AtomicWrapperRelaxed

template<typename Type , typename Constrainer = DummyConstrainer<Type>>
using engine::AtomicWrapperRelaxed = typedef AtomicWrapper<Type, Constrainer, std::memory_order_relaxed, std::memory_order_relaxed>

◆ AtomicWrapperAcqRel

template<typename Type , typename Constrainer = DummyConstrainer<Type>>
using engine::AtomicWrapperAcqRel = typedef AtomicWrapper<Type, Constrainer, std::memory_order_acquire, std::memory_order_release>

◆ SampleCount

using engine::SampleCount = typedef int64_t

◆ SampleRange

using engine::SampleRange = typedef juce::Range<SampleCount>

◆ HashCode

using engine::HashCode = typedef int64_t

◆ MPESourceID

using engine::MPESourceID = typedef uint32_t

Enumeration Type Documentation

◆ CurveModifierType

enum class engine::CurveModifierType
strong

Determines the behaviour of a curve.

Enumerator
absolute 
relative 
scale 

◆ AutomationMode

enum class engine::AutomationMode
strong

Determines the behaviour of writing automation.

Enumerator
read 

No writing.

touch 

Start writing on first event, punch out on gesture end.

latch 

Start writing on first event, punch out on play stop.

write 

Start writing on play start, punch out on gesture end.

◆ AutomationTrigger

enum class engine::AutomationTrigger
strong
Enumerator
touch 
value 

◆ DeleteExistingClips

enum class engine::DeleteExistingClips
strong

Determines behaviour for overwriting clips.

Enumerator
no 
yes 

◆ FollowAction

enum class engine::FollowAction
strong

Determines the type of action to perform after a Clip has played for a set period.

Enumerator
none 
globalStop 
globalReturnToArrangement 
globalPlayAgain 
trackPrevious 
trackNext 
trackFirst 
trackLast 
trackAny 
trackOther 
trackRoundRobin 
currentGroupPrevious 
currentGroupNext 
currentGroupFirst 
currentGroupLast 
currentGroupAny 
currentGroupOther 
currentGroupRoundRobin 
previousGroupFirst 
previousGroupLast 
previousGroupAny 
nextGroupFirst 
nextGroupLast 
nextGroupAny 
otherGroupFirst 
otherGroupLast 
otherGroupAny 

◆ CloseGap

enum class engine::CloseGap
strong

An enum to specify if gaps deleted should be closed or not.

Enumerator
no 

Don't move up subsequent track content.

yes 

Do move up subsequent track content.

◆ MoveClipAction

enum class engine::MoveClipAction
strong

Enum to dictate move clip behaviour.

Enumerator
moveToEndOfLast 
moveToStartOfNext 
moveStartToCursor 
moveEndToCursor 

◆ LaunchQType

enum class engine::LaunchQType
strong
Enumerator
none 
eightBars 
fourBars 
twoBars 
bar 
halfT 
half 
halfD 
quarterT 
quarter 
quarterD 
eighthT 
eighth 
eighthD 
sixteenthT 
sixteenth 
sixteenthD 
thirtySecondT 
thirtySecond 
thirtySecondD 
sixtyFourthT 
sixtyFourth 
sixtyFourthD 

◆ TimecodeType

enum class engine::TimecodeType
strong
Enumerator
millisecs 
barsBeats 
fps24 
fps25 
fps30 

◆ RenderFormat

enum class engine::RenderFormat
strong

The file format a render is written in.

The enumerator names are the format's canonical name everywhere it is written as text - JSON, config files, the command line and the scripting API - so don't rename one without migrating saved presets.

Enumerator
wav 
aiff 
flac 
ogg 
mp3 
midi 

Writes a MIDI file rather than audio.

Every audio-only setting is ignored for it.

See also
RenderSpecification::format

◆ ProjectType

enum class engine::ProjectType
strong

Selects whether a new project is stored as a single .tracktion file or as a folder on disk.

Enumerator
fileBased 

Traditional .tracktion binary project file.

folderBased 

Folder-based project that discovers items by scanning.

◆ ResamplingQuality

enum class engine::ResamplingQuality
strong

Specifies a number of resampling qualities that can be used.

Enumerator
lagrange 

Lagrange interpolation.

sincFast 

Fast sinc interpolation provided by libsamplerate.

sincMedium 

Medium quality sinc interpolation provided by libsamplerate.

sincBest 

Best quality sinc interpolation provided by libsamplerate.

◆ PanLaw

All laws have been designed to be equal-power, excluding linear respectively.

Enumerator
PanLawDefault 
PanLawLinear 
PanLaw2point5dBCenter 
PanLaw3dBCenter 
PanLaw4point5dBCenter 
PanLaw6dBCenter 

◆ AuxPosition

enum class engine::AuxPosition
strong
Enumerator
byBus 
byPosition 

◆ SettingID

enum class engine::SettingID
strong

A list of settings the engine will get and set.

Enumerator
invalid 
addAntiDenormalNoise 
audio_device_setup 
audiosettings 
audioDeviceLayoutPresets 
autoFreeze 
autoTempoMatch 
autoTempoDetect 
automapVst 
automapNative 
automapGuids1 
automapGuids2 
cacheSizeSamples 
compCrossfadeMs 
countInMode 
clickTrackMidiNoteBig 
clickTrackMidiNoteLittle 
clickTrackSampleSmall 
clickTrackSampleBig 
crossfadeBlock 
cpu 
customMidiControllers 
deadMansPedal 
defaultMidiOutDevice 
defaultWaveOutDevice 
defaultMidiInDevice 
defaultWaveInDevice 
externControlIn 
externControlOut 
externControlNum 
externControlMain 
externControlShowSelection 
externControlSelectionColour 
externControlEnable 
externOscInputPort 
externOscOutputPort 
externOscOutputAddr 
filterControlMappingPresets 
filterGui 
fitClipsToRegion 
findExamples 
freezePoint 
hasEnabledMidiDefaultDevs 
glideLength 
grooveTemplates 
knownPluginList 
knownPluginList64 
lameEncoder 
lastClickTrackLevel 
lastEditRender 
lowLatencyBuffer 
MCUoneTouchRecord 
maxLatency 
midiin 
midiout 
midiEditorOctaves 
midiProgramManager 
newMarker 
numThreadsForPluginScanning 
projectList 
projects 
recentProjects 
renameClipRenamesSource 
renameMode 
renderRecentFilesList 
resetCursorOnPlay 
retrospectiveRecord 
reWireEnabled 
safeRecord 
sendControllerOffMessages 
simplifyAfterRecording 
snapCursor 
tempDirectory 
trackExpansionMode 
use64Bit 
xFade 
xtCount 
xtIndices 
virtualmididevices 
virtualmidiin 
midiScanIntervalSeconds 
useSeparateProcessForScanning 
useRealtime 
wavein 
waveout 
windowsDoubleClick 
renderFormat 
trackRenderSampRate 
trackRenderBits 
bypassFilters 
markedRegion 
editClipRenderSampRate 
editClipRenderBits 
editClipRenderDither 
editClipRealtime 
editClipRenderStereo 
editClipRenderNormalise 
editClipRenderRMS 
editClipRenderRMSLevelDb 
editClipRenderPeakLevelDb 
editClipPassThroughFilters 
exportFormat 
renderOnlySelectedClips 
renderOnlyMarked 
renderNormalise 
renderRMS 
renderRMSLevelDb 
renderPeakLevelDb 
renderTrimSilence 
renderSampRate 
renderStereo 
renderChannelConfig 
renderBits 
renderDither 
quality 
addId3Info 
realtime 
passThroughFilters 
externControlShowClipSlotSelection 
addAcidMetadata 

Function Documentation

◆ analyseAudioFile() [1/2]

tl::expected< juce::var, juce::String > engine::analyseAudioFile ( Engine ,
const juce::File &  ,
const std::vector< AudioFileAnalyser * > &  ,
const std::function< bool()> &  shouldAbort = {} 
)

Streams an audio file once through the given analysers, returning their combined results as a JSON-style object with the file's basic properties (sampleRate, channels, seconds) always included.

All values are rounded for compactness: the output is designed to be read by an LLM.

References analyseAudioFile().

Referenced by analyseAudioFile(), and analyseAudioFile().

◆ analyseAudioFile() [2/2]

tl::expected< juce::var, juce::String > engine::analyseAudioFile ( Engine ,
const juce::File &  ,
const AudioAnalysisOptions = {} 
)

Analyses a file with the standard level/spectrum/envelope analysers.

Level stats: sample peak, oversampled true peak, RMS, EBU R128 loudness (integrated, max momentary, max short-term - BS.1770-4 K-weighting and gating), loudness range in LU (EBU Tech 3342), clipped-sample count and the ratio of silent time, plus derived dynamics statistics: crest factor, PLR, PSR and transient density. Spectrum: third-octave band energies relative to the loudest band, plus spectral centroid, 85% rolloff and low/mid/high balance. Envelope: peak and RMS in dB over evenly-spaced windows. Stereo: phase correlation (overall and worst 400ms window), stereo width and balance, mono summing loss, and a low-band (sub-200Hz) correlation and width for mono-bass checks. Null for mono files. Spectrogram: per-band level over time (broad mixing bands by default, or third-octave), each band with its own summary stats, plus detected buildups (sustained level rises within one band).

References analyseAudioFile().

◆ determineKeyOfNotes()

juce::Array< KeyResult > engine::determineKeyOfNotes ( const juce::Array< MidiNote * > &  notes)

References determineKeyOfNotes().

Referenced by determineKeyOfNotes().

◆ getAutomationMode()

AutomationMode engine::getAutomationMode ( const AutomatableParameter )

Looks for the Track this parameter is currently on and returns the AutomationMode for it.

References getAutomationMode().

Referenced by getAutomationMode().

◆ getAssignmentsOfType()

template<typename AssignmentType >
juce::ReferenceCountedArray< AssignmentType > engine::getAssignmentsOfType ( const AutomatableParameter ap)

Returns all the Assignments of a specific type.

References engine::AutomatableParameter::getAssignments(), and getAssignmentsOfType().

Referenced by getAssignmentsOfType().

◆ getModifiersOfType() [1/2]

template<typename ModifierType >
juce::Array< ModifierType * > engine::getModifiersOfType ( const AutomatableParameter ap)

Returns all the modifers in use of a specific type.

References engine::AutomatableParameter::getModifiers(), and getModifiersOfType().

Referenced by getModifiersOfType(), and getModifiersOfType().

◆ getAssignmentsForSource()

template<typename AssignmentType , typename ModifierSourceType , typename EditType >
juce::ReferenceCountedArray< AssignmentType > engine::getAssignmentsForSource ( EditType &  edit,
const ModifierSourceType &  source 
)

Iterates an Edit looking for all parameters that assigned to a given parameter.

References engine::AutomatableParameter::getAssignments(), and getAssignmentsForSource().

Referenced by getAssignmentsForSource().

◆ getSourceForAssignment()

Iterates an Edit looking for the source of this assignment.

References getSourceForAssignment().

Referenced by getSourceForAssignment().

◆ getAllParametersBeingModifiedBy()

juce::ReferenceCountedArray< AutomatableParameter > engine::getAllParametersBeingModifiedBy ( Edit ,
AutomatableParameter::ModifierSource  
)

Iterates an Edit looking for all parameters that are being modified by the given ModifierSource.

References getAllParametersBeingModifiedBy().

Referenced by getAllParametersBeingModifiedBy().

◆ getParameter() [1/2]

Iterates an Edit looking for the parameter that this ModifierAssignment has been made from.

References getParameter().

Referenced by getParameter(), and getParameter().

◆ getIntParamValue()

int engine::getIntParamValue ( const AutomatableParameter ap)

◆ getBoolParamValue()

bool engine::getBoolParamValue ( const AutomatableParameter ap)

Returns a bool version of an AutomatableParameter.

References getBoolParamValue(), and getIntParamValue().

Referenced by getBoolParamValue().

◆ getTypedParamValue()

template<typename Type >
Type engine::getTypedParamValue ( const AutomatableParameter ap)

Returns an int version of an AutomatableParameter cast to a enum type.

References getIntParamValue(), and getTypedParamValue().

Referenced by getTypedParamValue().

◆ simplify()

int engine::simplify ( AutomationCurve ,
int  strength,
EditTimeRange  ,
juce::Range< float >  valueRange,
juce::UndoManager *   
)

Removes points from the curve to simplify it and returns the number of points removed.

◆ mergeCurve()

void engine::mergeCurve ( AutomationCurve dest,
EditTimeRange  destRange,
const AutomationCurve source,
EditPosition  sourceStartTime,
float  defaultValue,
EditDuration  fadeLength,
bool  leaveOpenAtStart,
bool  leaveOpenEnded 
)

◆ getValueAt() [1/2]

float engine::getValueAt ( AutomatableParameter ,
EditPosition   
)

Returns the value of a parameter's curve at the given position.

◆ getValueAt() [2/2]

float engine::getValueAt ( AutomatableParameter ,
TimePosition   
)

Returns the value of a parameter's curve at the given position.

◆ getFullRange()

EditTimeRange engine::getFullRange ( const AutomationCurve )

Returns the range the curve occupies.

◆ toString() [1/4]

juce::String engine::toString ( CurveModifierType  )

Converts a CurveModifierType to a string if possible.

References toString().

Referenced by engine::ValueTreeComparator< Type >::compareElements(), toString(), engine::details::toString(), toString(), toString(), and toString().

◆ curveModifierTypeFromString()

std::optional< CurveModifierType > engine::curveModifierTypeFromString ( juce::String  )

Converts a string to a CurveModifierType if possible.

References curveModifierTypeFromString().

Referenced by curveModifierTypeFromString().

◆ getValuesAtEditPosition()

BaseAndModValue engine::getValuesAtEditPosition ( AutomationCurveModifier ,
AutomatableParameter ,
EditPosition   
)

Returns the base and modifier values this AutomationCurveModifier will apply at the given position.

N.B. The position is relative to the the Edit, this internally applies any CurvePosition/CurveTiming.

See also
AutomationCurveModifier::getPosition() [[ message_thread ]]

References getValuesAtEditPosition().

Referenced by getValuesAtEditPosition().

◆ getValuesAtCurvePosition()

BaseAndModValue engine::getValuesAtCurvePosition ( AutomationCurveModifier ,
AutomatableParameter ,
EditPosition   
)

Returns the base and modifier values this AutomationCurveModifier will apply at the given position.

N.B. The position is relative to the the AutomationCurveModifier, this internally applies any curve timing such as start/end and looping. [[ message_thread ]]

References getValuesAtCurvePosition().

Referenced by getValuesAtCurvePosition().

◆ getValuesAtCurvePositionUnlooped()

BaseAndModValue engine::getValuesAtCurvePositionUnlooped ( AutomationCurveModifier ,
AutomatableParameter ,
EditPosition   
)

Similar to getValuesAtCurvePosition but doesn't apply the looping which can be useful when drawing the curves.

[[ message_thread ]]

References getValuesAtCurvePositionUnlooped().

Referenced by getValuesAtCurvePositionUnlooped().

◆ applyTimingToCurvePosition()

std::optional< EditPosition > engine::applyTimingToCurvePosition ( AutomationCurveModifier ,
CurveModifierType  ,
EditPosition   
)

Takes a position relative to the AutomationCurveModifier and applies the CurveTiming to it, giving a final position relative to the AutomationCurve.

This effectively applies either the looping or start/length clipping. If the curve is in linked mode, this just returns the position unchanged.

You shouldn't normally need to use this, it's mainly for the playback graph. [[thread_safe]]

References applyTimingToCurvePosition().

Referenced by applyTimingToCurvePosition().

◆ editPositionToCurvePosition()

std::optional< EditPosition > engine::editPositionToCurvePosition ( AutomationCurveModifier ,
CurveModifierType  ,
EditPosition   
)

Converts a position relative to the Edit and applies the CurvePosition and CurveTiming to it, giving a final position relative to the AutomationCurve.

You shouldn't normally need to use this, it's mainly for the playback graph. [[thread_safe]]

References editPositionToCurvePosition().

Referenced by editPositionToCurvePosition().

◆ getDefaultValue()

float engine::getDefaultValue ( AutomatableParameter ,
CurveModifierType   
)

Returns the default value used if there is no curve for the given type.

References getDefaultValue().

Referenced by getDefaultValue().

◆ hasAnyPoints()

bool engine::hasAnyPoints ( AutomationCurveModifier )

Returns true if any of the curves have any points.

References hasAnyPoints().

Referenced by hasAnyPoints().

◆ getParameter() [2/2]

AutomatableParameter::Ptr engine::getParameter ( const AutomationCurveModifier )

Returns the destination parameter this curve is controlling.

References getParameter().

◆ getAutomationCurveModifierForID()

AutomationCurveModifier::Ptr engine::getAutomationCurveModifierForID ( Edit ,
EditItemID   
)

◆ updateRelativeDestinationOrRemove()

void engine::updateRelativeDestinationOrRemove ( AutomationCurveList ,
AutomationCurveModifier ,
Clip newParent 
)

Looks at the destinations on the given AutomationCurveModifier and tries to re-assign parameters to corresponding parameters via the newParent Clip.

You shouldn't need to call this manually, it's done in several key places internally.

References updateRelativeDestinationOrRemove().

Referenced by updateRelativeDestinationOrRemove().

◆ assignNewIDsToAutomationCurveModifiers()

void engine::assignNewIDsToAutomationCurveModifiers ( Edit ,
juce::ValueTree &   
)

Iterates over the given tree and gives new IDs to any AutomationCurveModifier states.

You shouldn't need to call this manually, it's done automatically when clips are split.

See also
split

References assignNewIDsToAutomationCurveModifiers().

Referenced by assignNewIDsToAutomationCurveModifiers().

◆ removeInvalidAutomationCurveModifiers()

void engine::removeInvalidAutomationCurveModifiers ( juce::ValueTree &  ,
const AutomatableParameter  
)

Removes any assignments in the given state if they don't have the given parameter as the destination.

You shouldn't need to call this manually, it's used internally to clean up after copy/paste operations etc..

References removeInvalidAutomationCurveModifiers().

Referenced by removeInvalidAutomationCurveModifiers().

◆ automationModeFromString()

std::optional< AutomationMode > engine::automationModeFromString ( juce::String  )

Converts an AutomationMode from a string.

References automationModeFromString().

Referenced by automationModeFromString().

◆ toString() [2/4]

juce::String engine::toString ( AutomationMode  )

Converts an AutomationMode to string.

References toString().

◆ getMacroParameterForID()

MacroParameter::Ptr engine::getMacroParameterForID ( Edit ,
EditItemID   
)

Searched the Edit for a MacroParameter with this ID.

References getMacroParameterForID().

Referenced by getMacroParameterForID().

◆ getOwnerPlugin()

juce::ReferenceCountedObjectPtr< Plugin > engine::getOwnerPlugin ( MacroParameterList )

If this MacroParameterList belongs to an Plugin, this will return it.

References getOwnerPlugin().

Referenced by getOwnerPlugin().

◆ getModifiersOfType() [2/2]

template<typename ModifierType >
juce::ReferenceCountedArray< ModifierType > engine::getModifiersOfType ( const ModifierList ml)

Returns the modifers of a specific type.

References engine::ModifierList::getModifiers(), and getModifiersOfType().

◆ findModifierForID() [1/3]

Modifier::Ptr engine::findModifierForID ( ModifierList ,
EditItemID   
)

Returns a Modifier if it can be found in the list.

References findModifierForID().

Referenced by findModifierForID(), findModifierForID(), and findModifierForID().

◆ showARAWindow()

void engine::showARAWindow ( AudioClipBase )

Shows the ARA plugin window if this clip is using an ARA plugin.

References showARAWindow().

Referenced by showARAWindow(), and showMelodyneWindow().

◆ hideARAWindow()

void engine::hideARAWindow ( AudioClipBase )

Hides the ARA plugin window if this clip is using an ARA plugin.

References hideARAWindow().

Referenced by hideARAWindow(), and hideMelodyneWindow().

◆ araConvertToMIDI()

void engine::araConvertToMIDI ( AudioClipBase )

If this clip is using an ARA plugin, this will create a new MIDI clip based on the ARA plugin's analysis.

References araConvertToMIDI().

Referenced by araConvertToMIDI(), and melodyneConvertToMIDI().

◆ showMelodyneWindow()

void engine::showMelodyneWindow ( AudioClipBase c)

◆ hideMelodyneWindow()

void engine::hideMelodyneWindow ( AudioClipBase c)

◆ melodyneConvertToMIDI()

void engine::melodyneConvertToMIDI ( AudioClipBase c)

◆ findClipForState() [1/2]

Clip * engine::findClipForState ( ClipOwner ,
const juce::ValueTree &   
)

Returns a clip with the given state if the ClipOwner contains it.

References findClipForState().

Referenced by findClipForState(), and findClipForState().

◆ findClipForID() [1/2]

Clip * engine::findClipForID ( ClipOwner ,
EditItemID   
)

Returns a clip with the given ID if the ClipOwner contains it.

References findClipForID().

Referenced by findClipForID(), and findClipForID().

◆ insertClipWithState() [1/2]

Clip * engine::insertClipWithState ( ClipOwner ,
juce::ValueTree   
)

Inserts a clip with the given state in to the ClipOwner's clip list.

References insertClipWithState().

Referenced by insertClipWithState(), and insertClipWithState().

◆ insertClipWithState() [2/2]

Clip * engine::insertClipWithState ( ClipOwner ,
const juce::ValueTree &  stateToUse,
const juce::String &  name,
TrackItem::Type  ,
ClipPosition  ,
DeleteExistingClips  ,
bool  allowSpottingAdjustment 
)

Inserts a clip with the given state in to the ClipOwner's clip list.

References insertClipWithState().

◆ insertNewClip() [1/3]

Clip * engine::insertNewClip ( ClipOwner ,
TrackItem::Type  ,
EditTimeRange   
)

Inserts a new clip with the given type and a default name.

References insertNewClip().

Referenced by insertNewClip(), insertNewClip(), and insertNewClip().

◆ insertNewClip() [2/3]

Clip * engine::insertNewClip ( ClipOwner ,
TrackItem::Type  ,
const juce::String &  name,
EditTimeRange   
)

Inserts a new clip with the given type and name.

References insertNewClip().

◆ insertNewClip() [3/3]

Clip * engine::insertNewClip ( ClipOwner ,
TrackItem::Type  ,
const juce::String &  name,
ClipPosition   
)

Inserts a new clip with the given type and name.

References insertNewClip().

◆ insertWaveClip() [1/2]

juce::ReferenceCountedObjectPtr< WaveAudioClip > engine::insertWaveClip ( ClipOwner ,
const juce::String &  name,
const juce::File &  sourceFile,
ClipPosition  ,
DeleteExistingClips   
)

Inserts a new WaveAudioClip into the ClipOwner's clip list.

References insertWaveClip().

Referenced by insertWaveClip(), and insertWaveClip().

◆ insertWaveClip() [2/2]

juce::ReferenceCountedObjectPtr< WaveAudioClip > engine::insertWaveClip ( ClipOwner ,
const juce::String &  name,
ProjectItemRef  sourceID,
ClipPosition  ,
DeleteExistingClips   
)

Inserts a new WaveAudioClip into the ClipOwner's clip list.

References insertWaveClip().

◆ insertMIDIClip() [1/2]

juce::ReferenceCountedObjectPtr< MidiClip > engine::insertMIDIClip ( ClipOwner ,
const juce::String &  name,
TimeRange   
)

Inserts a new MidiClip into the ClipOwner's clip list.

References insertMIDIClip().

Referenced by insertMIDIClip(), and insertMIDIClip().

◆ insertMIDIClip() [2/2]

juce::ReferenceCountedObjectPtr< MidiClip > engine::insertMIDIClip ( ClipOwner ,
TimeRange   
)

Inserts a new MidiClip into the ClipOwner's clip list.

References insertMIDIClip().

◆ insertEditClip()

juce::ReferenceCountedObjectPtr< EditClip > engine::insertEditClip ( ClipOwner ,
TimeRange  ,
ProjectItemRef   
)

Inserts a new EditClip into the ClipOwner's clip list.

References insertEditClip().

Referenced by insertEditClip().

◆ deleteRegion() [1/2]

juce::Array< Clip * > engine::deleteRegion ( ClipOwner ,
TimeRange   
)

Removes a region of a ClipOwner and returns any newly created clips.

References deleteRegion().

Referenced by engine::AppFunctions::deleteRegion(), deleteRegion(), and deleteRegion().

◆ deleteRegion() [2/2]

juce::Array< Clip * > engine::deleteRegion ( Clip ,
TimeRange   
)

Removes a region of a clip and returns any newly created clips.

References deleteRegion().

◆ split() [1/2]

juce::Array< Clip * > engine::split ( ClipOwner ,
TimePosition   
)

Splits the given clp owner at the time and returns any newly created clips.

References split().

Referenced by engine::AppFunctions::split(), split(), and split().

◆ split() [2/2]

Clip * engine::split ( Clip ,
TimePosition   
)

Splits the given clip at the time and returns the newly created clip.

References split().

◆ containsAnyMIDIClips()

bool engine::containsAnyMIDIClips ( const ClipOwner )

Returns true if the clip owner contains any MIDI clips.

References containsAnyMIDIClips(), getClipsOfType(), and getClipsOfTypeRecursive().

Referenced by containsAnyMIDIClips().

◆ getClipsOfType()

template<typename ClipType >
juce::Array< ClipType * > engine::getClipsOfType ( const ClipOwner parent)

Returns the subclips of the given type.

References engine::ClipOwner::getClips(), and getClipsOfType().

Referenced by containsAnyMIDIClips(), and getClipsOfType().

◆ getClipsOfTypeRecursive()

template<typename ClipType >
juce::Array< ClipType * > engine::getClipsOfTypeRecursive ( const ClipOwner parent)

Returns the subclips of the given type, if any clips contain other clips, this will also return those.

References engine::ClipOwner::getClips(), and getClipsOfTypeRecursive().

Referenced by containsAnyMIDIClips(), and getClipsOfTypeRecursive().

◆ isMasterTrack()

bool engine::isMasterTrack ( const Track )

Returns true if this is a MasterTrack.

References isMasterTrack().

Referenced by engine::Track::canContainPlugins(), and isMasterTrack().

◆ isTempoTrack()

bool engine::isTempoTrack ( const Track )

Returns true if this is a TempoTrack.

References isTempoTrack().

Referenced by isTempoTrack().

◆ isAutomationTrack()

bool engine::isAutomationTrack ( const Track )

Returns true if this is an AutomationTrack.

References isAutomationTrack().

Referenced by isAutomationTrack().

◆ isAudioTrack() [1/2]

bool engine::isAudioTrack ( const Track )

◆ isFolderTrack() [1/2]

bool engine::isFolderTrack ( const Track )

◆ isMarkerTrack() [1/2]

bool engine::isMarkerTrack ( const Track )

◆ isChordTrack() [1/2]

bool engine::isChordTrack ( const Track )

Returns true if this is a ChordTrack.

References isChordTrack().

Referenced by isChordTrack(), isChordTrack(), and engine::Track::wantsAutomation().

◆ isArrangerTrack() [1/2]

bool engine::isArrangerTrack ( const Track )

Returns true if this is an ArrangerTrack.

References isArrangerTrack().

Referenced by isArrangerTrack(), isArrangerTrack(), and engine::Track::wantsAutomation().

◆ isAudioTrack() [2/2]

bool engine::isAudioTrack ( const ClipOwner )

Returns true if this is an AudioTrack.

References isAudioTrack().

◆ isFolderTrack() [2/2]

bool engine::isFolderTrack ( const ClipOwner )

Returns true if this is a FolderTrack.

References isFolderTrack().

◆ isMarkerTrack() [2/2]

bool engine::isMarkerTrack ( const ClipOwner )

Returns true if this is a MarkerTrack.

References isMarkerTrack().

◆ isChordTrack() [2/2]

bool engine::isChordTrack ( const ClipOwner )

Returns true if this is a ChordTrack.

References isChordTrack().

◆ isArrangerTrack() [2/2]

bool engine::isArrangerTrack ( const ClipOwner )

Returns true if this is an ArrangerTrack.

References isArrangerTrack().

◆ canContainMIDI()

bool engine::canContainMIDI ( const ClipOwner )

Returns true if this Track can contain MidiClip[s].

References canContainMIDI().

Referenced by canContainMIDI().

◆ canContainAudio()

bool engine::canContainAudio ( const ClipOwner )

Returns true if this Track can contain WaveAudioClip[s].

References canContainAudio().

Referenced by canContainAudio().

◆ isMovable()

bool engine::isMovable ( const Track )

Returns true if this Track is movable.

See also
AudioTrack, FolderTrack

References isMovable().

Referenced by isMovable().

◆ isOnTop()

bool engine::isOnTop ( const Track )

Returns true if this a global Track and should be on top of others.

See also
MarkerTrack, TempoTrack

References isOnTop().

Referenced by isOnTop().

◆ followActionFromString()

std::optional< FollowAction > engine::followActionFromString ( juce::String  )

Converts a string to a FollowAction if possible.

References followActionFromString().

Referenced by followActionFromString().

◆ toString() [3/4]

juce::String engine::toString ( FollowAction  )

Converts a FollowAction to a string if possible.

References toString().

◆ createFollowAction()

std::function< void(MonotonicBeat)> engine::createFollowAction ( Clip )

Creates a follow action for a Clip.

References createFollowAction().

Referenced by createFollowAction().

◆ mergeInMidiSequence()

void engine::mergeInMidiSequence ( MidiClip ,
juce::MidiMessageSequence  ,
TimeDuration  offsetToApply,
MidiList::NoteAutomationType   
)

Copies a zero-time origin based MIDI sequence in to a MidiClip.

This zill extend the start and end of the clip to fit the whole sequence.

Parameters
MidiClipThe destination clip
MidiMessageSequenceThe zero-based MIDI sequence
offsetToApplyAn offset to apply to all MIDI message timestamps
NoteAutomationTypeWhether to use standard MIDI or MPE

References mergeInMidiSequence().

Referenced by mergeInMidiSequence().

◆ loadEditFromFile() [1/2]

std::unique_ptr< Edit > engine::loadEditFromFile ( Engine ,
const juce::File &  ,
Edit::EditRole  role = Edit::EditRole::forEditing,
Edit::LoadContext = nullptr 
)

Loads an edit from a file, ready for playback / editing.

References loadEditFromFile().

Referenced by loadEditFromFile(), loadEditFromFile(), and engine::benchmark_utilities::openEditfromArchiveData().

◆ loadEditFromState()

std::unique_ptr< Edit > engine::loadEditFromState ( Engine ,
const juce::ValueTree &  ,
Edit::EditRole  role = Edit::EditRole::forEditing,
Edit::LoadContext = nullptr 
)

Loads an edit from a ValueTree, ready for playback / editing.

References loadEditFromState().

Referenced by loadEditFromState().

◆ createEmptyEdit() [1/2]

std::unique_ptr< Edit > engine::createEmptyEdit ( Engine ,
const juce::File &   
)

Creates a new edit for a file, ready for playback / editing.

References createEmptyEdit().

Referenced by createEmptyEdit(), and createEmptyEdit().

◆ loadEditFromProjectManager()

juce::ValueTree engine::loadEditFromProjectManager ( ProjectManager ,
ProjectItemRef   
)

Uses the ProjectManager to find an Edit file and load it as a ValueTree.

References loadEditFromProjectManager().

Referenced by loadEditFromProjectManager().

◆ loadEditForExamining()

std::unique_ptr< Edit > engine::loadEditForExamining ( ProjectManager ,
ProjectItemRef  ,
Edit::EditRole  role = Edit::EditRole::forExamining,
Edit::LoadContext = nullptr 
)

Uses the ProjectManager to find an Edit file and open it.

If the ref is ID-based, looks up via ProjectManager. If the ref is path-based with an owner project, resolves the file directly.

References loadEditForExamining().

Referenced by loadEditForExamining().

◆ loadEditFromFile() [2/2]

juce::ValueTree engine::loadEditFromFile ( Engine ,
const juce::File &  ,
ProjectItemRef   
)

Legacy, will be deprecated soon.

Use version that returns an edit. Loads a ValueTree from a file to load an Edit. If the file is empty, a new Edit state will be created with the given ProjectItemID.

References loadEditFromFile().

◆ createEmptyEdit() [2/2]

juce::ValueTree engine::createEmptyEdit ( Engine )

Legacy, will be deprecated soon.

Use version that returns an edit. Creates an empty Edit with no project.

References createEmptyEdit(), and updateLegacyEdit().

◆ updateLegacyEdit() [1/2]

juce::ValueTree engine::updateLegacyEdit ( const juce::ValueTree &  v)

Converts old edit formats to the latest structure.

References updateLegacyEdit().

Referenced by createEmptyEdit(), updateLegacyEdit(), and updateLegacyEdit().

◆ updateLegacyEdit() [2/2]

void engine::updateLegacyEdit ( juce::XmlElement &  editXML)

Converts old edit formats to the latest structure.

References updateLegacyEdit().

◆ getProjectForEdit()

Project::Ptr engine::getProjectForEdit ( const Edit )

Tries to find the project that contains this edit (but may return nullptr!)

References getProjectForEdit().

Referenced by getProjectForEdit().

◆ getProjectItemForEdit()

ProjectItem::Ptr engine::getProjectItemForEdit ( const Edit )

Tries to find the project item that refers to this edit (but may return nullptr!)

References getProjectItemForEdit().

Referenced by getProjectItemForEdit().

◆ getEditFileFromProjectManager()

juce::File engine::getEditFileFromProjectManager ( Edit )

Uses the ProjectManager to look up the file for an Edit.

References getEditFileFromProjectManager().

Referenced by getEditFileFromProjectManager().

◆ referencesProjectItem()

bool engine::referencesProjectItem ( Edit ,
ProjectItemRef   
)

Returns true if the ProjectItemRef is being used for any of the Edit's elements.

References referencesProjectItem().

Referenced by referencesProjectItem().

◆ convertAllSourcePaths()

void engine::convertAllSourcePaths ( Edit ,
bool  useRelativePaths 
)

Converts all clip source paths in an Edit to relative or absolute paths.

References convertAllSourcePaths().

Referenced by convertAllSourcePaths().

◆ insertSpaceIntoEdit()

void engine::insertSpaceIntoEdit ( Edit ,
TimeRange  timeRangeToInsert,
const juce::Array< Track * > &  onlyTheseTracks = {} 
)

Inserts blank space in to an Edit, splitting clips if necessary.

If onlyTheseTracks is provided, only those tracks are affected; otherwise all tracks are.

References insertSpaceIntoEdit().

Referenced by insertSpaceIntoEdit().

◆ insertSpaceIntoEditFromBeatRange()

void engine::insertSpaceIntoEditFromBeatRange ( Edit ,
BeatRange   
)

Inserts a number of blank beats in to the Edit.

References insertSpaceIntoEditFromBeatRange().

Referenced by insertSpaceIntoEditFromBeatRange().

◆ findEditItemForID()

EditItem * engine::findEditItemForID ( Edit ,
EditItemID   
)

Looks for an item in an edit with a given ID.

References findEditItemForID().

Referenced by findEditItemForID().

◆ getAllTracks()

juce::Array< Track * > engine::getAllTracks ( const Edit )

Returns all the tracks in an Edit.

References getAllTracks().

Referenced by getAllTracks().

◆ getTopLevelTracks()

juce::Array< Track * > engine::getTopLevelTracks ( const Edit )

Returns all of the non-foldered tracks in an Edit.

References getTopLevelTracks(), and getTracksOfType().

Referenced by getTopLevelTracks().

◆ getTracksOfType()

template<typename TrackType >
juce::Array< TrackType * > engine::getTracksOfType ( const Edit edit,
bool  recursive 
)

Returns the tracks of a given type in an Edit.

References getTracksOfType(), and engine::Edit::visitAllTracks().

Referenced by getTopLevelTracks(), and getTracksOfType().

◆ getAudioTracks()

juce::Array< AudioTrack * > engine::getAudioTracks ( const Edit )

Returns all the AudioTracks in an Edit.

References getAudioTracks().

Referenced by getAudioTracks().

◆ getClipTracks()

juce::Array< ClipTrack * > engine::getClipTracks ( const Edit )

Returns all the ClipTracks in an Edit.

References getClipTracks().

Referenced by getClipTracks().

◆ getTotalNumTracks()

int engine::getTotalNumTracks ( const Edit )

Returns the total number of Tracks in an Edit.

References getTotalNumTracks().

Referenced by getTotalNumTracks().

◆ findTrackForID()

Track * engine::findTrackForID ( const Edit ,
EditItemID   
)

Returns the Track with a given ID if contained in the Edit.

References findTrackForID().

Referenced by findTrackForID().

◆ findAudioTrackForID()

AudioTrack * engine::findAudioTrackForID ( const Edit ,
EditItemID   
)

Returns the AudioTrack with a given ID if contained in the Edit.

References findAudioTrackForID().

Referenced by findAudioTrackForID().

◆ findTracksForIDs()

juce::Array< Track * > engine::findTracksForIDs ( const Edit ,
const juce::Array< EditItemID > &   
)

Returns the Tracks for the given IDs in the Edit.

References findTracksForIDs().

Referenced by findTracksForIDs().

◆ findTrackForState()

Track * engine::findTrackForState ( const Edit ,
const juce::ValueTree &   
)

Returns the Track with a given state if contained in the Edit.

References findTrackForState().

Referenced by findTrackForState().

◆ getFirstAudioTrack()

AudioTrack * engine::getFirstAudioTrack ( const Edit )

Returns the first audio track in an Edit.

References getFirstAudioTrack().

Referenced by getFirstAudioTrack().

◆ findAllTracksContainingSelectedItems()

juce::Array< Track * > engine::findAllTracksContainingSelectedItems ( const SelectableList )

Returns all the tracks containing the selected tracks or TrackItems.

References findAllTracksContainingSelectedItems().

Referenced by findAllTracksContainingSelectedItems().

◆ findFirstClipTrackFromSelection()

ClipTrack * engine::findFirstClipTrackFromSelection ( const SelectableList )

Returns the first ClipTrack from the selected tracks or clips.

References findFirstClipTrackFromSelection().

Referenced by findFirstClipTrackFromSelection().

◆ containsTrack()

bool engine::containsTrack ( const Edit ,
const Track  
)

Returns true if the Edit contains this Track.

References containsTrack().

Referenced by containsTrack().

◆ getTrackOutput()

TrackOutput * engine::getTrackOutput ( Track )

Returns the TrackOutput if the given track has one.

References getTrackOutput().

Referenced by getTrackOutput().

◆ toBitSet()

juce::BigInteger engine::toBitSet ( const juce::Array< Track * > &  )

Returns the given tracks as a BigInteger, with each set bit corresponding to a track's index in the Edit's array of all tracks (.

See also
getAllTracks). The Edit is taken from the first track in the array; any tracks not in that Edit are ignored. Used in Renderer.

References toBitSet().

Referenced by toBitSet().

◆ toTrackArray()

juce::Array< Track * > engine::toTrackArray ( Edit ,
const juce::BigInteger &   
)

Returns an Array of Track[s] corresponding to the set bits of all tracks in an Edit.

Used in Renderer.

References getTrackItemsOfType(), and toTrackArray().

Referenced by toTrackArray().

◆ getTrackItemsOfType()

template<typename TrackItemType >
juce::Array< TrackItemType * > engine::getTrackItemsOfType ( const Track track)

◆ findClipOwnerForID()

ClipOwner * engine::findClipOwnerForID ( const Edit ,
EditItemID   
)

Returns the ClipOwner with a given ID if it can be found in the Edit.

References findClipOwnerForID().

Referenced by findClipOwnerForID().

◆ findClipSlotForID()

ClipSlot * engine::findClipSlotForID ( const Edit ,
EditItemID   
)

Returns the ClipSlot for the given ID.

References findClipSlotForID().

Referenced by findClipSlotForID().

◆ findClipSlotIndex()

int engine::findClipSlotIndex ( ClipSlot )

Returns the index of the ClipSlot in the list it is owned by.

References findClipSlotIndex().

Referenced by findClipSlotIndex().

◆ findClipForID() [2/2]

Clip * engine::findClipForID ( const Edit ,
EditItemID   
)

Returns the Clip with a given ID if contained in the Edit.

References findClipForID().

◆ findClipForState() [2/2]

Clip * engine::findClipForState ( const Edit ,
const juce::ValueTree &   
)

Returns the Clip for a given state if contained in the Edit.

References findClipForState().

◆ containsClip()

bool engine::containsClip ( const Edit ,
Clip  
)

Returns true if an Edit contains a given clip.

References containsClip().

Referenced by containsClip().

◆ duplicateClip()

Clip::Ptr engine::duplicateClip ( const Clip )

Creates a unique copy of this clip with a new EditItemID.

References duplicateClip().

Referenced by duplicateClip().

◆ visitAllTrackItems()

void engine::visitAllTrackItems ( const Edit ,
std::function< bool(TrackItem &)>   
)

Calls a function for all TrackItems in an Edit.

References visitAllTrackItems().

Referenced by visitAllTrackItems().

◆ getTimeRangeForSelectedItems()

TimeRange engine::getTimeRangeForSelectedItems ( const SelectableList )

Returns the time range covered by the given items.

References getTimeRangeForSelectedItems().

Referenced by getTimeRangeForSelectedItems().

◆ deleteRegionOfTracks()

void engine::deleteRegionOfTracks ( Edit ,
TimeRange  rangeToDelete,
bool  onlySelectedTracks,
CloseGap  ,
SelectionManager  
)

Deletes a time range of an Edit, optionally closing the gap.

References deleteRegionOfTracks().

Referenced by deleteRegionOfTracks().

◆ deleteRegionOfClip()

void engine::deleteRegionOfClip ( Clip ,
TimeRange  rangeToDelete 
)

Deletes a time range of a Clip.

References deleteRegionOfClip().

Referenced by deleteRegionOfClip().

◆ deleteRegionOfSelectedClips()

void engine::deleteRegionOfSelectedClips ( SelectionManager ,
TimeRange  rangeToDelete,
CloseGap  ,
bool  moveAllSubsequentClipsOnTrack 
)

Deletes a time range of a Clip selection, optionally closing the gap.

References deleteRegionOfSelectedClips().

Referenced by deleteRegionOfSelectedClips().

◆ splitClips()

SelectableList engine::splitClips ( const SelectableList clips,
TimePosition  time 
)

Splits the clips at a given time.

References splitClips().

Referenced by splitClips().

◆ moveSelectedClips()

void engine::moveSelectedClips ( const SelectableList ,
Edit ,
MoveClipAction  mode,
bool  alsoMoveAutomation 
)

Moves the selected clips within their track.

References moveSelectedClips().

Referenced by moveSelectedClips().

◆ getClipSelectionWithCollectionClipContents()

SelectableList engine::getClipSelectionWithCollectionClipContents ( const SelectableList )

Returns a list of clips.

If any of these are collection clips, this will return their contained clips.

References getClipSelectionWithCollectionClipContents().

Referenced by getClipSelectionWithCollectionClipContents().

◆ getAllClipEffects()

juce::Array< ClipEffect * > engine::getAllClipEffects ( Edit edit)

Returns all clip effects.

References getAllClipEffects().

Referenced by getAllClipEffects().

◆ findNoteForState()

MidiNote * engine::findNoteForState ( const Edit ,
const juce::ValueTree &   
)

Returns the MidiNote with a given state.

References findNoteForState().

Referenced by findNoteForState().

◆ mergeMidiClips()

juce::Result engine::mergeMidiClips ( juce::Array< MidiClip * >  ,
SelectionManager sm = nullptr 
)

Merges a set of MIDI clips in to one new one.

References mergeMidiClips().

Referenced by mergeMidiClips().

◆ readFileToMidiList()

juce::OwnedArray< MidiList > engine::readFileToMidiList ( juce::File  midiFile,
bool  importAsNoteExpression 
)

Helper function to read a file to a number of MidiLists.

References readFileToMidiList().

Referenced by readFileToMidiList().

◆ createClipFromFile()

MidiClip::Ptr engine::createClipFromFile ( juce::File  midiFile,
ClipOwner ,
bool  importAsNoteExpression 
)

Helper function to read a MIDI file and create a MidiClip from it.

N.B. This will only use the first track in the file, any other tracks will be discarded. The clip will be positioned at 0 with a beat length the duration of the imported list.

References createClipFromFile().

Referenced by createClipFromFile().

◆ getAllPlugins()

Plugin::Array engine::getAllPlugins ( const Edit ,
bool  includeMasterVolume 
)

Returns all the plugins in a given Edit.

References getAllPlugins().

Referenced by getAllPlugins().

◆ findPluginForState()

Plugin::Ptr engine::findPluginForState ( const Edit ,
const juce::ValueTree &   
)

Returns the plugin with given state.

References findPluginForState().

Referenced by findPluginForState().

◆ findPluginForID()

Plugin::Ptr engine::findPluginForID ( const Edit ,
EditItemID   
)

Returns the plugin with given EditItemID.

References findPluginForID().

Referenced by findPluginForID().

◆ getTrackContainingPlugin()

Track * engine::getTrackContainingPlugin ( const Edit ,
const Plugin  
)

Returns the track for the track which the plugin is located on.

References getTrackContainingPlugin().

Referenced by getTrackContainingPlugin().

◆ areAnyPluginsMissing()

bool engine::areAnyPluginsMissing ( const Edit )

Returns true if any plugins couldn't be loaded beacuse their files are missing.

References areAnyPluginsMissing().

Referenced by areAnyPluginsMissing().

◆ getRackInstancesInEditForType()

juce::Array< RackInstance * > engine::getRackInstancesInEditForType ( const RackType )

Returns all of the instances of a specific RackType in an Edit.

References getRackInstancesInEditForType().

Referenced by getRackInstancesInEditForType().

◆ muteOrUnmuteAllPlugins()

void engine::muteOrUnmuteAllPlugins ( const Edit )

Toggles the enabled state of all plugins in an Edit.

References muteOrUnmuteAllPlugins().

Referenced by muteOrUnmuteAllPlugins().

◆ midiPanic()

void engine::midiPanic ( Edit ,
bool  resetPlugins 
)

Performs a "MIDI panic" on the edit, by sending all-note-off messages directly to all plugins in the edit, and optionally resetting them to kill any reverb tails, etc.

References insertNewPlugin(), and midiPanic().

Referenced by midiPanic().

◆ insertNewPlugin()

template<typename PluginType >
juce::ReferenceCountedObjectPtr< PluginType > engine::insertNewPlugin ( Track track,
int  index 
)

Adds a new instance of the given plugin to the track's plugin list at the specified index.

References engine::PluginCache::createNewPlugin(), engine::EditItem::edit, engine::Edit::getPluginCache(), insertNewPlugin(), engine::PluginList::insertPlugin(), and engine::Track::pluginList.

Referenced by insertNewPlugin(), and midiPanic().

◆ getAllAutomatableEditItems()

std::vector< AutomatableEditItem * > engine::getAllAutomatableEditItems ( const Edit )

Returns all AutomatableEditItems in an Edit.

References getAllAutomatableEditItems().

Referenced by getAllAutomatableEditItems().

◆ deleteAutomation()

void engine::deleteAutomation ( const SelectableList selectedClips)

Deletes the automation covered by the selected clips.

References deleteAutomation().

Referenced by deleteAutomation().

◆ getAllModifierSources()

juce::Array< AutomatableParameter::ModifierSource * > engine::getAllModifierSources ( const Edit )

Returns all the ModifierSources in an Edit.

References getAllModifierSources().

Referenced by getAllModifierSources().

◆ getAllModifiers()

juce::ReferenceCountedArray< Modifier > engine::getAllModifiers ( const Edit )

Returns all the Modifiers in an Edit.

References findModifierTypeForID(), and getAllModifiers().

Referenced by findModifierTypeForID(), and getAllModifiers().

◆ findModifierTypeForID()

template<typename ModifierType >
ModifierType::Ptr engine::findModifierTypeForID ( const Edit edit,
EditItemID  id 
)

Returns the Modifier with a given type and ID.

References findModifierTypeForID(), and getAllModifiers().

Referenced by findModifierTypeForID(), and getAllModifiers().

◆ findModifierForID() [2/3]

Modifier::Ptr engine::findModifierForID ( const Edit ,
EditItemID   
)

Returns the Modifier with a given ID.

References findModifierForID().

◆ findModifierForID() [3/3]

Modifier::Ptr engine::findModifierForID ( const RackType ,
EditItemID   
)

Returns the Modifier with a given ID if the RackType contains it.

References findModifierForID().

◆ getTrackContainingModifier()

Track * engine::getTrackContainingModifier ( const Edit ,
const Modifier::Ptr  
)

Returns the Track containing a Modifier.

References getTrackContainingModifier().

Referenced by getTrackContainingModifier().

◆ getTrackShowingParameter()

Track * engine::getTrackShowingParameter ( AutomatableParameter )

Returns the Track that is currently showing an AutomatableParameter's curve.

First tries param.getTrack(), then searches all tracks for one displaying this parameter.

References getTrackShowingParameter().

Referenced by getTrackShowingParameter().

◆ getAllMacroParameterLists()

juce::Array< MacroParameterList * > engine::getAllMacroParameterLists ( const Edit )

Returns all the MacroParameterLists in an Edit.

References getAllMacroParameterLists().

Referenced by getAllMacroParameterLists().

◆ getAllMacroParameterElements()

juce::Array< MacroParameterElement * > engine::getAllMacroParameterElements ( const Edit )

◆ getDefaultRecordingParameters()

InputDeviceInstance::RecordingParameters engine::getDefaultRecordingParameters ( const EditPlaybackContext ,
TimePosition  playStart,
TimePosition  punchIn 
)

Returns the default set of recording parameters.

This behaviour may not be desirable in which case it might make more sense to just construct your own RecordingParameters and pass them to InputDeviceInstance::prepareToRecord.

References getDefaultRecordingParameters().

Referenced by getDefaultRecordingParameters().

◆ prepareAndPunchRecord()

juce::Result engine::prepareAndPunchRecord ( InputDeviceInstance ,
EditItemID   
)

Starts an InputDeviceInstance recording to the given target without any count-in etc.

N.B. The input must already be assigned to the target and armed for the punch to start.

References prepareAndPunchRecord().

Referenced by prepareAndPunchRecord().

◆ punchOutRecording()

tl::expected< Clip::Array, juce::String > engine::punchOutRecording ( InputDeviceInstance )

If the instance is currently recording, this will stop it and return any created clips or an error message.

References punchOutRecording().

Referenced by punchOutRecording().

◆ isRecording()

bool engine::isRecording ( EditPlaybackContext )

Returns true if any inputs are currently recording.

References isRecording().

Referenced by engine::AutomatableParameter::isCurrentlyRecording(), and isRecording().

◆ assignTrackAsInput()

InputDeviceInstance::Destination * engine::assignTrackAsInput ( AudioTrack destinationTrack,
const AudioTrack sourceTrack,
InputDevice::DeviceType   
)

Creates an InputDeviceInstance::Destination on the destinationTrack from the sourceTrack if possible.

References assignTrackAsInput().

Referenced by assignTrackAsInput().

◆ getEdit()

template<typename Type >
requires (std::is_same_v<Type, Edit> || requires (Type t) { t.edit; } || requires (Type t) { t.getEdit(); })
Edit & engine::getEdit ( Type &  type)

Returns a reference to the Edit if accessible by the given object.

Referenced by getTempoSequence(), getUndoManager(), and engine::AirWindowsAutomatableParameter::markAsChanged().

◆ getTempoSequence()

TempoSequence & engine::getTempoSequence ( auto &  type)

◆ getUndoManager()

juce::UndoManager & engine::getUndoManager ( auto &  type)

◆ getUndoManager_p()

juce::UndoManager * engine::getUndoManager_p ( auto &  type)

References getUndoManager(), and getUndoManager_p().

Referenced by getUndoManager_p().

◆ getLaunchQTypeChoices()

juce::StringArray engine::getLaunchQTypeChoices ( )

Returns a list of quantisation type options in the order of LaunchQType.

References getLaunchQTypeChoices().

Referenced by getLaunchQTypeChoices().

◆ launchQTypeFromName()

std::optional< LaunchQType > engine::launchQTypeFromName ( const juce::String &  )

Returns a the launch Q from a string returned from getLaunchQTypeChoices().

References launchQTypeFromName().

Referenced by launchQTypeFromName().

◆ getName()

juce::String engine::getName ( LaunchQType  )

◆ toBarFraction()

double engine::toBarFraction ( LaunchQType  )
noexcept

Returns the fraction of a bar to be used for a given rate type.

References toBarFraction().

Referenced by toBarFraction().

◆ fromBarFraction()

LaunchQType engine::fromBarFraction ( double  )
noexcept

Returns the fraction of a bar to be used for a given rate type.

References fromBarFraction().

Referenced by fromBarFraction().

◆ getNext() [1/2]

BeatPosition engine::getNext ( LaunchQType  ,
const TempoSequence ,
BeatPosition   
)
noexcept

Returns the next quantised position.

References getNext().

Referenced by getNext(), and getNext().

◆ getNext() [2/2]

BeatPosition engine::getNext ( LaunchQType  ,
const tempo::Sequence &  ,
BeatPosition   
)
noexcept

Returns the next quantised position.

References getNext().

◆ operator<() [1/2]

bool engine::operator< ( const PitchSetting p1,
const PitchSetting p2 
)
noexcept

◆ createPosition()

tempo::Sequence::Position engine::createPosition ( const TempoSequence )

Creates a Position to iterate over the given TempoSequence.

One of these lets you take a position in a tempo sequence, and skip forwards/backwards either by absolute times, or by bar/beat amounts. This is dynamic and if the TempoSequence changes, the position will update to reflect this.

N.B. It is only safe to call this from the message thread or during audio callbacks. Access at any other time could incur data races.

References createPosition().

Referenced by createPosition().

◆ isLegacyArchive()

bool engine::isLegacyArchive ( Engine ,
const juce::File &   
)

Returns true if the file is a legacy .trkarch archive.

References isLegacyArchive().

Referenced by isLegacyArchive().

◆ isArchive()

bool engine::isArchive ( Engine ,
const juce::File &   
)

Returns true if the file is any supported archive format (legacy or zip).

References isArchive().

Referenced by isArchive().

◆ createAcidInfo()

juce::StringPairArray engine::createAcidInfo ( Edit ,
TimeRange   
)

Creates ACID metadata info from the Edit.

References createAcidInfo().

Referenced by createAcidInfo().

◆ renderFormatFromString()

std::optional< RenderFormat > engine::renderFormatFromString ( juce::String  )

Converts a RenderFormat from its canonical name, or nullopt if unrecognised.

References renderFormatFromString().

Referenced by renderFormatFromString().

◆ toString() [4/4]

juce::String engine::toString ( RenderFormat  )

Converts a RenderFormat to its canonical name.

References toString().

◆ isMidiFormat()

bool engine::isMidiFormat ( RenderFormat  f)

True for the format that writes notes rather than audio.

References isMidiFormat().

Referenced by isMidiFormat().

◆ createTagMetadata()

juce::StringPairArray engine::createTagMetadata ( Edit )

Returns an Edit's tag metadata - title, artist, album, date, genre, comment and track number - as the canonical "id3*" key/value pairs.

These names are the single vocabulary tags are written in everywhere a render carries them (presets, config files and the scripting API), whatever the output format turns out to be: translateMetadataForFormat() converts them to whatever the format's writer actually understands. Empty fields are left out - but note getEditMetadata() fills the date in with the current year, so an Edit with no tags at all still gets a date.

See also
Edit::getEditMetadata, translateMetadataForFormat

References createTagMetadata().

Referenced by createTagMetadata().

◆ hasTagMetadata()

bool engine::hasTagMetadata ( Edit )

True if an Edit has actually been given any tags, which is what decides whether tagging is enabled by default.

This is not the same as createTagMetadata() returning something - that always carries a date.

References hasTagMetadata().

Referenced by hasTagMetadata().

◆ formatSupportsTagMetadata()

bool engine::formatSupportsTagMetadata ( RenderFormat  )

True if a format's writer can carry tag metadata at all: wav (in a RIFF INFO chunk), ogg (Vorbis comments) and mp3 (ID3) can; aiff and flac have no metadata support in their writers, and a MIDI file has nowhere to put it.

References formatSupportsTagMetadata().

Referenced by formatSupportsTagMetadata().

◆ translateMetadataForFormat()

juce::StringPairArray engine::translateMetadataForFormat ( const juce::StringPairArray &  ,
RenderFormat   
)

Converts canonical "id3*" tag pairs to the keys a format's writer understands: passed through unchanged for ogg and mp3, mapped to the WAV writer's RIFF INFO names for wav, and dropped for the formats which can't carry tags.

Pairs outside the "id3*" family - ACID or BWAV info, say - are always passed through untouched, so this can be applied to a whole metadata set.

References translateMetadataForFormat().

Referenced by translateMetadataForFormat().

◆ validateRenderSpecification()

juce::Result engine::validateRenderSpecification ( Edit ,
const RenderSpecification  
)

Checks a specification can be rendered from the given Edit, returning a failure result describing the first problem found.

References validateRenderSpecification().

Referenced by validateRenderSpecification().

◆ findStemSourceTracks()

juce::Array< EditItemID > engine::findStemSourceTracks ( Edit ,
const juce::Array< EditItemID > &  stemTracks 
)

Finds the tracks a stem render depends on for its sound but which aren't part of the stem itself: sidechain sources of the stem's plugins, tracks with an aux send feeding an aux return in the stem, and tracks hosting instances of a rack the stem shares (a rack is processed once, fed by all its instances).

The search runs to a fixpoint, so sources of sources are found too, and looks inside the stem's submix folders.

Render the returned tracks via RenderSpecification::mutedTracks: included in the graph, silenced in the output. Tracks that merely route their output into the stem's tracks are NOT returned - the render graph pulls those in by itself.

References findStemSourceTracks().

Referenced by findStemSourceTracks().

◆ createRenderJob()

std::optional< PlannedRenderJob > engine::createRenderJob ( Edit ,
const RenderSpecification  
)

Creates the render job for a valid specification.

Call validateRenderSpecification() first: an invalid specification returns nullopt.

References createRenderJob().

Referenced by createRenderJob().

◆ createPerTrackSpecifications()

std::vector< RenderSpecification > engine::createPerTrackSpecifications ( Edit ,
const RenderSpecification base,
const juce::File &  directory 
)

Creates one specification per track from a template, for rendering each track to its own file in the given directory.

The template's tracks list chooses which tracks (all audio tracks if empty); its destination is ignored. File names come from the track names, uniquified against each other and against existing files.

References createPerTrackSpecifications().

Referenced by createPerTrackSpecifications().

◆ toBeats() [1/8]

BeatPosition engine::toBeats ( TimePosition  ,
const TempoSequence  
)

Converts a TimePosition to a BeatPosition given a TempoSequence.

References toBeats().

Referenced by equals(), max(), min(), minus(), minus(), plus(), toBeats(), toBeats(), toBeats(), and toBeats().

◆ toBeats() [2/8]

BeatPosition engine::toBeats ( TimePosition  ,
const tempo::Sequence &   
)

References toBeats().

◆ toTime() [1/8]

TimePosition engine::toTime ( BeatPosition  ,
const TempoSequence  
)

Converts a BeatPosition to a TimePosition given a TempoSequence.

References toTime().

Referenced by equals(), greater(), greaterThanOrEqualTo(), less(), lessThanOrEqualTo(), max(), min(), minus(), minus(), plus(), toTime(), toTime(), toTime(), and toTime().

◆ toTime() [2/8]

TimePosition engine::toTime ( BeatPosition  ,
const tempo::Sequence &   
)

References toTime().

◆ toBeats() [3/8]

BeatRange engine::toBeats ( TimeRange  ,
const TempoSequence  
)

Converts a TimeRange to a BeatRange given a TempoSequence.

References toBeats().

◆ toBeats() [4/8]

BeatRange engine::toBeats ( TimeRange  ,
const tempo::Sequence &   
)

References toBeats().

◆ toTime() [3/8]

TimeRange engine::toTime ( BeatRange  ,
const TempoSequence  
)

Converts a BeatRange to a TimeRange given a TempoSequence.

References toTime().

◆ toTime() [4/8]

TimeRange engine::toTime ( BeatRange  ,
const tempo::Sequence &   
)

References toTime().

◆ toPosition()

EditPosition engine::toPosition ( EditDuration  duration)

Returns the raw value of beats or seconds, only really useful for comparing two EditDurations with the same time base.

References toPosition().

Referenced by toPosition().

◆ toUnderlying() [1/3]

double engine::toUnderlying ( EditDuration  duration)

Returns the raw value of beats or seconds, only really useful for comparing two EditDurations with the same time base.

References toUnderlying().

Referenced by engine::AutomationCurve::AutomationPoint::AutomationPoint(), greater(), greaterThanOrEqualTo(), isGreaterThanZero(), isZero(), less(), lessThanOrEqualTo(), max(), min(), engine::AutomationCurve::AutomationPoint::operator<(), toDuration(), toUnderlying(), and toUnderlying().

◆ isZero()

bool engine::isZero ( EditDuration  duration)

Returns true if the duration is 0 beats or seconds.

References isZero(), and toUnderlying().

Referenced by isZero().

◆ isGreaterThanZero()

bool engine::isGreaterThanZero ( EditDuration  duration)

Returns true if the duration is greater than zero beats or seconds.

References isGreaterThanZero(), and toUnderlying().

Referenced by isGreaterThanZero().

◆ plus()

EditPosition engine::plus ( const EditPosition lhs,
const EditDuration rhs,
const TempoSequence ts 
)

References plus(), toBeats(), and toTime().

Referenced by operator+(), and plus().

◆ minus() [1/2]

EditPosition engine::minus ( const EditPosition lhs,
const EditDuration rhs,
const TempoSequence ts 
)

References minus(), toBeats(), and toTime().

Referenced by minus(), minus(), operator-(), and operator-().

◆ equals()

bool engine::equals ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ minus() [2/2]

EditDuration engine::minus ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ less()

bool engine::less ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ greater()

bool engine::greater ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ lessThanOrEqualTo()

bool engine::lessThanOrEqualTo ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ greaterThanOrEqualTo()

bool engine::greaterThanOrEqualTo ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ min()

EditPosition engine::min ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ max()

EditPosition engine::max ( const EditPosition lhs,
const EditPosition rhs,
const TempoSequence ts 
)

◆ toDuration()

EditDuration engine::toDuration ( const EditPosition p)

◆ operator==() [1/2]

bool engine::operator== ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator<() [2/2]

bool engine::operator< ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator<=()

bool engine::operator<= ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator>()

bool engine::operator> ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator>=()

bool engine::operator>= ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator-() [1/2]

EditDuration engine::operator- ( const EditPositionWithTempoSequence lhs,
const EditPositionWithTempoSequence rhs 
)

◆ operator+()

EditPosition engine::operator+ ( const EditPositionWithTempoSequence lhs,
const EditDuration rhs 
)

◆ operator-() [2/2]

EditPosition engine::operator- ( const EditPositionWithTempoSequence lhs,
const EditDuration rhs 
)

◆ toTime() [5/8]

TimePosition engine::toTime ( EditPosition  et,
const TempoSequence ts 
)

Converts an EditTime to a TimePosition.

N.B. This may be a slow operation if this was created using a BeatPosition.

◆ toBeats() [5/8]

BeatPosition engine::toBeats ( EditPosition  et,
const TempoSequence ts 
)

Converts an EditTime to a BeatPosition.

N.B. This may be a slow operation if this was created using a TimePosition.

◆ toUnderlying() [2/3]

double engine::toUnderlying ( EditPosition  et)

Returns the raw number of seconds or beats.

Mostly useful for testing.

◆ toUnderlying() [3/3]

juce::Range< double > engine::toUnderlying ( EditTimeRange  r)

Returns the raw number of seconds or beats.

Mostly useful for testing.

References engine::EditTimeRange::getEnd(), engine::EditTimeRange::getStart(), and toUnderlying().

◆ contains()

bool engine::contains ( EditTimeRange  r,
EditPosition  pos,
const TempoSequence ts 
)

Returns true if the given position is contained within the given range.

References engine::EditTimeRange::getEnd(), engine::EditTimeRange::getStart(), greaterThanOrEqualTo(), and less().

Referenced by engine::Pitch::getPitchFromString().

◆ containsInclusive()

bool engine::containsInclusive ( EditTimeRange  r,
EditPosition  pos,
const TempoSequence ts 
)

Returns true if the given position is contained within the given closed range.

References engine::EditTimeRange::getEnd(), engine::EditTimeRange::getStart(), greaterThanOrEqualTo(), and lessThanOrEqualTo().

◆ toTime() [6/8]

TimeRange engine::toTime ( EditTimeRange  r,
const TempoSequence ts 
)

Converts an EditTimeRange to a TimeRange.

N.B. This may be a slow operation if this was created using a BeatRange.

◆ toBeats() [6/8]

BeatRange engine::toBeats ( EditTimeRange  r,
const TempoSequence ts 
)

Converts an EditTimeRange to a BeatRange.

N.B. This may be a slow operation if this was created using a TimeRange.

◆ createClipPosition() [1/2]

ClipPosition engine::createClipPosition ( const TempoSequence ,
TimeRange  ,
TimeDuration  offset = {} 
)

Creates a ClipPosition from either a time or beat range.

◆ createClipPosition() [2/2]

ClipPosition engine::createClipPosition ( const TempoSequence ,
BeatRange  ,
BeatDuration  offset = {} 
)

Creates a ClipPosition from either a time or beat range.

◆ toTime() [7/8]

TimePosition engine::toTime ( EditPosition  et,
const tempo::Sequence &  ts 
)

◆ toBeats() [7/8]

BeatPosition engine::toBeats ( EditPosition  et,
const tempo::Sequence &  ts 
)

◆ toTime() [8/8]

TimeRange engine::toTime ( EditTimeRange  r,
const tempo::Sequence &  ts 
)

◆ toBeats() [8/8]

BeatRange engine::toBeats ( EditTimeRange  r,
const tempo::Sequence &  ts 
)

◆ countNumTracks()

int engine::countNumTracks ( const juce::ValueTree &  )

Returns the number of tracks from this tree recursively.

References countNumTracks().

Referenced by countNumTracks().

◆ moveAutomation()

void engine::moveAutomation ( const juce::Array< TrackAutomationSection > &  ,
TimeDuration  offset,
bool  copy 
)

Moves a set of automation optionally applying an offset and copying the automation (rather than moving it).

References moveAutomation().

Referenced by moveAutomation().

◆ findIndexOfNextItemAt()

template<typename ArrayType >
int engine::findIndexOfNextItemAt ( const ArrayType &  items,
TimePosition  time 
)

Returns the index of the next item after the given time.

References findIndexOfNextItemAt().

Referenced by findIndexOfNextItemAt().

◆ findUnionOfEditTimeRanges()

template<typename ArrayType >
TimeRange engine::findUnionOfEditTimeRanges ( const ArrayType &  items)

Returns the the time range that covers all the given TrackItems.

References findUnionOfEditTimeRanges().

Referenced by findUnionOfEditTimeRanges().

◆ getTargetTracksAndIndexes()

juce::Array< std::pair< AudioTrack *, int > > engine::getTargetTracksAndIndexes ( InputDeviceInstance )

Returns the AudioTracks and their indexes this instance is assigned to.

References getTargetTracksAndIndexes().

Referenced by getTargetTracksAndIndexes().

◆ getTargetTracks()

juce::Array< AudioTrack * > engine::getTargetTracks ( InputDeviceInstance )

Returns the AudioTracks this instance is assigned to.

References getTargetTracks().

Referenced by getTargetTracks().

◆ isOnTargetTrack()

bool engine::isOnTargetTrack ( InputDeviceInstance ,
const Track ,
int  idx 
)

Returns true if this instance is assigned to the given Track at the given index .

References isOnTargetTrack().

Referenced by isOnTargetTrack().

◆ isAttached()

bool engine::isAttached ( InputDeviceInstance )

Returns true if this input is assigned to a target.

References isAttached().

Referenced by isAttached().

◆ clearFromTargets()

juce::Result engine::clearFromTargets ( InputDeviceInstance ,
juce::UndoManager *   
)

Removes this instance from all assigned targets.

References clearFromTargets().

Referenced by clearFromTargets().

◆ getDestination() [1/3]

InputDeviceInstance::Destination * engine::getDestination ( InputDeviceInstance ,
const Track track,
int  index 
)

Returns the destination if one has been assigned for the given arguments.

References getDestination().

Referenced by getDestination(), getDestination(), and getDestination().

◆ getDestination() [2/3]

InputDeviceInstance::Destination * engine::getDestination ( InputDeviceInstance ,
const ClipSlot  
)

Returns the destination if one has been assigned for the given arguments.

References getDestination().

◆ getDestination() [3/3]

InputDeviceInstance::Destination * engine::getDestination ( InputDeviceInstance ,
const juce::ValueTree &  destinationState 
)

Returns the destination if one has been assigned for the given arguments.

References getDestination().

◆ hasErrors()

bool engine::hasErrors ( const InputDeviceInstance::PreparedContext pc)

Returns true if all the targets were fully prepared.

References hasErrors().

Referenced by hasErrors().

◆ append()

Appends a PreparedContent to another.

References append().

Referenced by append().

◆ extract()

std::pair< std::vector< std::unique_ptr< InputDeviceInstance::RecordingContext > >, juce::StringArray > engine::extract ( InputDeviceInstance::PreparedContext &&  pc)

Splits the PreparedContext in to valid RecordingContexts and an array of error messages.

References extract().

Referenced by extract().

◆ createNodeForEdit() [1/2]

std::unique_ptr< tracktion::graph::Node > engine::createNodeForEdit ( EditPlaybackContext ,
std::atomic< double > &  audibleTimeToUpdate,
const CreateNodeParams  
)

Creates a Node to play back an Edit with live inputs and outputs.

References createNodeForEdit().

Referenced by engine::benchmark_utilities::createNode(), createNodeForEdit(), and createNodeForEdit().

◆ createNodeForEdit() [2/2]

std::unique_ptr< tracktion::graph::Node > engine::createNodeForEdit ( Edit ,
const CreateNodeParams  
)

Creates a Node to render an Edit.

References createNodeForEdit().

◆ createGeneratorPluginNode()

std::unique_ptr< tracktion::graph::Node > engine::createGeneratorPluginNode ( const Plugin::Ptr ,
const CreateNodeParams ,
std::unique_ptr< tracktion::graph::Node >  output 
)

Wraps a Plugin as a generator Node (driven by a silent input) and sums it into the supplied output Node.

Intended to be returned from CreateNodeParams::insertOptionalLastStageNodeForDevice to add a transient plugin (e.g. a browser-hosted generator) to a device's output. If the plugin is null the output Node is returned unchanged.

References createGeneratorPluginNode().

Referenced by createGeneratorPluginNode().

◆ toStart()

void engine::toStart ( TransportControl ,
const SelectableList  
)

Moves the transport to the start of the selected objects.

References toStart().

Referenced by toStart().

◆ toEnd()

void engine::toEnd ( TransportControl ,
const SelectableList  
)

Moves the transport to the end of the selected objects.

References toEnd().

Referenced by toEnd().

◆ tabBack()

void engine::tabBack ( TransportControl )

Moves the transport back to the previous point of interest.

References tabBack().

Referenced by engine::AppFunctions::tabBack(), and tabBack().

◆ tabForward()

void engine::tabForward ( TransportControl )

Moves the transport forwards to the next point of interest.

References tabForward().

Referenced by engine::AppFunctions::tabForward(), and tabForward().

◆ markIn()

void engine::markIn ( TransportControl )

Sets the mark in position to the current transport position.

References markIn().

Referenced by engine::EditSnapshot::getMarkIn(), engine::AppFunctions::markIn(), and markIn().

◆ markOut()

void engine::markOut ( TransportControl )

Sets the mark out position to the current transport position.

References markOut().

Referenced by engine::EditSnapshot::getMarkOut(), engine::AppFunctions::markOut(), and markOut().

◆ scrub()

void engine::scrub ( TransportControl ,
double  unitsForwards 
)

Scrubs back and forth in 'units', where a unit is about 1/50th of the width of the strip window.

References scrub().

Referenced by scrub().

◆ freePlaybackContextIfNotRecording()

void engine::freePlaybackContextIfNotRecording ( TransportControl )

Frees the playback context if no recording is in progress, useful for when an app is minimised.

References freePlaybackContextIfNotRecording().

Referenced by freePlaybackContextIfNotRecording().

◆ float2string()

void engine::float2string ( float  f,
char *  text,
int  len 
)

References float2string().

Referenced by dB2string(), and float2string().

◆ int2string()

void engine::int2string ( float  i,
char *  text,
int  len 
)

References int2string().

Referenced by int2string().

◆ dB2string()

void engine::dB2string ( float  value,
char *  text,
int  maxLen 
)

References dB2string(), float2string(), value, and vst_strncpy.

Referenced by dB2string().

◆ detectARAFromIXMLChunks()

ARAIXMLResult engine::detectARAFromIXMLChunks ( Engine ,
const juce::File &  sourceFile 
)

Scans a source audio file for ARA iXML chunks and returns the first matching installed plugin description along with archive data.

References detectARAFromIXMLChunks().

Referenced by detectARAFromIXMLChunks().

◆ getCmajorVersion()

std::string engine::getCmajorVersion ( )

References getCmajorVersion().

Referenced by getCmajorVersion().

◆ createCmajorPatchPluginFormat()

std::unique_ptr< juce::AudioPluginFormat > engine::createCmajorPatchPluginFormat ( Engine )

◆ isCmajorPatchPluginFormat() [1/2]

bool engine::isCmajorPatchPluginFormat ( const juce::PluginDescription &  )

◆ isCmajorPatchPluginFormat() [2/2]

bool engine::isCmajorPatchPluginFormat ( const juce::String &  formatName)

◆ getCmajorPatchPluginFormatName()

juce::String engine::getCmajorPatchPluginFormatName ( )

◆ getCmajorPatchCompileError()

juce::String engine::getCmajorPatchCompileError ( Plugin )

◆ createIdentifierString()

juce::String engine::createIdentifierString ( const juce::PluginDescription &  )

◆ convertToFolderBasedProject()

Project::Ptr engine::convertToFolderBasedProject ( Project )

Converts a file-based project to a folder-based project.

Opens each edit and rewrites ProjectItemID source references as relative file paths. Writes project metadata to project_info.json and deletes the .tracktion file. Returns a new folder-based Project opened from the directory. The original Project object should be released promptly.

References convertToFolderBasedProject().

Referenced by convertToFolderBasedProject().

◆ operator==() [2/2]

bool engine::operator== ( ProjectItemID  lhs,
const ProjectItemRef rhs 
)

◆ operator!=()

bool engine::operator!= ( ProjectItemID  lhs,
const ProjectItemRef rhs 
)

◆ getOrInsertAudioTrackNearestIndex()

AudioTrack * engine::getOrInsertAudioTrackNearestIndex ( Edit edit,
int  trackIndex 
)

◆ makeSafeRef()

template<typename SelectableType >
SafeSelectable< SelectableType > engine::makeSafeRef ( SelectableType &  selectable)

Creates a SafeSelectable for a given selectable object.

References makeSafeRef().

Referenced by makeSafeRef(), and resetSelectableListener().

◆ makeSafeVector()

template<typename Iterable >
auto engine::makeSafeVector ( const Iterable &  selectables) -> std::vector<SafeSelectable<typename std::remove_reference<decltype(*selectables[0])>::type>>

Creates a std::vector<SafeSelectable<Something>> for a given juce::Array of selectable objects.

References makeSafeVector().

Referenced by makeSafeVector().

◆ makeWeakRef() [1/2]

template<typename WeakReferenceable >
juce::WeakReference< WeakReferenceable > engine::makeWeakRef ( WeakReferenceable &  object)

Creates a juce::WeakReference for an object.

References makeWeakRef().

Referenced by makeWeakRef(), and makeWeakRef().

◆ makeWeakRef() [2/2]

template<typename WeakReferenceable >
juce::WeakReference< WeakReferenceable > engine::makeWeakRef ( WeakReferenceable *  object)

Creates a juce::WeakReference for an object pointer (which may be null)

References makeWeakRef().

◆ resetSelectableListener() [1/2]

void engine::resetSelectableListener ( SafeScopedListener scopedListener,
Selectable broadcaster,
SelectableListener listener 
)

Registers a SafeScopedListener with a Selectable.

Prefer this over calling SafeScopedListener::reset() directly for Selectables, as the parameter types resolve two things at the call site that are easy to get wrong by hand:

References makeSafeRef(), engine::SafeScopedListener::reset(), and resetSelectableListener().

Referenced by resetSelectableListener(), and resetSelectableListener().

◆ resetSelectableListener() [2/2]

void engine::resetSelectableListener ( SafeScopedListener scopedListener,
Selectable broadcaster,
SelectableListener listener 
)

Registers a SafeScopedListener with a Selectable, or unregisters it if the broadcaster is null.

References engine::SafeScopedListener::reset(), and resetSelectableListener().

◆ callBlocking()

bool engine::callBlocking ( std::function< void()>  f)

Calls a function on the message thread by posting a message and then waiting for it to be delivered.

If this fails for some reason, e.g. the calling thread is trying to exit or is blocking the message thread, this will throw an exception.

References callBlocking(), engine::MessageThreadCallback::hasFinished(), and engine::MessageThreadCallback::triggerAndWaitForCallback().

Referenced by callBlocking(), and callBlockingCatching().

◆ callBlockingCatching()

bool engine::callBlockingCatching ( std::function< void()>  f)
noexcept

The same as callBlocking expect the exception is caught and ignored.

Use this when failue is ok.

References callBlocking(), and callBlockingCatching().

Referenced by callBlockingCatching().

◆ dbToGain()

float engine::dbToGain ( float  db)
noexcept

◆ gainToDb()

float engine::gainToDb ( float  gain)
noexcept

References gainToDb().

Referenced by gainToDb().

◆ gainToDbString()

juce::String engine::gainToDbString ( float  gain,
float  infLevel = -96.0f,
int  decPlaces = 2 
)

References gainToDbString().

Referenced by gainToDbString().

◆ dbStringToDb()

float engine::dbStringToDb ( const juce::String &  dbStr)

◆ dbStringToGain()

float engine::dbStringToGain ( const juce::String &  dbStr)

References dbStringToGain().

Referenced by dbStringToGain().

◆ getPanString()

juce::String engine::getPanString ( float  pan)

References getPanString().

Referenced by getPanString().

◆ getSemitonesAsString()

juce::String engine::getSemitonesAsString ( double  semitones)

References getSemitonesAsString().

Referenced by getSemitonesAsString().

◆ midiNoteToFrequency()

template<typename FloatType >
FloatType engine::midiNoteToFrequency ( FloatType  midiNote)

References midiNoteToFrequency().

Referenced by midiNoteToFrequency().

◆ frequencyToMidiNote()

template<typename FloatType >
FloatType engine::frequencyToMidiNote ( FloatType  freq)

References frequencyToMidiNote().

Referenced by frequencyToMidiNote().

◆ sanitiseValues()

void engine::sanitiseValues ( juce::AudioBuffer< float > &  ,
int  startSample,
int  numSamples,
float  maxAbsValue,
float  minAbsThreshold = 1.0f/262144.0f 
)

References sanitiseValues().

Referenced by sanitiseValues().

◆ addAntiDenormalisationNoise()

void engine::addAntiDenormalisationNoise ( juce::AudioBuffer< float > &  ,
int  start,
int  numSamples 
)
noexcept

◆ resetFP()

void engine::resetFP ( )
noexcept

References resetFP().

Referenced by resetFP().

◆ hasFloatingPointDenormaliseOccurred()

bool engine::hasFloatingPointDenormaliseOccurred ( )
noexcept

◆ zeroDenormalisedValuesIfNeeded()

void engine::zeroDenormalisedValuesIfNeeded ( juce::AudioBuffer< float > &  )
noexcept

◆ isAudioDataAlmostSilent()

bool engine::isAudioDataAlmostSilent ( const float *  data,
int  num 
)

◆ getAudioDataMagnitude()

float engine::getAudioDataMagnitude ( const float *  data,
int  num 
)

◆ convertIntsToFloats()

void engine::convertIntsToFloats ( juce::AudioBuffer< float > &  )

◆ convertFloatsToInts()

void engine::convertFloatsToInts ( juce::AudioBuffer< float > &  )

◆ toBufferView()

template<typename SampleType >
choc::buffer::BufferView< SampleType, choc::buffer::SeparateChannelLayout > engine::toBufferView ( juce::AudioBuffer< SampleType > &  buffer)

Converts a juce::AudioBuffer<SampleType> to a choc::buffer::BufferView.

◆ getRMS()

template<typename SampleType >
SampleType engine::getRMS ( choc::buffer::MonoView< SampleType >  view)

Returns the RMS of a single channel buffer.

References getRMS().

Referenced by getRMS().

◆ getDefaultPanLaw()

PanLaw engine::getDefaultPanLaw ( )
noexcept

References getDefaultPanLaw().

Referenced by getDefaultPanLaw().

◆ setDefaultPanLaw()

void engine::setDefaultPanLaw ( PanLaw  )

◆ getPanLawChoices()

juce::StringArray engine::getPanLawChoices ( bool  includeDefault)
noexcept

◆ decibelsToVolumeFaderPosition()

float engine::decibelsToVolumeFaderPosition ( float  dB)
noexcept

◆ volumeFaderPositionToDB()

float engine::volumeFaderPositionToDB ( float  position)
noexcept

◆ volumeFaderPositionToGain()

float engine::volumeFaderPositionToGain ( float  position)
noexcept

◆ gainToVolumeFaderPosition()

float engine::gainToVolumeFaderPosition ( float  gain)
noexcept

◆ getGainsFromVolumeFaderPositionAndPan()

void engine::getGainsFromVolumeFaderPositionAndPan ( float  volSliderPos,
float  pan,
PanLaw  lawToUse,
float &  leftGain,
float &  rightGain 
)
noexcept

◆ clearChannels()

void engine::clearChannels ( juce::AudioBuffer< float > &  buffer,
int  startChannel,
int  endChannel = -1,
int  startSample = 0,
int  endSample = -1 
)

References clearChannels().

Referenced by clearChannels().

◆ getCurrentPositionInfo()

juce::AudioPlayHead::CurrentPositionInfo engine::getCurrentPositionInfo ( Edit )

Converts an Edit's internal transport information to a juce::AudioPlayHead::CurrentPositionInfo.

References getCurrentPositionInfo().

Referenced by getCurrentPositionInfo().

◆ synchroniseEditPosition()

void engine::synchroniseEditPosition ( Edit ,
const juce::AudioPlayHead::CurrentPositionInfo &   
)

Syncs an Edit's transport and tempo sequence to a juce AudioPlayHead.

References synchroniseEditPosition().

Referenced by synchroniseEditPosition().

◆ isMidiFile()

bool engine::isMidiFile ( const juce::File &  )

References isMidiFile().

Referenced by isMidiFile().

◆ isTracktionEditFile()

bool engine::isTracktionEditFile ( const juce::File &  )

◆ isTracktionArchiveFile()

bool engine::isTracktionArchiveFile ( const juce::File &  )

◆ isTracktionProjectFile()

bool engine::isTracktionProjectFile ( const juce::File &  )

◆ isTracktionProjectFolder()

bool engine::isTracktionProjectFolder ( const juce::File &  )

◆ isTracktionProjectFileOrFolder()

bool engine::isTracktionProjectFileOrFolder ( const juce::File &  )

◆ isTracktionPresetFile()

bool engine::isTracktionPresetFile ( const juce::File &  )

◆ getNonExistentSiblingWithIncrementedNumberSuffix()

juce::File engine::getNonExistentSiblingWithIncrementedNumberSuffix ( const juce::File &  ,
bool  addHashSymbol 
)

◆ addSortedListToMenu()

void engine::addSortedListToMenu ( juce::PopupMenu &  m,
juce::StringArray  names,
int  startID 
)

References addSortedListToMenu().

Referenced by addSortedListToMenu().

◆ getScaleAroundCentre()

juce::AffineTransform engine::getScaleAroundCentre ( juce::Rectangle< float >  r,
float  numPixels 
)

References getScaleAroundCentre().

Referenced by getScaleAroundCentre().

◆ moveXMLAttributeToStart()

void engine::moveXMLAttributeToStart ( juce::XmlElement &  xml,
juce::StringRef  att 
)

◆ removeIf()

template<typename Vector , typename Predicate >
bool engine::removeIf ( Vector &  v,
Predicate &&  pred 
)

References removeIf().

Referenced by removeIf().

◆ almostEqual()

template<typename FloatingPointType >
bool engine::almostEqual ( FloatingPointType  firstValue,
FloatingPointType  secondValue,
FloatingPointType  precision = (FloatingPointType) 0.00001 
)

Checks to see if two values are equal within a given precision.

References almostEqual().

Referenced by almostEqual().

◆ isCurrentThreadSupplyingExitStatus()

bool engine::isCurrentThreadSupplyingExitStatus ( )

◆ signalThreadShouldExit()

void engine::signalThreadShouldExit ( std::thread::id  )

Can be used to signal that the current thread is waiting to exit.

Only to be used in conjunction with a ScopedThreadExitStatusEnabler.

References signalThreadShouldExit().

Referenced by signalThreadShouldExit().

◆ shouldCurrentThreadExit()

bool engine::shouldCurrentThreadExit ( )

Returns true if the current thread is waiting to exit.

Only to be used in conjunction with a ScopedThreadExitStatusEnabler.

References shouldCurrentThreadExit().

Referenced by shouldCurrentThreadExit(), and engine::MessageThreadCallback::triggerAndWaitForCallback().

◆ getMonotonicBeatRange()

MonotonicBeatRange engine::getMonotonicBeatRange ( const SyncRange r)

◆ getBeatRange()

BeatRange engine::getBeatRange ( const SyncRange r)

◆ getNumSamples()

int64_t engine::getNumSamples ( const SyncRange r)

◆ convertPropertyToType()

template<typename VarType >
void engine::convertPropertyToType ( juce::ValueTree &  v,
const juce::Identifier &  id 
)

Ensures a property is a given type which can avoid having to parse a string every time it is read after loading from XML.

References convertPropertyToType().

Referenced by convertPropertyToType().

◆ matchesAnyOf()

template<typename Type >
bool engine::matchesAnyOf ( const Type &  needle,
const std::initializer_list< Type > &  haystack 
)

Returns true if the needle is found in the haystack.

References matchesAnyOf().

Referenced by matchesAnyOf().

◆ forEachItem()

template<typename Type , typename UnaryFunction >
void engine::forEachItem ( const juce::Array< Type * > &  items,
const UnaryFunction &  fn 
)

Calls a function object on each item in an array.

References forEachItem().

Referenced by forEachItem().

◆ addValueTreeProperties()

template<typename... Others>
void engine::addValueTreeProperties ( juce::ValueTree &  v,
const juce::Identifier &  name,
const juce::var &  value,
Others &&...  others 
)

◆ createValueTree()

template<typename... Properties>
juce::ValueTree engine::createValueTree ( const juce::Identifier &  name,
Properties &&...  properties 
)

◆ removeInvalidValueTrees()

juce::Array< juce::ValueTree > & engine::removeInvalidValueTrees ( juce::Array< juce::ValueTree > &  trees)

Strips out any invalid trees from the array.

References removeInvalidValueTrees().

Referenced by removeInvalidValueTrees().

◆ getTreesOfType()

juce::Array< juce::ValueTree > engine::getTreesOfType ( const juce::Array< juce::ValueTree > &  trees,
const juce::Identifier &  type 
)

Returns a new array with any trees without the given type removed.

References getTreesOfType().

Referenced by getTreesOfType().

◆ getChildTreesRecursive()

void engine::getChildTreesRecursive ( juce::Array< juce::ValueTree > &  result,
const juce::ValueTree &  tree 
)

◆ renamePropertyRecursive()

void engine::renamePropertyRecursive ( juce::ValueTree &  tree,
const juce::Identifier &  oldName,
const juce::Identifier &  newName,
juce::UndoManager *  um 
)

◆ getOrCreateChildWithTypeAndProperty()

juce::ValueTree engine::getOrCreateChildWithTypeAndProperty ( juce::ValueTree &  tree,
const juce::Identifier &  type,
const juce::Identifier &  property,
const juce::var &  propertyValue,
juce::UndoManager *  undoManager 
)

Looks for a chile with the given name and property, if one doesn't exist, creates it.

References getOrCreateChildWithTypeAndProperty().

Referenced by getOrCreateChildWithTypeAndProperty().

Variable Documentation

◆ projectFileSuffix

const char* const engine::projectFileSuffix = ".tracktion"

◆ editFileSuffix

const char* const engine::editFileSuffix = ".tracktionedit"

◆ legacyEditFileSuffix

const char* const engine::legacyEditFileSuffix = ".trkedit"

◆ legacyArchiveFileSuffix

const char* const engine::legacyArchiveFileSuffix = ".trkarch"

◆ archiveFileSuffix_v2

const char* const engine::archiveFileSuffix_v2 = ".zip"

◆ soundFileWildCard

const char* const engine::soundFileWildCard = "*.wav;*.aiff;*.aif;*.ogg;*.mp3;*.flac;*.au;*.voc;*.caf;*.w64;*.rx2;*.rcy;*.rex;*.wfaf"

◆ soundFileAndMidiWildCard

const char* const engine::soundFileAndMidiWildCard = "*.wav;*.aiff;*.aif;*.ogg;*.mp3;*.mid;*.midi;*.flac;*.au;*.voc;*.caf;*.w64;*.rx2;*.rcy;*.rex;*.wfaf"

◆ midiFileWildCard

const char* const engine::midiFileWildCard = "*.midi;*.mid"

◆ soundFileExtensions

const char* const engine::soundFileExtensions = "wav;aiff;aif;ogg;mp3;flac;au;voc;caf;w64;rx2;rcy;rex;wfaf"

◆ soundFileAndMidiExtensions

const char* const engine::soundFileAndMidiExtensions = "wav;aiff;aif;ogg;mp3;flac;au;voc;caf;w64;rx2;rcy;rex;wfaf;midi;mid"

◆ midiFileExtensions

const char* const engine::midiFileExtensions = "midi;mid"

◆ keyMapWildCard

const char* const engine::keyMapWildCard = "*.tracktionkeys"

◆ keyMapSuffix

const char* const engine::keyMapSuffix = ".tracktionkeys"

◆ customControllerFileSuffix

const char* const engine::customControllerFileSuffix = ".trkctrlr"

◆ customProgramSetWildcard

const char* const engine::customProgramSetWildcard = "*.trkmidi;*.midnam"

◆ customProgramSetFileSuffix

const char* const engine::customProgramSetFileSuffix = ".trkmidi"

◆ presetFileSuffix

const char* const engine::presetFileSuffix = ".trkpreset"

◆ rackFileSuffix

const char* const engine::rackFileSuffix = ".trkrack"

◆ scriptFileSuffix

const char* const engine::scriptFileSuffix = ".tracktionscript"

◆ grooveTemplateSuffix

const char* const engine::grooveTemplateSuffix = ".trkgroove"

◆ grooveTemplateWildCard

const char* const engine::grooveTemplateWildCard = "*.trkgroove"

◆ HertzTag_t

constexpr HertzTag engine::HertzTag_t {}
constexpr