Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::engine::session::SampleProcessor Class Referencefinal

A processor to be used in the routing graph for playing samples independent of the timeline. More...

#include <src/engine/session/sample_processor.h>

Inheritance diagram for zrythm::engine::session::SampleProcessor:
Collaboration diagram for zrythm::engine::session::SampleProcessor:

Public Types

using Position = zrythm::dsp::Position
using PluginConfiguration = zrythm::plugins::PluginConfiguration

Public Member Functions

 SampleProcessor (engine::device_io::AudioEngine *engine)
void init_loaded (engine::device_io::AudioEngine *engine)
void load_instrument_if_empty ()
 Loads the instrument from the settings.
void prepare_process (nframes_t nframes)
 Clears the buffers.
void process_block (EngineProcessTimeInfo time_nfo) override
 Process the samples for the given number of frames.
utils::Utf8String get_node_name () const override
 Returns a human friendly name of the node.
nframes_t get_single_playback_latency () const override
 Returns the latency of only the given processable, without adding the previous/next latencies.
void remove_sample_playback (SamplePlayback &sp)
 Removes a SamplePlayback from the array.
void queue_metronome_countin ()
 Queues a metronomem tick at the given offset.
void queue_metronome (Metronome::Type type, nframes_t offset)
 Queues a metronomem tick at the given local offset.
void queue_sample_from_file (const char *path)
 Adds a sample to play to the queue from a file path.
void queue_file (const FileDescriptor &file)
 Adds a file (audio or MIDI) to the queue.
void queue_chord_preset (const ChordPreset &chord_pset)
 Adds a chord preset to the queue.
void stop_file_playback ()
 Stops playback of files (auditioning).
void disconnect ()
const dsp::TempoMapget_tempo_map () const
 Get the tempo track from the actual project, using audio_engine_.
void find_and_queue_metronome (signed_frame_t start_pos, signed_frame_t end_pos, nframes_t loffset)
 Finds all metronome events (beat and bar changes) within the given range and adds them to the queue.
Public Member Functions inherited from zrythm::dsp::graph::IProcessable
virtual void prepare_for_processing (sample_rate_t sample_rate, nframes_t max_block_length)
 Called to allocate resources required for processing.
virtual void release_resources ()
 Called to release resources allocated by prepare_for_processing().

Data Fields

std::vector< SamplePlaybackcurrent_samples_
 An array of samples currently being played.
std::unique_ptr< structure::tracks::Tracklisttracklist_
 Tracklist for file auditioning.
std::unique_ptr< zrythm::plugins::PluginConfigurationinstrument_setting_
 Instrument for MIDI auditioning.
std::unique_ptr< dsp::MidiEventsmidi_events_
std::unique_ptr< structure::tracks::Faderfader_
 Fader connected to the main output.
Position playhead_
 Playhead for the tracklist (used when auditioning files).
Position file_end_pos_
 Position the file ends at.
bool roll_ = false
 Whether to roll or not.
engine::device_io::AudioEngineaudio_engine_ = nullptr
 Pointer to owner audio engine, if any.
moodycamel::LightweightSemaphore rebuilding_sem_ { 1 }
 Semaphore to be locked while rebuilding the sample processor tracklist and graph.

Friends

void init_from (SampleProcessor &obj, const SampleProcessor &other, utils::ObjectCloneType clone_type)
void to_json (nlohmann::json &j, const SampleProcessor &sp)
void from_json (const nlohmann::json &j, SampleProcessor &sp)

Detailed Description

A processor to be used in the routing graph for playing samples independent of the timeline.

Also used for auditioning files.

Definition at line 35 of file sample_processor.h.

Member Typedef Documentation

◆ PluginConfiguration

◆ Position

Member Function Documentation

◆ find_and_queue_metronome()

void zrythm::engine::session::SampleProcessor::find_and_queue_metronome ( signed_frame_t start_pos,
signed_frame_t end_pos,
nframes_t loffset )

Finds all metronome events (beat and bar changes) within the given range and adds them to the queue.

