Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
|
Handles the recording logic for the application. More...
#include <src/engine/session/recording_manager.h>
Public Types | |
using | Position = zrythm::dsp::Position |
using | AutomationTrack = structure::tracks::AutomationTrack |
using | AutomationRegion = structure::arrangement::AutomationRegion |
using | AutomationPoint = structure::arrangement::AutomationPoint |
Public Member Functions | |
RecordingManager (QObject *parent=nullptr) | |
Creates the event queue and starts the event loop. | |
void | handle_recording (const structure::tracks::TrackProcessor *track_processor, const EngineProcessTimeInfo *time_nfo) |
Handles the recording logic inside the process cycle. | |
Q_SLOT void | process_events () |
Data Fields | |
int | num_active_recordings_ = 0 |
Number of recordings currently in progress. | |
MPMCQueue< RecordingEvent * > | event_queue_ |
Event queue. | |
ObjectPool< RecordingEvent > | event_obj_pool_ |
Memory pool of event structs to avoid real time allocation. | |
std::vector< structure::arrangement::ArrangerObjectPtrVariant > | objects_before_start_ |
Cloned objects before starting recording. | |
std::vector< structure::arrangement::Region::Uuid > | recorded_ids_ |
Recorded region identifiers, to be used for creating the undoable actions. | |
std::vector< structure::arrangement::AutomationPoint * > | pending_aps_ |
Pending recorded automation points. | |
bool | currently_processing_ = false |
std::binary_semaphore | processing_sem_ { 1 } |
bool | freeing_ = false |
Handles the recording logic for the application.
This class is responsible for managing the recording process, including handling recording events, creating new regions, and managing automation points. It uses a queue to process recording events in a separate thread, and provides methods for starting, pausing, and stopping recording.
The class is designed to be thread-safe, with a binary semaphore to ensure that only one thread can access the recording logic at a time.
Definition at line 36 of file recording_manager.h.
using zrythm::engine::session::RecordingManager::AutomationPoint = structure::arrangement::AutomationPoint |
Definition at line 42 of file recording_manager.h.
using zrythm::engine::session::RecordingManager::AutomationRegion = structure::arrangement::AutomationRegion |
Definition at line 41 of file recording_manager.h.
using zrythm::engine::session::RecordingManager::AutomationTrack = structure::tracks::AutomationTrack |
Definition at line 40 of file recording_manager.h.
Definition at line 39 of file recording_manager.h.
zrythm::engine::session::RecordingManager::RecordingManager | ( | QObject * | parent = nullptr | ) |
Creates the event queue and starts the event loop.
Must be called from a GTK thread.
void zrythm::engine::session::RecordingManager::handle_recording | ( | const structure::tracks::TrackProcessor * | track_processor, |
const EngineProcessTimeInfo * | time_nfo ) |
Handles the recording logic inside the process cycle.
The MidiEvents are already dequeued at this point.
g_frames_start | Global start frames. |
nframes | Number of frames to process. If this is zero, a pause will be added. See RECORDING_EVENT_TYPE_PAUSE_TRACK_RECORDING and RECORDING_EVENT_TYPE_PAUSE_AUTOMATION_RECORDING. |
bool zrythm::engine::session::RecordingManager::currently_processing_ = false |
Definition at line 176 of file recording_manager.h.
ObjectPool<RecordingEvent> zrythm::engine::session::RecordingManager::event_obj_pool_ |
Memory pool of event structs to avoid real time allocation.
Definition at line 162 of file recording_manager.h.
MPMCQueue<RecordingEvent *> zrythm::engine::session::RecordingManager::event_queue_ |
Event queue.
Definition at line 157 of file recording_manager.h.
bool zrythm::engine::session::RecordingManager::freeing_ = false |
Definition at line 179 of file recording_manager.h.
int zrythm::engine::session::RecordingManager::num_active_recordings_ = 0 |
Number of recordings currently in progress.
Definition at line 154 of file recording_manager.h.
std::vector<structure::arrangement::ArrangerObjectPtrVariant> zrythm::engine::session::RecordingManager::objects_before_start_ |
Cloned objects before starting recording.
Definition at line 166 of file recording_manager.h.
std::vector<structure::arrangement::AutomationPoint *> zrythm::engine::session::RecordingManager::pending_aps_ |
Pending recorded automation points.
Definition at line 174 of file recording_manager.h.
std::binary_semaphore zrythm::engine::session::RecordingManager::processing_sem_ { 1 } |
Definition at line 177 of file recording_manager.h.
std::vector<structure::arrangement::Region::Uuid> zrythm::engine::session::RecordingManager::recorded_ids_ |
Recorded region identifiers, to be used for creating the undoable actions.
Definition at line 171 of file recording_manager.h.