Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
recording_event.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2019-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
11#ifndef __AUDIO_RECORDING_EVENTS_H__
12#define __AUDIO_RECORDING_EVENTS_H__
13
14#include "dsp/midi_event.h"
15#include "dsp/port_identifier.h"
16#include "utils/types.h"
17
24#define recording_event_queue_push_back_event(q, x) \
25 mpmc_queue_push_back (q, (void *) x)
26
27#define recording_event_queue_dequeue_event(q, x) \
28 mpmc_queue_dequeue (q, (void *) x)
29
33#define RECORDING_EVENTS_PUSH_AUDIO(et, _arg) \
34 if (RECORDING_MANAGER->event_queue) \
35 { \
36 RecordingEvent * ev = (RecordingEvent *) object_pool_get ( \
37 RECORDING_MANAGER->event_obj_pool); \
38 ev->type = et; \
39 ev->arg = (void *) _arg; \
40 event_queue_push_back_event (RECORDING_MANAGER->event_queue, _ev); \
41 }
42
44{
45 RECORDING_EVENT_TYPE_START_TRACK_RECORDING,
46 RECORDING_EVENT_TYPE_START_AUTOMATION_RECORDING,
47
50 RECORDING_EVENT_TYPE_AUDIO,
51 RECORDING_EVENT_TYPE_AUTOMATION,
52
61 RECORDING_EVENT_TYPE_PAUSE_AUTOMATION_RECORDING,
62
63 RECORDING_EVENT_TYPE_STOP_TRACK_RECORDING,
64 RECORDING_EVENT_TYPE_STOP_AUTOMATION_RECORDING,
66
73typedef struct RecordingEvent
74{
76
78 unsigned int track_name_hash;
79
81 char region_name[200];
82
85
88
95 float lbuf[9000];
96 float rbuf[9000];
97
98 int has_midi_event;
99
104
107
109 // float control_val;
110
113
114 /* debug info */
115 const char * file;
116 const char * func;
117 int lineno;
119
123#define recording_event_init(re) \
124 re->type = 0; \
125 re->track_name_hash = 0; \
126 re->region_name[0] = '\0'; \
127 re->g_start_frame_w_offset = 0; \
128 re->local_offset = 0; \
129 re->has_midi_event = 0; \
130 memset (&re->midi_event, 0, sizeof (MidiEvent)); \
131 re->automation_track_idx = 0; \
132 re->nframes = 0; \
133 re->file = __FILE__; \
134 re->func = __func__; \
135 re->lineno = __LINE__
136
137COLD MALLOC RecordingEvent *
138recording_event_new (void);
139
140void
141recording_event_print (RecordingEvent * self);
142
143void
144recording_event_free (RecordingEvent * self);
145
150#endif
RecordingEventType
@ RECORDING_EVENT_TYPE_PAUSE_TRACK_RECORDING
These events are for temporarily stopping recording (eg, when outside the punch range or when looping...
@ RECORDING_EVENT_TYPE_MIDI
These events are for processing any range.
uint_fast64_t unsigned_frame_t
Unsigned type for frame index.
Definition types.h:60
uint32_t nframes_t
Frame count.
Definition types.h:35
MIDI events.
Port identifier.
Timed MIDI event.
Definition midi_event.h:45
A recording event.
unsigned_frame_t g_start_frame_w_offset
Global start frames of the event (including offset).
float lbuf[9000]
The actual data (if audio).
char region_name[200]
ZRegion name, if applicable.
unsigned int track_name_hash
The name of the track this event is for.
MidiEvent midi_event
MidiEvent, if midi.
int automation_track_idx
Index of automation track, if automation.
nframes_t nframes
Automation value, if automation.
nframes_t local_offset
Offset in current cycle that this event starts from.
Custom types.