Loading...
Searching...
No Matches
DataflowClock.hpp
1#pragma once
2#include <Audio/AudioTick.hpp>
3#include <Execution/Clock/ClockFactory.hpp>
4#include <Execution/Clock/DefaultClock.hpp>
5#include <Execution/DocumentPlugin.hpp>
6namespace Audio
7{
8class ApplicationPlugin;
9}
10namespace Process
11{
12class Cable;
13}
14namespace Execution::ManualClock
15{
16struct StepGate;
17}
18namespace Dataflow
19{
20class DocumentPlugin;
21class SCORE_PLUGIN_ENGINE_EXPORT Clock
22 : public Execution::Clock
23 , public Nano::Observer
24{
25public:
26 Clock(const Execution::Context& ctx, bool stepping = false);
27
28 ~Clock() override;
29
30 bool paused() const override;
31 bool setStepping(bool stepping) override;
32 bool stepping() const noexcept override;
33 bool stepTo(double seconds) override;
34 double steppedSeconds() const noexcept;
35
36protected:
37 // Clock interface
38 void play_impl(const TimeVal& t) override;
39 void pause_impl() override;
40 void resume_impl() override;
41 void stop_impl() override;
42
43private:
44 ossia::audio_engine::fun_type runningTick() const;
45
49 bool m_paused{};
50 bool m_stepping{};
51
52 ossia::audio_engine::fun_type m_play_tick{};
53 ossia::audio_engine::fun_type m_pause_tick{};
54 std::shared_ptr<Execution::ManualClock::StepGate> m_gate;
55};
56
58{
59 SCORE_CONCRETE("e9ae6dec-a10f-414f-9060-b21d15b5d58d")
60
61public:
62 QString prettyName() const override;
63 std::unique_ptr<Execution::Clock> make(const Execution::Context& ctx) override;
64
66 makeTimeFunction(const score::DocumentContext& ctx) const override;
67 Execution::reverse_time_function
68 makeReverseTimeFunction(const score::DocumentContext& ctx) const override;
69};
70}
Definition AudioApplicationPlugin.hpp:24
Definition DataflowClock.hpp:58
Definition DataflowClock.hpp:24
Definition ClockFactory.hpp:82
Definition ClockFactory.hpp:42
Definition DefaultClock.hpp:14
Definition plugins/score-plugin-engine/Execution/DocumentPlugin.hpp:61
smallfun::function< ossia::time_value(const TimeVal &)> time_function
Sets-up and manages the main execution clock.
Definition ExecutionContext.hpp:66
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition ExecutionContext.hpp:208
Definition TimeValue.hpp:21
Definition DocumentContext.hpp:18