Parameters
end_posEnd position, exclusive.
loffsetLocal offset (this is where start_pos starts at).

◆ get_node_name()

utils::Utf8String zrythm::engine::session::SampleProcessor::get_node_name ( ) const
inlineoverridevirtual

Returns a human friendly name of the node.

Implements zrythm::dsp::graph::IProcessable.

Definition at line 71 of file sample_processor.h.

◆ get_single_playback_latency()

nframes_t zrythm::engine::session::SampleProcessor::get_single_playback_latency ( ) const
inlineoverridevirtual

Returns the latency of only the given processable, without adding the previous/next latencies.

Reimplemented from zrythm::dsp::graph::IProcessable.

Definition at line 76 of file sample_processor.h.

◆ load_instrument_if_empty()

void zrythm::engine::session::SampleProcessor::load_instrument_if_empty ( )

Loads the instrument from the settings.

To be called when the engine is activated, once.

◆ process_block()

void zrythm::engine::session::SampleProcessor::process_block ( EngineProcessTimeInfo time_nfo)
overridevirtual

Process the samples for the given number of frames.

Reimplemented from zrythm::dsp::graph::IProcessable.

◆ queue_metronome()

void zrythm::engine::session::SampleProcessor::queue_metronome ( Metronome::Type type,
nframes_t offset )

Queues a metronomem tick at the given local offset.

Realtime function.

◆ queue_metronome_countin()

void zrythm::engine::session::SampleProcessor::queue_metronome_countin ( )

Queues a metronomem tick at the given offset.

Used for countin.

◆ from_json

void from_json ( const nlohmann::json & j,
SampleProcessor & sp )
friend

Definition at line 145 of file sample_processor.h.

◆ to_json

void to_json ( nlohmann::json & j,
const SampleProcessor & sp )
friend

Definition at line 141 of file sample_processor.h.

Field Documentation

◆ audio_engine_

engine::device_io::AudioEngine* zrythm::engine::session::SampleProcessor::audio_engine_ = nullptr

Pointer to owner audio engine, if any.

Definition at line 186 of file sample_processor.h.

◆ current_samples_

std::vector<SamplePlayback> zrythm::engine::session::SampleProcessor::current_samples_

An array of samples currently being played.

Definition at line 158 of file sample_processor.h.

◆ fader_

std::unique_ptr<structure::tracks::Fader> zrythm::engine::session::SampleProcessor::fader_

Fader connected to the main output.

Definition at line 169 of file sample_processor.h.

◆ file_end_pos_

Position zrythm::engine::session::SampleProcessor::file_end_pos_

Position the file ends at.

Once this position is reached, SampleProcessor.roll will be set to false.

Definition at line 180 of file sample_processor.h.

◆ instrument_setting_

std::unique_ptr<zrythm::plugins::PluginConfiguration> zrythm::engine::session::SampleProcessor::instrument_setting_

Instrument for MIDI auditioning.

Definition at line 164 of file sample_processor.h.

◆ midi_events_

std::unique_ptr<dsp::MidiEvents> zrythm::engine::session::SampleProcessor::midi_events_

Definition at line 166 of file sample_processor.h.

◆ playhead_

Position zrythm::engine::session::SampleProcessor::playhead_

Playhead for the tracklist (used when auditioning files).

Definition at line 172 of file sample_processor.h.

◆ rebuilding_sem_

moodycamel::LightweightSemaphore zrythm::engine::session::SampleProcessor::rebuilding_sem_ { 1 }

Semaphore to be locked while rebuilding the sample processor tracklist and graph.

Definition at line 190 of file sample_processor.h.

◆ roll_

bool zrythm::engine::session::SampleProcessor::roll_ = false

Whether to roll or not.

Definition at line 183 of file sample_processor.h.

◆ tracklist_

std::unique_ptr<structure::tracks::Tracklist> zrythm::engine::session::SampleProcessor::tracklist_

Tracklist for file auditioning.

Definition at line 161 of file sample_processor.h.


The documentation for this class was generated from the following file: