NAP
nap
system_modules
napsequenceaudio
src
sequenceplayeraudioclock.h
1
#pragma once
2
3
#include "sequenceserviceaudio.h"
4
5
#include <audio/utility/audiotypes.h>
6
#include <sequenceplayerclock.h>
7
#include <audio/core/process.h>
8
#include <concurrentqueue.h>
9
10
namespace
nap
11
{
13
14
// forward declares
15
class
SequenceServiceAudio;
16
class
SequencePlayerAudioClockProcess;
17
23
class
NAPAPI
SequencePlayerAudioClock
final :
public
SequencePlayerClock
24
{
25
RTTI_ENABLE(
SequencePlayerClock
);
26
public
:
31
SequencePlayerAudioClock
(
SequenceServiceAudio
& service);
32
33
// make this class explicitly non-copyable
34
SequencePlayerAudioClock
(
const
SequencePlayerAudioClock
&) =
delete
;
35
SequencePlayerAudioClock
& operator =(
const
SequencePlayerAudioClock
&) =
delete
;
36
40
void
onDestroy()
override
;
41
46
void
start(
Slot<double>
& updateSlot)
override
;
47
52
void
stop()
override
;
53
54
private
:
55
// reference to SequenceAudioService
56
SequenceServiceAudio
& mService;
57
58
// update slot, updates sequence player
59
Slot<double>
mUpdateSlot;
60
61
// the audio clock process
62
audio::SafeOwner<SequencePlayerAudioClockProcess>
mAudioClockProcess;
63
};
64
65
// shortcut to factory function
66
using
SequencePlayerAudioClockObjectCreator
=
rtti::ObjectCreator<SequencePlayerAudioClock, SequenceServiceAudio>
;
67
73
class
NAPAPI
SequencePlayerAudioClockProcess
final :
public
audio::Process
74
{
75
RTTI_ENABLE(
audio::Process
)
76
public
:
77
SequencePlayerAudioClockProcess
(
audio::NodeManager
& nodeManager);
78
79
/*
80
* We need to delete these so that the compiler doesn't try to use them. Otherwise we get compile errors on vector<unique_ptr>.
81
*/
82
SequencePlayerAudioClockProcess
(
const
SequencePlayerAudioClockProcess
&) =
delete
;
83
SequencePlayerAudioClockProcess
& operator=(
const
SequencePlayerAudioClockProcess
&) =
delete
;
84
88
virtual
~
SequencePlayerAudioClockProcess
();
89
95
void
connectSlot(
Slot<double>
& slot);
96
102
void
disconnectUpdateSlot(
Slot<double>
& slot);
103
104
// Signals
105
Signal<double>
mUpdateSignal
;
106
protected
:
110
void
process()
override
;
111
112
private
:
113
// last known timestamp in samples
114
audio::DiscreteTimeValue
mTime;
115
116
// queue of tasks to perform on process()
117
moodycamel::ConcurrentQueue<std::function<void()>> mTasks;
118
};
119
120
}
nap::SequencePlayerAudioClock
Definition:
sequenceplayeraudioclock.h:23
nap::audio::Process
Definition:
process.h:36
nap::Slot< double >
nap::rtti::ObjectCreator
Definition:
factory.h:49
nap::SequencePlayerAudioClockProcess::mUpdateSignal
Signal< double > mUpdateSignal
Definition:
sequenceplayeraudioclock.h:105
nap::SequenceServiceAudio
Definition:
sequenceserviceaudio.h:23
nap::Signal< double >
nap::audio::NodeManager
Definition:
audionodemanager.h:33
nap::audio::SafeOwner
Definition:
safeptr.h:25
nap::audio::DiscreteTimeValue
nap::uint64 DiscreteTimeValue
Definition:
audiotypes.h:125
nap
Definition:
templateapp.h:17
nap::SequencePlayerAudioClockProcess
Definition:
sequenceplayeraudioclock.h:73
nap::SequencePlayerClock
Definition:
sequenceplayerclock.h:26
Generated by doxygen