Loading...
Searching...
No Matches
Nodes::Looper::transport Struct Reference

Classes

struct  timeline_point
 

Public Member Functions

bool quantized () const noexcept
 
double loop_tempo (const ossia::token_request &tk, int64_t frames) const noexcept
 
timeline_point timeline (const ossia::token_request &tk) const noexcept
 
void taking (LoopMode m) noexcept
 Called by the looper whenever it records or overdubs.
 
bool is_taking () const noexcept
 
LoopMode end_of_recording (AfterRecord after) const noexcept
 
void end_recording (AfterRecord after) noexcept
 
void ask (LoopMode m, bool empty) noexcept
 
void settle (bool empty) noexcept
 A loop emptied while Overdub is asked for, e.g. by Clear: it is recorded.
 
void press (TransportAction a, bool empty, AfterRecord after_record, AfterOverdub after) noexcept
 
void restart_recording () noexcept
 
void request_point () noexcept
 
bool queued () const noexcept
 Changes queued after the one waiting for the grid.
 
bool restart_pending () const noexcept
 What waits for the next grid point besides a change of mode.
 
bool new_pass_pending () const noexcept
 
void play_captured (int64_t position) noexcept
 
void stopped (bool empty) noexcept
 
void reset () noexcept
 
template<typename Engine >
void operator() (const ossia::token_request &tk, ossia::exec_state_facade st, const transport_settings &s, Engine &e)
 

Public Attributes

LoopMode wanted {LoopMode::Stop}
 
LoopMode quantizedPlayMode {LoopMode::Stop}
 
LoopMode actualMode {LoopMode::Stop}
 
int64_t playbackPos {}
 
ossia::quarter_note recordStartBar {-1.}
 
ossia::quarter_note recordEndBar {-1.}
 
halp::grid_value quantif {}
 The grid of this tick; no_grid() when changes are taken up at once.
 
std::optional< ossia::time_value > this_buffer_quantif_time
 
int64_t tickStartSample {}
 
int postaction_bars {}
 
double sampleRate {48000.}
 
bool endedByPostaction {false}
 
int64_t frame {}
 Frames run since the transport was created, at the start of this tick.
 
std::optional< int64_t > lastPointFrame
 Where the last grid point fell, on the same count.
 
ossia::time_value recordStartDate {}
 Model date at which the current recording started.
 
ossia::quarter_note recordStartPosition {}
 Musical position at which the current recording started.
 

Member Function Documentation

◆ ask()

void Nodes::Looper::transport::ask ( LoopMode  m,
bool  empty 
)
inlinenoexcept

Mode set to m, from its port or by Play, Stop, Record or Overdub: what is asked for from now on, whatever was waiting for the grid. Overdubbing an empty loop records it, as Record does, and the recording then gives way to overdubbing. Recording over a loop overdubs it, as on a looper pedal: a new loop is recorded once the loop is cleared. empty: there is no loop and none is being recorded.

◆ end_of_recording()

LoopMode Nodes::Looper::transport::end_of_recording ( AfterRecord  after) const
inlinenoexcept

What the recording going on, or about to start, gives way to when it ends by itself or by Rec / Play / Dub: overdubbing when it was asked for as an overdub of an empty loop, else After record.

◆ end_recording()

void Nodes::Looper::transport::end_recording ( AfterRecord  after)
inlinenoexcept

A recording reaching the end of its buffer ends as if its bars had run out.

◆ loop_tempo()

double Nodes::Looper::transport::loop_tempo ( const ossia::token_request &  tk,
int64_t  frames 
) const
inlinenoexcept

The tempo of a recording that is closing: the quarters it went over for the frames it kept. A tempo change during the recording is accounted for; the tempo of the moment is used where there are no quarters.

◆ play_captured()

void Nodes::Looper::transport::play_captured ( int64_t  position)
inlinenoexcept

The looper made a loop out of what it heard before, without recording: it plays it from position, and Play is what is asked for.

◆ press()

void Nodes::Looper::transport::press ( TransportAction  a,
bool  empty,
AfterRecord  after_record,
AfterOverdub  after 
)
inlinenoexcept

An action. Rec / Play / Dub and Play / Stop act on the mode the looper will be in once what waits for the grid is taken up: pressed again before the grid point, they queue their change after it, and each change is taken up on a grid point of its own. empty: there is no loop and none is being recorded.

◆ request_point()

void Nodes::Looper::transport::request_point ( )
inlinenoexcept

The looper has something to do on the next grid point: the transport calls its looper_point() there.

◆ restart_recording()

void Nodes::Looper::transport::restart_recording ( )
inlinenoexcept

Undo or Clear dropped the recording going on: it starts again on the next frame, with its bars, start and tempo counted from there.

◆ stopped()

void Nodes::Looper::transport::stopped ( bool  empty)
inlinenoexcept

The score stopped: a recording or an overdub, going on or waiting for the grid, is over, and the next start plays the loop it left rather than taking in more over it. empty: there is no loop.

Member Data Documentation

◆ endedByPostaction

bool Nodes::Looper::transport::endedByPostaction {false}

Whether its bars running out is what ended the recording, rather than the mode being changed by hand.

◆ wanted

LoopMode Nodes::Looper::transport::wanted {LoopMode::Stop}

The mode asked for: Mode, or what an action, a recording's end or a full buffer changed it to. The looper shows it in Mode, so that what Mode says is what the looper does.


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