-
-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathChataigneSequence.h
More file actions
103 lines (73 loc) · 2.88 KB
/
ChataigneSequence.h
File metadata and controls
103 lines (73 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
==============================================================================
Sequence.h
Created: 28 Oct 2016 8:13:19pm
Author: bkupe
==============================================================================
*/
#pragma once
class ChataigneAudioLayer;
class AudioModule;
class MTCSender;
class MIDIDeviceParameter;
class ChataigneSequence :
public Sequence,
public SequenceLayerManager::ManagerListener,
public ChataigneAudioLayerListener,
public MTCReceiver::MTCListener
{
public:
ChataigneSequence();
virtual ~ChataigneSequence();
AudioModule * masterAudioModule;
ChataigneAudioLayer* masterAudioLayer;
MIDIDeviceParameter* midiSyncDevice;
std::unique_ptr<MTCSender> mtcSender;
std::unique_ptr<MTCReceiver> mtcReceiver;
EnumParameter* mtcFPS;
BoolParameter* resetTimeOnMTCStopped;
AudioModule* ltcAudioModule;
TargetParameter* ltcModuleTarget;
FloatParameter* ltcSyncTolerance;
enum LTCOutOfRangeMode { DO_NOTHING, JUMP_TO_CLOSEST, JUMP_TO_START, JUMP_TO_END };
EnumParameter* ltcOutOfRangeMode;
enum LTCSyncMode { RECEIVE, SEND, BOTH};
EnumParameter* ltcMode;
EnumParameter* ltcSendFPS;
EnumParameter* ltcTVStandard;
using LTCEncoderPtr = std::unique_ptr<LTCEncoder, void (*)(LTCEncoder*)>;
LTCEncoderPtr ltcEncoder;
FloatParameter* syncOffset;
BoolParameter* reverseOffset;
virtual void clearItem() override;
void setMasterAudioModule(AudioModule * module);
void updateTargetAudioLayer(ChataigneAudioLayer* excludeLayer = nullptr);
void setMasterAudioLayer(ChataigneAudioLayer* layer);
void targetAudioModuleChanged(ChataigneAudioLayer* layer) override;
void itemAdded(SequenceLayer* layer) override;
void itemsAdded(Array<SequenceLayer*> layers) override;
void itemRemoved(SequenceLayer* layer) override;
void itemsRemoved(Array<SequenceLayer*> layers) override;
void checkForNewAudioLayer(SequenceLayer* layer, bool showMenuIfNoAudioModule = true);
virtual bool timeIsDrivenByAudio() override;
void addNewMappingLayerFromValues(Array<Point<float>> keys);
void updateLayersSnapKeys();
void setupMidiSyncDevices();
void setLTCAudioModule(AudioModule* am);
void setupLTCEncoder();
virtual void updateSampleRate() override;
virtual void audioDeviceIOCallbackWithContext(const float* const* inputChannelData,
int numInputChannels,
float* const* outputChannelData,
int numOutputChannels,
int numSamples,
const AudioIODeviceCallbackContext& context) override;
virtual void onContainerParameterChangedInternal(Parameter *) override;
virtual void onControllableStateChanged(Controllable* c) override;
virtual void onContainerTriggerTriggered(Trigger *) override;
virtual void onExternalParameterValueChanged(Parameter *) override;
virtual void mtcStarted() override;
virtual void mtcStopped() override;
virtual void mtcTimeUpdated(bool isFullFrame) override;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ChataigneSequence)
};