Rumba C++ SDK
AudioEditing.h
Go to the documentation of this file.
1 /*
2 
3  *
4  ***
5  *****
6  ********************* Mercenaries Engineering SARL
7  ***************** Copyright (C) 2018
8  *************
9  ********* http://www.mercenaries-engineering.com
10  ***********
11  **** ****
12  ** **
13 
14 */
15 #pragma once
16 
17 #include "Waveform.h"
18 
19 #include <Maquina/UserData.h>
20 #include <gsl/span>
21 
22 namespace maquina
23 {
24 
25 // An Audio editing
26 class AudioEditing : public UserData
27 {
28 public:
29  class Clip
30  {
31  public:
32  Clip(float offset, float in, float out, float volume, float speed_factor, std::shared_ptr<const maquina::Waveform> waveform) :
33  _offset(offset), _in(in), _out(out), _volume(volume), _speed_factor(speed_factor), _waveform(std::move(waveform)) {}
34 
35  // Starting offset of the audio clip in the final edit in seconds
36  float offset() const { return _offset; }
37 
38  // Starting offset of the audio clip in the waveform in seconds
39  float in() const { return _in; }
40 
41  // Ending offset of the audio clip in the waveform in seconds
42  float out() const { return _out; }
43 
44  // Clip volume
45  float volume() const { return _volume; }
46 
47  // Clip speed factor
48  float speed_factor() const { return _speed_factor; }
49 
50  const std::shared_ptr<const maquina::Waveform>& waveform() const { return _waveform; }
51  private:
52  float _offset, _in, _out, _volume, _speed_factor;
53  std::shared_ptr<const maquina::Waveform> _waveform;
54  };
55 
56  // From UserData
57  StringView type_name() const;
58 
59  AudioEditing() = default;
60  AudioEditing(std::vector<Clip>&& clips) : _clips(std::move(clips)) {}
61 
62  const std::vector<Clip>& clips() const { return _clips; }
63 
64 private:
65  std::vector<Clip> _clips;
66 };
67 
69 {
70  return "AudioEditing";
71 }
72 
73 }
float speed_factor() const
Definition: AudioEditing.h:48
Definition: AudioEditing.h:29
AudioEditing(std::vector< Clip > &&clips)
Definition: AudioEditing.h:60
Definition: Plug.h:527
float out() const
Definition: AudioEditing.h:42
This version of the SDK is unstable, i-e, it may change with no warning.
Definition: AddCurveAction.h:20
StringView type_name() const
Definition: AudioEditing.h:68
Definition: AudioEditing.h:26
float offset() const
Definition: AudioEditing.h:36
const std::shared_ptr< const maquina::Waveform > & waveform() const
Definition: AudioEditing.h:50
float in() const
Definition: AudioEditing.h:39
Definition: UserData.h:28
Clip(float offset, float in, float out, float volume, float speed_factor, std::shared_ptr< const maquina::Waveform > waveform)
Definition: AudioEditing.h:32
const std::vector< Clip > & clips() const
Definition: AudioEditing.h:62
float volume() const
Definition: AudioEditing.h:45