NAP
sequencecontrolleraudio.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // nap includes
8 #include <sequencecontroller.h>
9 #include <nap/logger.h>
10 #include <audio/resource/audiobufferresource.h>
11 
12 // local includes
13 #include "sequencetracksegmentaudio.h"
14 
15 namespace nap
16 {
18 
19  // forward declares
20  class SequenceService;
21 
25  class NAPAPI SequenceControllerAudio final : public SequenceController
26  {
27  RTTI_ENABLE(SequenceController)
28  public:
36  :SequenceController(service, player, editor)
37  {
38  }
39 
47  double segmentAudioStartTimeChange(const std::string& trackID, const std::string& segmentID, double time);
48 
55  const SequenceTrackSegment* insertSegment(const std::string& trackID, double time) override;
56 
62  void deleteSegment(const std::string& trackID, const std::string& segmentID) override;
63 
71  std::string insertAudioSegment(const std::string& trackID, double time, const std::string& audioBufferID);
72 
83  std::string insertAudioSegment(const std::string& trackID, double time, const std::string& audioBufferID,
84  double duration, double startTimeInSegment);
85 
89  void addNewAudioTrack();
90 
95  void insertTrack(rttr::type type) override;
96 
103  void changeAudioSegmentAudioBuffer(const std::string& trackID, const std::string& segmentID,
104  const std::string& audioBufferID);
105 
113  double segmentAudioStartTimeInSegmentChange(const std::string& trackID, const std::string& segmentID,
114  double time);
115 
123  double segmentAudioDurationChange(const std::string& trackID, const std::string& segmentID, double newDuration);
124  private:
131  audio::AudioBufferResource* findAudioBufferForTrack(const std::string& trackID,
132  const std::string& audioBufferID);
133 
138  void alignAudioSegments(const std::string& trackID);
139  };
140 }
nap::SequencePlayer
Definition: sequenceplayer.h:36
nap::SequenceEditor
Definition: sequenceeditor.h:32
nap::SequenceController
Definition: sequencecontroller.h:25
nap::SequenceService
Definition: sequenceservice.h:42
nap::SequenceTrackSegment
Definition: sequencetracksegment.h:19
nap::SequenceControllerAudio::SequenceControllerAudio
SequenceControllerAudio(SequenceService &service, SequencePlayer &player, SequenceEditor &editor)
Definition: sequencecontrolleraudio.h:35
nap
Definition: templateapp.h:17
nap::SequenceControllerAudio
Definition: sequencecontrolleraudio.h:25
nap::audio::AudioBufferResource
Definition: audiobufferresource.h:28