Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
MidiRegion Class Referencefinal

A Region containing MIDI events. More...

#include <src/gui/dsp/midi_region.h>

Inheritance diagram for MidiRegion:
Collaboration diagram for MidiRegion:

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_.
 
MidiNotepop_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.
 
MidiNoteget_first_midi_note ()
 Gets first midi note.
 
MidiNoteget_last_midi_note ()
 Gets last midi note.
 
MidiNoteget_highest_midi_note ()
 Gets highest midi note.
 
MidiNoteget_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>
MidiLaneget_lane (this const SelfT &self)
 
template<typename SelfT>
requires std::is_same_v<SelfT, AudioRegion>
AudioLaneget_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< TrackUuidget_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
 
UuidIdentifiableObjectoperator= (const UuidIdentifiableObject &other)=default
 
UuidIdentifiableObjectoperator= (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
 
RegionLinkGroupget_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)
 
ArrangerObjectListModelget_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< MidiRegionclone_unique (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const
 
std::shared_ptr< MidiRegionclone_shared (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const
 
MidiRegionclone_raw_ptr (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const
 
MidiRegionclone_qobject (QObject *parent, ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const
 
QScopedPointer< MidiRegionclone_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
ArrangerObjectRegistryobject_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
PositionProxyend_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 &region)
 
void from_json (const nlohmann::json &j, MidiRegion &region)
 

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 MidiRegionat_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_
 
PositionProxypos_ = nullptr
 Position (or start Position if the object has length).
 
std::optional< TrackUuidtrack_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_
 

Detailed Description

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.

Member Typedef Documentation

◆ ChordDescriptor

Member Function Documentation

◆ add_events()

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.

Parameters
add_region_startAdd the region start offset to the positions.
export_fullTraverse 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.
startEvents before this (global) position will be skipped.
endEvents after this (global) position will be skipped.

◆ export_to_midi_file()

void MidiRegion::export_to_midi_file ( const std::string & full_path,
int midi_version,
bool export_full ) const

Exports the Region to a specified MIDI file.

Parameters
full_pathAbsolute path to the MIDI file.
export_fullTraverse 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.

◆ get_field_name_for_serialization()

std::string MidiRegion::get_field_name_for_serialization ( const MidiNote * ) const
inlineoverride

Definition at line 220 of file midi_region.h.

◆ get_location()

Location MidiRegion::get_location ( const MidiNote & ) const
inlineoverride

Definition at line 215 of file midi_region.h.

◆ get_note_positions_in_export()

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.

Parameters
[in,out]start_posstart position of the event
[in,out]end_posend position of the event
repeat_indexrepetition counter for loop offset

◆ get_velocities_in_range()

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.

Parameters
insideWhether to find velocities inside the range (true) or outside (false).

◆ init_after_cloning()

void MidiRegion::init_after_cloning ( const MidiRegion & other,
ObjectCloneType clone_type )
overridevirtual

Initializes the cloned object.

Note
Only final classes should implement this.
Exceptions
ZrythmExceptionIf the object could not be cloned.

Implements ICloneable< MidiRegion >.

◆ is_note_export_start_pos_in_full_region()

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.

Parameters
offset_in_ticksOffset value if note is repeated inside a loop

◆ pop_unended_note()

MidiNote * MidiRegion::pop_unended_note ( int pitch)

Returns the midi note with the given pitch from the unended notes.

Used when recording.

Parameters
pitchThe pitch. If -1, it returns any unended note. This is useful when the loop point is met and we want to end them all.

◆ print_midi_notes()

void MidiRegion::print_midi_notes ( ) const

Prints the MidiNotes in the Region.

Used for debugging.

◆ start_unended_note()

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_.

Parameters
end_posIf this is nullptr, it will be set to 1 tick after the start_pos.

◆ validate()

bool MidiRegion::validate ( bool is_project,
dsp::FramesPerTick frames_per_tick ) const
overridevirtual

Validates the arranger object.

Parameters
frames_per_tickFrames per tick used when validating audio regions. Passing 0 will use the value from the current engine.
Returns
Whether valid.

Must only be implemented by final objects.

Implements ArrangerObject.

◆ write_to_midi_file()

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.

Parameters
add_region_startAdd the region start offset to the positions.
export_fullTraverse 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_tracksExport 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_posWhether to use the track/lane position in the MIDI data. The MIDI track will be set to 1 if false.

Friends And Related Symbol Documentation

◆ ArrangerObjectFactory

friend class ArrangerObjectFactory
friend

Definition at line 51 of file midi_region.h.

◆ from_json

void from_json ( const nlohmann::json & j,
MidiRegion & region )
friend

Definition at line 237 of file midi_region.h.

◆ RegionImpl< MidiRegion >

friend class RegionImpl< MidiRegion >
friend

Definition at line 45 of file midi_region.h.

◆ to_json

void to_json ( nlohmann::json & j,
const MidiRegion & region )
friend

Definition at line 226 of file midi_region.h.

Field Documentation

◆ unended_notes_

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.

Note
These are present in midi_notes_ and must not be deleted separately.

Definition at line 259 of file midi_region.h.


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