51#if defined(OSSIA_SCENARIO_DATAFLOW)
52 const std::shared_ptr<ossia::graph_node> node;
55 auto get_date()
const noexcept {
return m_date; }
56 auto get_offset()
const noexcept {
return m_offset; }
57 double get_internal_speed()
const noexcept {
return m_speed; }
59 double get_speed(
time_value date)
const noexcept;
64 double speed_override()
const noexcept;
69 double local_time_factor(
const ossia::token_request& parent_request)
const noexcept;
75 advance_for(
ossia::time_value,
const ossia::token_request& parent_request)
const noexcept;
80 int64_t take_backward_step(
85 void set_speed(
double g)
noexcept { m_speed = g; }
87 void set_parent_speed(
double sp)
noexcept { m_parentSpeed = sp; }
88 tick_transport_info current_transport_info()
const noexcept;
91 tick_current(
ossia::time_value offset,
const ossia::token_request& parent_request);
95 ossia::time_value,
const ossia::token_request& parent_request,
double ratio = 1.0);
104 const ossia::token_request& parent_request, int32_t start_sample = -1,
105 int32_t length_sample = -1);
106 void tick_offset_speed_precomputed(
108 const ossia::token_request& parent_request, int32_t start_sample = -1,
109 int32_t length_sample = -1);
129 static std::shared_ptr<time_interval> create(
142 void start_and_tick();
172 const time_value& get_nominal_duration()
const;
209 void add_time_process(std::shared_ptr<time_process>);
217 void reserve_processes(std::size_t sz);
226 bool running() const noexcept {
return m_running; }
230#if defined(OSSIA_SCENARIO_DATAFLOW)
231 void set_tempo_curve(std::optional<tempo_curve> curve);
233 void set_time_signature_map(std::optional<time_signature_map> map);
234 void set_quarter_duration(
double tu);
236#if defined(OSSIA_EXECUTION_LOG)
243 time_interval(
const time_interval&) =
delete;
244 time_interval(time_interval&&) =
delete;
245 time_interval& operator=(
const time_interval&) =
delete;
246 time_interval& operator=(time_interval&&) =
delete;
256 signature(time_value date,
const ossia::token_request& parent_request)
const noexcept;
258 tempo(time_value date,
const ossia::token_request& parent_request)
const noexcept;
259 double tempo(time_value date)
const noexcept;
263 const ossia::token_request& parent_request);
270 int64_t take_step(
double exact)
noexcept;
272 std::vector<std::shared_ptr<time_process>> m_processes;
273 time_interval::exec_callback m_callback;
278 time_value m_nominal{};
283 time_value m_offset{};
285 time_value m_tick_offset{};
289 int32_t m_tick_start_sample{-1};
290 int32_t m_tick_length_sample{-1};
292 double m_current_tempo{};
294 time_signature_map m_timeSignature{};
295#if defined(OSSIA_SCENARIO_DATAFLOW)
296 tempo_curve m_tempoCurve{};
299 ossia::quarter_note m_musical_start_last_signature{};
301 ossia::quarter_note m_musical_start_last_bar{};
302 ossia::quarter_note m_musical_start_position{};
304 ossia::quarter_note m_musical_end_last_bar{};
305 ossia::quarter_note m_musical_end_position{};
308 double m_date_residue{};
309 double m_globalSpeed{1.};
310 double m_parentSpeed{1.};
311 time_signature m_current_signature{};
312 double m_quarter_duration{ossia::quarter_duration<double>};
313 bool m_running{
false};
314 bool m_hasTempo{
false};
315 bool m_hasSignature{
false};
const std::vector< std::shared_ptr< time_process > > & get_time_processes() const
get time processes attached to the time_interval
Definition time_interval.hpp:221
std::optional< smallfun::function< void(bool, ossia::time_value), 32 > > exec_callback
to get the interval execution back
Definition time_interval.hpp:116