|
TracktionEngine
|
A Node that plays MIDI data from a MidiMessageSequence, at a specific MIDI channel. More...
#include <tracktion_LoopingMidiNode.h>
Public Member Functions | |
| LoopingMidiNode (std::vector< juce::MidiMessageSequence > sequences, juce::Range< int > midiChannelNumbers, bool useMPE, BeatRange editRange, BeatRange loopRange, BeatDuration offset, LiveClipLevel, ProcessState &, EditItemID, const QuantisationType &, const GrooveTemplate *, float grooveStrength, std::function< bool()> shouldBeMutedDelegate=nullptr) | |
| EditItemID | getItemID () const |
| Returns the EditItemID to identify this Node. | |
| MPESourceID | getMPESourceID () const |
| Returns the MPESourceID used by this Node. | |
| const std::shared_ptr< ActiveNoteList > & | getActiveNoteList () const |
| Returns the ActiveNoteList in use for this Node. | |
| void | setDynamicOffsetBeats (BeatDuration) override |
| Sets an offset to be applied to all times in this node, effectively shifting it forwards or backwards in time. | |
| void | killActiveNotes (MidiMessageArray &, double timestampForNoteOffs) |
| Iterates the ActiveNoteList adding note-off events for the active notes and then resets them. | |
| tracktion::graph::NodeProperties | getNodeProperties () override |
| Should return the properties of the node. | |
| void | prepareToPlay (const tracktion::graph::PlaybackInitialisationInfo &) override |
| Called once before playback begins for each node. | |
| bool | isReadyToProcess () override |
| Should return true when this node is ready to be processed. | |
| void | process (ProcessContext &) override |
| Called when the node is to be processed. | |
Public Member Functions inherited from tracktion::graph::Node | |
| Node ()=default | |
| virtual | ~Node ()=default |
| void | initialise (const PlaybackInitialisationInfo &) |
| Call once after the graph has been constructed to initialise buffers etc. | |
| void | prepareForNextBlock (juce::Range< int64_t > referenceSampleRange) |
| Call before processing the next block, used to reset the process status. | |
| void | process (choc::buffer::FrameCount numSamples, juce::Range< int64_t > referenceSampleRange) |
| Call to process the node, which will in turn call the process method with the buffers to fill. | |
| bool | hasProcessed () const |
| Returns true if this node has processed and its outputs can be retrieved. | |
| AudioAndMidiBuffer | getProcessedOutput () |
| Returns the processed audio and MIDI output. | |
| virtual TransformResult | transform (TransformOptions &) |
| Called after construction to give the node a chance to modify its topology. | |
| virtual std::vector< Node * > | getDirectInputNodes () |
| Should return all the inputs directly feeding in to this node. | |
| virtual std::vector< Node * > | getInternalNodes () |
| Can return Nodes that are internal to this Node but don't make up the main graph constructed from getDirectInputNodes(). | |
| void | retain () |
| Retains the buffers so they won't be deallocated after the Node has processed. | |
| void | release () |
| Releases the buffers allowing internal storage to be deallocated. | |
| virtual size_t | getAllocatedBytes () const |
| void | enablePreProcess (bool) |
Public Member Functions inherited from tracktion::engine::TracktionEngineNode | |
| TracktionEngineNode (ProcessState &) | |
| Creates a TracktionEngineNode. | |
| virtual | ~TracktionEngineNode ()=default |
| Destructor. | |
| int | getNumSamples () const |
| Returns the number of samples in the current process block. | |
| double | getSampleRate () const |
| Returns the sample rate of the current process block. | |
| juce::Range< int64_t > | getTimelineSampleRange () const |
| Returns the timeline sample range of the current process block. | |
| TimeRange | getEditTimeRange () const |
| Returns the edit time range of the current process block. | |
| BeatRange | getEditBeatRange () const |
| Returns the edit beat range of the current process block. | |
| juce::Range< int64_t > | getReferenceSampleRange () const |
| Returns the reference sample range (from the DeviceManager) of the current process block. | |
| tempo::Key | getKey () const |
| Returns the key of the current process block. | |
| double | getPlaybackSpeedRatio () const |
| Returns the playback speed ratio of the current process block. | |
| std::optional< TimePosition > | getTimeOfNextChange () const |
| May return the time of the next tempo or time sig change. | |
| std::optional< BeatPosition > | getBeatOfNextChange () const |
| May return the time of the next tempo or time sig change. | |
| tracktion::graph::PlayHeadState & | getPlayHeadState () |
| Returns the PlayHeadState in use. | |
| tracktion::graph::PlayHead & | getPlayHead () |
| Returns the PlayHead in use. | |
| ProcessState & | getProcessState () |
| Returns the ProcessState in use. | |
| void | setProcessState (ProcessState &) |
Public Member Functions inherited from tracktion::engine::DynamicallyOffsettableNodeBase | |
| DynamicallyOffsettableNodeBase ()=default | |
| virtual | ~DynamicallyOffsettableNodeBase ()=default |
| virtual void | setDynamicOffsetTime (TimeDuration) |
| Sets an offset to be applied to all times in this node, effectively shifting it forwards or backwards in time. | |
Additional Inherited Members | |
Public Attributes inherited from tracktion::graph::Node | |
| void * | internal = nullptr |
| int | numOutputNodes = -1 |
Protected Member Functions inherited from tracktion::graph::Node | |
| virtual void | prefetchBlock (juce::Range< int64_t >) |
| Called before once on all Nodes before they are processed. | |
| virtual void | preProcess (choc::buffer::FrameCount, juce::Range< int64_t >) |
| Called when the node is to be processed, just before process. | |
| void | setOptimisations (NodeOptimisations) |
| This can be called to provide some hints about allocating or playing back a Node to improve efficiency. | |
| void | setBufferViewToUse (Node *sourceNode, const choc::buffer::ChannelArrayView< float > &) |
| This can be called during prepareToPlay to set a BufferView to use which can improve efficiency. | |
| void | setAudioOutput (Node *sourceNode, const choc::buffer::ChannelArrayView< float > &) |
| This can be called during your process function to set a view to the output. | |
A Node that plays MIDI data from a MidiMessageSequence, at a specific MIDI channel.
N.B. In order to loop correctly at changing tempos, the sequence time base must be in beats.
| tracktion::engine::LoopingMidiNode::LoopingMidiNode | ( | std::vector< juce::MidiMessageSequence > | sequences, |
| juce::Range< int > | midiChannelNumbers, | ||
| bool | useMPE, | ||
| BeatRange | editRange, | ||
| BeatRange | loopRange, | ||
| BeatDuration | offset, | ||
| LiveClipLevel | , | ||
| ProcessState & | , | ||
| EditItemID | , | ||
| const QuantisationType & | , | ||
| const GrooveTemplate * | , | ||
| float | grooveStrength, | ||
| std::function< bool()> | shouldBeMutedDelegate = nullptr |
||
| ) |
| EditItemID tracktion::engine::LoopingMidiNode::getItemID | ( | ) | const |
Returns the EditItemID to identify this Node.
| MPESourceID tracktion::engine::LoopingMidiNode::getMPESourceID | ( | ) | const |
Returns the MPESourceID used by this Node.
| const std::shared_ptr< ActiveNoteList > & tracktion::engine::LoopingMidiNode::getActiveNoteList | ( | ) | const |
Returns the ActiveNoteList in use for this Node.
Call this after prepareToPlay to get the one in use.
|
overridevirtual |
Sets an offset to be applied to all times in this node, effectively shifting it forwards or backwards in time.
Reimplemented from tracktion::engine::DynamicallyOffsettableNodeBase.
| void tracktion::engine::LoopingMidiNode::killActiveNotes | ( | MidiMessageArray & | , |
| double | timestampForNoteOffs | ||
| ) |
Iterates the ActiveNoteList adding note-off events for the active notes and then resets them.
|
overridevirtual |
Should return the properties of the node.
This should not be called until after initialise.
Implements tracktion::graph::Node.
|
overridevirtual |
Called once before playback begins for each node.
Use this to allocate buffers etc. This step can be used to modify the topology of the graph (i.e. add/remove nodes). However, if you do this, you must make sure to call initialise on them so they are fully prepared for processing.
Reimplemented from tracktion::graph::Node.
|
overridevirtual |
Should return true when this node is ready to be processed.
This is usually when its input's output buffers are ready.
Implements tracktion::graph::Node.
|
overridevirtual |
Called when the node is to be processed.
This should add in to the buffers available making sure not to change their size at all.
Implements tracktion::graph::Node.