|
Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
|
A Region containing MIDI events. More...
#include <src/gui/dsp/midi_region.h>


Public Types | |
| using | ChordDescriptor = zrythm::dsp::ChordDescriptor |
Public Types inherited from ArrangerObject | |
| enum class | ResizeType { Normal , Loop , Fade , Stretch , StretchTempoChange } |
| Flag used in some functions. More... | |
| enum class | Type { MidiRegion , AudioRegion , ChordRegion , AutomationRegion , MidiNote , ChordObject , ScaleObject , Marker , AutomationPoint } |
| The type of the object. More... | |
| enum class | Flags { NonProject = 1 << 0 } |
| Flags. More... | |
| enum class | PositionType { Start , End , ClipStart , LoopStart , LoopEnd , FadeIn , FadeOut } |
| using | SelectionStatusGetter = std::function<bool (const Uuid &)> |
| using | Position = zrythm::dsp::Position |
| using | ArrangerObjectPtr = ArrangerObject * |
Public Types inherited from RegionImpl< MidiRegion > | |
| using | RegionTPtr |
| using | ChildT |
| using | ChildTPtr |
Public Types inherited from NamedObject | |
| using | NameValidator = std::function<bool (const utils::Utf8String &)> |
Public Types inherited from ColoredObject | |
| using | Color = zrythm::utils::Color |
Public Types inherited from ArrangerObjectOwner< MidiNote > | |
| using | PortUuid |
| using | ArrangerObjectChildType |
Public Member Functions | |
| void | start_unended_note (Position *start_pos, Position *end_pos, int pitch, int vel, bool pub_events) |
| Starts an unended note with the given pitch and velocity and adds it to midi_notes_. | |
| MidiNote * | pop_unended_note (int pitch) |
| Returns the midi note with the given pitch from the unended notes. | |
| void | print_midi_notes () const |
| Prints the MidiNotes in the Region. | |
| MidiNote * | get_first_midi_note () |
| Gets first midi note. | |
| MidiNote * | get_last_midi_note () |
| Gets last midi note. | |
| MidiNote * | get_highest_midi_note () |
| Gets highest midi note. | |
| MidiNote * | get_lowest_midi_note () |
| Gets lowest midi note. | |
| void | write_to_midi_file (MIDI_FILE *mf, bool add_region_start, bool export_full) const |
| Exports the Region to an existing MIDI file instance. | |
| void | export_to_midi_file (const std::string &full_path, int midi_version, bool export_full) const |
| Exports the Region to a specified MIDI file. | |
| uint8_t | get_midi_ch () const |
| Returns the MIDI channel that this region should be played on, starting from 1. | |
| bool | is_note_playable (const MidiNote &midi_note) const |
| Returns whether the given note is not muted and starts within any playable part of the region. | |
| void | add_events (dsp::MidiEventVector &events, const Position *start, const Position *end, bool add_region_start, bool full) const |
| Adds the contents of the region converted into events. | |
| void | get_velocities_in_range (const Position *start_pos, const Position *end_pos, std::vector< Velocity * > &velocities, bool inside) |
| Fills in the array with all the velocities in the project that are within or outside the range given. | |
| bool | validate (bool is_project, dsp::FramesPerTick frames_per_tick) const override |
| Validates the arranger object. | |
| void | init_after_cloning (const MidiRegion &other, ObjectCloneType clone_type) override |
| Initializes the cloned object. | |
| void | get_note_positions_in_export (Position *start_pos, Position *end_pos, int repeat_index) const |
| Set positions to the exact values in the export region as it is played inside Zrythm. | |
| bool | is_note_export_start_pos_in_full_region (Position start_pos) const |
| Returns if the given positions are in a given region as it is played inside Zrythm. | |
| Location | get_location (const MidiNote &) const override |
| std::string | get_field_name_for_serialization (const MidiNote *) const override |
Public Member Functions inherited from LaneOwnedObject | |
| Z_DISABLE_COPY_MOVE (LaneOwnedObject) | |
| bool | is_inserted_in_lane () const |
| template<typename SelfT> requires std::is_same_v<SelfT, MidiRegion> | |
| MidiLane & | get_lane (this const SelfT &self) |
| template<typename SelfT> requires std::is_same_v<SelfT, AudioRegion> | |
| AudioLane & | get_lane (this const SelfT &self) |
| template<typename SelfT> | |
| auto | get_lane_index (this const SelfT &self) |
| void | set_lane (TrackLanePtrVariant lane) |
| Sets the track lane. | |
| void | copy_members_from (const LaneOwnedObject &other, ObjectCloneType clone_type) |
Public Member Functions inherited from ArrangerObject | |
| auto | get_type () const |
| bool | is_start_hit_by_range (const dsp::Position &start, const dsp::Position &end, bool range_start_inclusive=true, bool range_end_inclusive=false) const |
| Returns whether the given object is hit by the given range. | |
| bool | is_start_hit_by_range (const signed_frame_t global_frames_start, const signed_frame_t global_frames_end, bool range_start_inclusive=true, bool range_end_inclusive=false) const |
| void | set_parent_on_base_qproperties (QObject &derived) |
| Set the parent on QObject's that are children of this class. | |
| auto | get_position () const |
| Getter. | |
| void | position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame) |
| The setter is for use in e.g. | |
| void | set_position_unvalidated (const dsp::Position &pos) |
| bool | is_position_valid (const dsp::Position &pos, PositionType pos_type, dsp::TicksPerFrame ticks_per_frame) const |
| Returns if the given Position is valid. | |
| bool | set_position (const dsp::Position &pos, PositionType pos_type, bool validate, dsp::TicksPerFrame ticks_per_frame) |
| Sets the given position on the object, optionally attempting to validate before. | |
| void | move (double ticks, dsp::FramesPerTick frames_per_tick) |
| Moves the object by the given amount of ticks. | |
| void | set_track_id (const TrackUuid &track_id) |
| void | set_track_id (std::optional< TrackUuid > track_id) |
| void | unset_track_id () |
| void | update_positions (bool from_ticks, bool bpm_change, dsp::FramesPerTick frames_per_tick) |
| Updates the positions in each child recursively. | |
| auto | get_track () const |
| Returns the Track this ArrangerObject is in. | |
| std::optional< TrackUuid > | get_track_id () const |
| std::optional< ArrangerObjectPtrVariant > | remove_from_project (bool free_obj, bool fire_events=false) |
| Removes the object (which can be obtained from find_in_project()) from its parent in the project. | |
| void | set_selection_status_getter (SelectionStatusGetter getter) |
| void | unset_selection_status_getter () |
| virtual bool | is_deletable () const |
| Returns whether the given object is deletable or not (eg, start marker). | |
Public Member Functions inherited from zrythm::utils::UuidIdentifiableObject< ArrangerObject > | |
| UuidIdentifiableObject (const Uuid &id) | |
| UuidIdentifiableObject (const UuidIdentifiableObject &other)=default | |
| UuidIdentifiableObject (UuidIdentifiableObject &&other)=default | |
| UuidIdentifiableObject & | operator= (const UuidIdentifiableObject &other)=default |
| UuidIdentifiableObject & | operator= (UuidIdentifiableObject &&other)=default |
| auto | get_uuid () const |
| void | copy_members_from (const UuidIdentifiableObject &other) |
Public Member Functions inherited from RegionImpl< MidiRegion > | |
| void | append_children (this MidiRegion &self, std::vector< RegionOwnedObject * > &children) |
| Fills the given vector with all the children of this region. | |
| void | fill_midi_events (TrackPtrVariant track_var, const EngineProcessTimeInfo &time_nfo, bool note_off_at_end, bool is_note_off_for_loop_or_region_end, dsp::MidiEventVector &midi_events) const |
| Fills MIDI event queue from this MIDI or Chord region. | |
| auto | get_object_ptr (const ArrangerObject::Uuid id) const |
| auto | get_object_ptr (const ArrangerObjectUuidReference &id) const |
| auto & | get_arranger_object_registry () const |
| auto & | get_arranger_object_registry () |
| void | remove_all_children (this MidiRegion &self) |
| Removes all children objects from the region. | |
| bool | get_muted (bool check_parent) const override |
| Gets the mute status of the object. | |
| ArrangerObjectPtrVariant | add_clone_to_project (bool fire_events) const final |
| Appends the ArrangerObject to where it belongs in the project (eg, a Track), without taking into account its previous index (eg, before deletion if undoing). | |
| ArrangerObjectPtrVariant | insert_clone_to_project () const final |
| Inserts the object where it belongs in the project (eg, a Track). | |
| void | set_link_group (int group_idx, bool update_identifier) |
| Sets the link group to the region. | |
| void | update_identifier (this MidiRegion &self) |
| Disconnects the region and anything using it. | |
| void | unlink () |
| Removes the link group from the region, if any. | |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
| void | stretch (double ratio) |
| Stretch the region's contents. | |
| void | create_link_group_if_none () |
Public Member Functions inherited from Region | |
| bool | is_midi () const |
| bool | is_audio () const |
| bool | is_automation () const |
| bool | is_chord () const |
| RegionLinkGroup * | get_link_group () |
| Returns the region's link group. | |
| bool | has_link_group () const |
| signed_frame_t | timeline_frames_to_local (signed_frame_t timeline_frames, bool normalize) const |
| Converts frames on the timeline (global) to local frames (in the clip). | |
| void | get_frames_till_next_loop_or_end (signed_frame_t timeline_frames, signed_frame_t *ret_frames, bool *is_loop) const |
| Returns the number of frames until the next loop end point or the end of the region. | |
| void | update_link_group () |
| Updates all other regions in the region link group, if any. | |
| bool | is_recording () |
| Returns if this region is currently being recorded onto. | |
Public Member Functions inherited from NamedObject | |
| NamedObject (NameValidator validator=[](const utils::Utf8String &) { return true;}) | |
| utils::Utf8String | get_name () const |
| Returns the name of the object. | |
| void | gen_escaped_name () |
| Generates the escaped name for the object. | |
| void | set_name (this auto &&self, const utils::Utf8String &name) |
| Sets the name of the object. | |
| void | generate_name_from_automation_track (this auto &self, const auto &track, const auto &at) |
| void | generate_name_from_track (this auto &self, const auto &track) |
| void | generate_name (this auto &self, std::optional< utils::Utf8String > base_name, const auto *at, const auto *track) |
| void | set_name_with_action (const utils::Utf8String &name) |
| Changes the name and adds an action to the undo stack. | |
| utils::Utf8String | gen_human_friendly_name () const final |
| Generates a human readable name for the object. | |
Public Member Functions inherited from MuteableObject | |
| void | set_muted (bool muted, bool fire_events) |
| Sets the mute status of the object. | |
Public Member Functions inherited from LoopableObject | |
| int | get_num_loops (bool count_incomplete) const |
| Returns the number of loops in the ArrangerObject, optionally including incomplete ones. | |
| const auto & | get_clip_start_pos () const |
| Getter. | |
| const auto & | get_loop_start_pos () const |
| Getter. | |
| const auto & | get_loop_end_pos () const |
| Getter. | |
| void | clip_start_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame) |
| The setter is for use in e.g. | |
| void | loop_start_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame) |
| The setter is for use in e.g. | |
| void | loop_end_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame) |
| The setter is for use in e.g. | |
| void | set_loop_start_position_unvalidated (const dsp::Position &pos) |
| void | set_loop_end_position_unvalidated (const dsp::Position &pos) |
| void | set_clip_start_position_unvalidated (const dsp::Position &pos) |
| double | get_loop_length_in_ticks () const |
| Returns the length of the loop in ticks. | |
| auto | get_loop_length_in_frames () const |
| Returns the length of the loop in frames. | |
| bool | is_looped () const |
Public Member Functions inherited from BoundedObject | |
| auto | get_end_position () const |
| Getter. | |
| void | parent_base_qproperties (QObject &derived) |
| void | end_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame) |
| The setter is for use in e.g. | |
| void | set_end_position_unvalidated (const dsp::Position &pos) |
| auto | get_length_in_ticks () const |
| Returns the length in ticks. | |
| auto | get_length_in_frames () const |
| Returns the length in frames. | |
| void | resize (bool left, ResizeType type, double ticks, bool during_ui_action) |
| Resizes the object on the left side or right side by given amount of ticks, for objects that do not have loops (currently none? | |
| template<typename SelfT> requires (FinalArrangerObjectSubclass<SelfT>) | |
| void | set_start_pos_full_size (this SelfT &self, const Position &pos, dsp::FramesPerTick frames_per_tick) |
| Sets the end position of the ArrangerObject and also sets the loop end and fade out (if object supports those) so that they are at the end. | |
| template<typename SelfT> requires (FinalArrangerObjectSubclass<SelfT>) | |
| void | set_end_pos_full_size (this SelfT &self, const dsp::Position &pos, dsp::FramesPerTick frames_per_tick) |
| Sets the end position of the ArrangerObject and also sets the loop end and fade out (if object supports those) to that position. | |
| bool | is_hit (const dsp::Position &pos, bool object_end_pos_inclusive=false) const |
| Returns whether the object is hit by the given position (local position if non-timeline object). | |
| bool | is_hit (const signed_frame_t frames, bool object_end_pos_inclusive=false) const |
| bool | is_hit_by_range (const dsp::Position &start, const dsp::Position &end, bool range_start_inclusive=true, bool range_end_inclusive=false, bool object_end_pos_inclusive=false) const |
| Returns whether the given object is hit by the given range. | |
| bool | is_hit_by_range (signed_frame_t global_frames_start, signed_frame_t global_frames_end, bool range_start_inclusive=true, bool range_end_inclusive=false, bool object_end_pos_inclusive=false) const |
| virtual bool | is_inside_range (const dsp::Position &start, const dsp::Position &end) const |
| Checks if any part of the object is hit by the given range. | |
Public Member Functions inherited from ColoredObject | |
| QColor | get_effective_color () const |
| Returns the color of the object if set, otherwise the owner track's color. | |
Public Member Functions inherited from ArrangerObjectOwner< MidiNote > | |
| auto & | get_children_vector () |
| auto & | get_children_vector () const |
| auto | get_children_view () const |
| auto & | get_children_snapshots_vector () |
| auto & | get_children_snapshots_vector () const |
| auto | get_children_snapshots_view () const |
| void | add_ticks_to_children (double ticks, dsp::FramesPerTick frames_per_tick) |
| ArrangerObjectListModel * | get_model () const |
| ArrangerObjectUuidReference | remove_object (this SelfT &self, const ArrangerObject::Uuid &id) |
| void | insert_object (this SelfT &self, const ArrangerObjectUuidReference &obj_ref, int idx) |
| void | add_object (this SelfT &self, const ArrangerObjectUuidReference &obj_ref) |
| void | clear_objects () |
| virtual Location | get_location (const ChildT &) const=0 |
| Returns the current location of this owner. | |
| virtual std::string | get_field_name_for_serialization (const ChildT *) const=0 |
| Get the children field name to be used during serialization/deserialization. | |
| void | copy_members_from (const ArrangerObjectOwner &other, ObjectCloneType clone_type) |
| void | copy_children (const ArrangerObjectOwner &other) |
Public Member Functions inherited from ICloneable< MidiRegion > | |
| std::unique_ptr< MidiRegion > | clone_unique (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| std::shared_ptr< MidiRegion > | clone_shared (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| MidiRegion * | clone_raw_ptr (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| MidiRegion * | clone_qobject (QObject *parent, ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| QScopedPointer< MidiRegion > | clone_unique_qobject (QObject *parent, ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
Data Fields | |
| std::vector< MidiNote * > | unended_notes_ |
| Unended notes started in recording with MIDI NOTE ON signal but haven't received a NOTE OFF yet. | |
Data Fields inherited from LaneOwnedObject | |
| std::optional< int > | index_in_prev_lane_ |
| Object's index in the previous lane (before being moved to a new lane/track). | |
Data Fields inherited from ArrangerObject | |
| Flags | flags_ {} |
| Track this object belongs to (cache to be set during graph calculation). | |
Data Fields inherited from Region | |
| ArrangerObjectRegistry & | object_registry_ |
| std::optional< int > | link_group_ |
| int | bounce_ = 0 |
| Set to ON during bouncing if this region should be included. | |
| bool | stretching_ = false |
| Whether currently running the stretching algorithm. | |
| double | stretch_ratio_ = 1.0 |
| Used during arranger UI overlay actions. | |
| double | before_length_ = 0.0 |
| The length before stretching, in ticks. | |
Data Fields inherited from MuteableObject | |
| bool | muted_ = false |
| Whether muted or not. | |
Data Fields inherited from LoopableObject | |
| dsp::Position | clip_start_pos_ |
| Start position of the clip loop, relative to the object's start. | |
| dsp::Position | loop_start_pos_ |
| Loop start Position relative to the object's start. | |
| dsp::Position | loop_end_pos_ |
| End position of the clip loop, relative to the object's start. | |
Data Fields inherited from BoundedObject | |
| PositionProxy * | end_pos_ = nullptr |
| End Position, if the object has one. | |
Data Fields inherited from ColoredObject | |
| Color | color_ |
| Color independent of owner (Track/Region etc.). | |
| bool | use_color_ = false |
| Whether to use the custom color. | |
Data Fields inherited from ICloneable< MidiRegion > | |
| friend | Derived |
Friends | |
| class | RegionImpl< MidiRegion > |
| class | ArrangerObjectFactory |
| void | to_json (nlohmann::json &j, const MidiRegion ®ion) |
| void | from_json (const nlohmann::json &j, MidiRegion ®ion) |
Additional Inherited Members | |
Static Public Member Functions inherited from RegionImpl< MidiRegion > | |
| static constexpr bool | is_midi () |
| static constexpr bool | is_audio () |
| static constexpr bool | is_automation () |
| static constexpr bool | is_chord () |
| static constexpr bool | is_laned () |
| static constexpr bool | has_children () |
| static MidiRegion * | at_position (const Track *track, const AutomationTrack *at, dsp::Position pos) |
| Returns the region at the given position in the given Track. | |
Static Public Member Functions inherited from Region | |
| static std::optional< ArrangerObjectPtrVariant > | get_at_pos (dsp::Position pos, Track *track, AutomationTrack *at, bool include_region_end=false) |
| Returns the region at the given position, if any. | |
Static Public Attributes inherited from ArrangerObject | |
| static constexpr double | DEFAULT_NUDGE_TICKS = 0.1 |
Protected Member Functions inherited from TimelineObject | |
| void | copy_members_from (const TimelineObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from ArrangerObject | |
| ArrangerObject (Type type, TrackResolver track_resolver) noexcept | |
| void | copy_members_from (const ArrangerObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
| To be called by validate() implementations. | |
Protected Member Functions inherited from Region | |
| Region (ArrangerObjectRegistry &object_registry) | |
| void | copy_members_from (const Region &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from NamedObject | |
| void | copy_members_from (const NamedObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from MuteableObject | |
| void | copy_members_from (const MuteableObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from LoopableObject | |
| void | copy_members_from (const LoopableObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
Protected Member Functions inherited from BoundedObject | |
| void | copy_members_from (const BoundedObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
Protected Member Functions inherited from ColoredObject | |
| void | copy_members_from (const ColoredObject &other, ObjectCloneType clone_type) |
| template<typename Derived> | |
| void | init_colored_object (this Derived &self) |
Protected Attributes inherited from ArrangerObject | |
| TrackResolver | track_resolver_ |
| PositionProxy * | pos_ = nullptr |
| Position (or start Position if the object has length). | |
| std::optional< TrackUuid > | track_id_ |
| ID of the track this object belongs to. | |
| std::optional< SelectionStatusGetter > | selection_status_getter_ |
| Whether part of an auditioner track. | |
Protected Attributes inherited from NamedObject | |
| utils::Utf8String | name_ |
| Name to be shown on the widget. | |
| utils::Utf8String | escaped_name_ |
| Escaped name for drawing. | |
| NameValidator | name_validator_ |
Protected Attributes inherited from ArrangerObjectOwner< MidiNote > | |
| bool | clearing_ |
A Region containing MIDI events.
MidiRegion represents a region in the timeline that holds MIDI note and controller data. It is specific to instrument/MIDI tracks and can be constructed from a MIDI file or a chord descriptor.
Definition at line 37 of file midi_region.h.
Definition at line 54 of file midi_region.h.
| void MidiRegion::add_events | ( | dsp::MidiEventVector & | events, |
| const Position * | start, | ||
| const Position * | end, | ||
| bool | add_region_start, | ||
| bool | full ) const |
Adds the contents of the region converted into events.
| add_region_start | Add the region start offset to the positions. |
| export_full | Traverse loops and export the MIDI file as it would be played inside Zrythm. If this is 0, only the original region (from true start to true end) is exported. |
| start | Events before this (global) position will be skipped. |
| end | Events after this (global) position will be skipped. |
| void MidiRegion::export_to_midi_file | ( | const std::string & | full_path, |
| int | midi_version, | ||
| bool | export_full ) const |
|
inlineoverride |
Definition at line 220 of file midi_region.h.
|
inlineoverride |
Definition at line 215 of file midi_region.h.
| void MidiRegion::get_note_positions_in_export | ( | Position * | start_pos, |
| Position * | end_pos, | ||
| int | repeat_index ) const |
Set positions to the exact values in the export region as it is played inside Zrythm.
| [in,out] | start_pos | start position of the event |
| [in,out] | end_pos | end position of the event |
| repeat_index | repetition counter for loop offset |
| void MidiRegion::get_velocities_in_range | ( | const Position * | start_pos, |
| const Position * | end_pos, | ||
| std::vector< Velocity * > & | velocities, | ||
| bool | inside ) |
Fills in the array with all the velocities in the project that are within or outside the range given.
| inside | Whether to find velocities inside the range (true) or outside (false). |
|
overridevirtual |
Initializes the cloned object.
| ZrythmException | If the object could not be cloned. |
Implements ICloneable< MidiRegion >.
| bool MidiRegion::is_note_export_start_pos_in_full_region | ( | Position | start_pos | ) | const |
Returns if the given positions are in a given region as it is played inside Zrythm.
| offset_in_ticks | Offset value if note is repeated inside a loop |
| MidiNote * MidiRegion::pop_unended_note | ( | int | pitch | ) |
Returns the midi note with the given pitch from the unended notes.
Used when recording.
| pitch | The pitch. If -1, it returns any unended note. This is useful when the loop point is met and we want to end them all. |
| void MidiRegion::print_midi_notes | ( | ) | const |
Prints the MidiNotes in the Region.
Used for debugging.
| void MidiRegion::start_unended_note | ( | Position * | start_pos, |
| Position * | end_pos, | ||
| int | pitch, | ||
| int | vel, | ||
| bool | pub_events ) |
Starts an unended note with the given pitch and velocity and adds it to midi_notes_.
| end_pos | If this is nullptr, it will be set to 1 tick after the start_pos. |
|
overridevirtual |
Validates the arranger object.
| frames_per_tick | Frames per tick used when validating audio regions. Passing 0 will use the value from the current engine. |
Must only be implemented by final objects.
Implements ArrangerObject.
| void MidiRegion::write_to_midi_file | ( | MIDI_FILE * | mf, |
| bool | add_region_start, | ||
| bool | export_full ) const |
Exports the Region to an existing MIDI file instance.
This must only be called when exporting single regions.
| add_region_start | Add the region start offset to the positions. |
| export_full | Traverse loops and export the MIDI file as it would be played inside Zrythm. If this is 0, only the original region (from true start to true end) is exported. |
| lanes_as_tracks | Export lanes as separate tracks (only possible with MIDI type 1). This will calculate a unique MIDI track number for the region's lane. |
| use_track_or_lane_pos | Whether to use the track/lane position in the MIDI data. The MIDI track will be set to 1 if false. |
|
friend |
Definition at line 51 of file midi_region.h.
|
friend |
Definition at line 237 of file midi_region.h.
|
friend |
Definition at line 45 of file midi_region.h.
|
friend |
Definition at line 226 of file midi_region.h.
| std::vector<MidiNote *> MidiRegion::unended_notes_ |
Unended notes started in recording with MIDI NOTE ON signal but haven't received a NOTE OFF yet.
This is also used temporarily when reading from MIDI files.
Definition at line 259 of file midi_region.h.