XJ music engine  1.9.6
In-game runtime engine for XJ music.
DubWork.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_WORK_DUB_WORK_H
4 #define XJMUSIC_WORK_DUB_WORK_H
5 
6 #include <optional>
7 
9 
10 #include "CraftWork.h"
11 
12 namespace XJ {
13 
25  class DubWork final {
26  int BITS_PER_BYTE = 8;
27  bool running = true;
28  CraftWork *craftWork;
29  TemplateConfig templateConfig;
30  unsigned long dubAheadMicros = 0;
31 
32  // Intensity override is null if no override, or a value between 0 and 1
33  std::optional<float> intensityOverride = std::nullopt;
34 
35  // Next/Prev intensity updated each segment, either from segment or from override
36  std::optional<float> nextIntensity = std::nullopt;
37  std::optional<float> prevIntensity = std::nullopt;
38 
39  public:
40  DubWork(CraftWork *craftWork, int dubAheadSeconds);
41 
45  void start();
46 
50  void finish();
51 
57  bool isFinished() const;
58 
62  std::set<ActiveAudio> runCycle(unsigned long long atChainMicros);
63 
72  std::set<ActiveAudio> computeActiveAudios(unsigned long long atChainMicros);
73 
80  std::optional<const Segment *> getSegmentAtChainMicros(long atChainMicros) const;
81 
88  std::optional<const Segment *> getSegmentAtOffset(int offset) const;
89 
96  std::optional<const Program *> getMainProgram(const Segment *segment) const;
97 
104  std::optional<const Program *> getMacroProgram(const Segment &segment) const;
105 
111  void setIntensityOverride(std::optional<float> intensity);
112 
113  private:
120  void didFailWhile(const std::string &msgWhile, const std::exception &e);
121  };
122 
123 }// namespace XJ
124 
125 #endif// XJMUSIC_WORK_DUB_WORK_H
Definition: CraftWork.h:29
Definition: DubWork.h:25
void start()
Definition: DubWork.cpp:18
std::optional< const Program * > getMacroProgram(const Segment &segment) const
Definition: DubWork.cpp:85
void finish()
Definition: DubWork.cpp:24
std::optional< const Program * > getMainProgram(const Segment *segment) const
Definition: DubWork.cpp:80
bool isFinished() const
Definition: DubWork.cpp:65
std::optional< const Segment * > getSegmentAtOffset(int offset) const
Definition: DubWork.cpp:75
std::set< ActiveAudio > runCycle(unsigned long long atChainMicros)
Definition: DubWork.cpp:33
std::optional< const Segment * > getSegmentAtChainMicros(long atChainMicros) const
Definition: DubWork.cpp:70
std::set< ActiveAudio > computeActiveAudios(unsigned long long atChainMicros)
Definition: DubWork.cpp:96
DubWork(CraftWork *craftWork, int dubAheadSeconds)
Definition: DubWork.cpp:10
void setIntensityOverride(std::optional< float > intensity)
Definition: DubWork.cpp:90
Definition: Segment.h:13
Definition: TemplateConfig.h:16
Definition: ActiveAudio.h:11