NAP
audiotypes.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 // std library includes
8 #include <vector>
9 
10 // nap includes
11 #include <utility/dllexport.h>
12 #include <nap/numeric.h>
13 
14 namespace nap
15 {
16 
17  namespace audio
18  {
19 
20  // Note: in this files typedefs are being used instead of a using statement
21  // This is because the using statement cannot be used in combination with the NAPAPI macro
22 
23 
28  using SampleValue = float;
29 
30 
34  using SampleBuffer = std::vector<SampleValue>;
35 
36 
40  class NAPAPI MultiSampleBuffer
41  {
42  public:
43  MultiSampleBuffer() = default;
44 
49  MultiSampleBuffer(std::size_t channelCount, std::size_t size)
50  {
51  resize(channelCount, size);
52  }
53 
58  SampleBuffer& operator[](std::size_t index)
59  {
60  return channels[index];
61  }
62 
66  std::size_t getChannelCount() const { return channels.size(); }
67 
71  std::size_t getSize() const { return channels.empty() ? 0 : channels.front().size(); }
72 
78  void resize(std::size_t channelCount, std::size_t size)
79  {
80  channels.resize(channelCount);
81  for (auto& channel : channels)
82  channel.resize(size);
83  }
84 
90  void reserve(std::size_t channelCount, std::size_t size)
91  {
92  channels.reserve(channelCount);
93  for (auto& channel : channels)
94  channel.reserve(size);
95  }
96 
100  void clear()
101  {
102  channels.clear();
103  }
104 
105  std::vector<SampleBuffer> channels;
106  };
107 
108 
113  using ControllerValue = float;
114 
115 
119  using TimeValue = float;
120 
121 
126 
127 
131  enum RampMode
132  {
134  };
135 
136 
137  }
138 
139 }
nap::audio::RampMode
RampMode
Definition: audiotypes.h:131
nap::audio::MultiSampleBuffer::resize
void resize(std::size_t channelCount, std::size_t size)
Definition: audiotypes.h:78
nap::audio::MultiSampleBuffer::channels
std::vector< SampleBuffer > channels
Definition: audiotypes.h:105
nap::uint64
uint64_t uint64
Definition: numeric.h:22
nap::audio::MultiSampleBuffer::MultiSampleBuffer
MultiSampleBuffer(std::size_t channelCount, std::size_t size)
Definition: audiotypes.h:49
nap::audio::MultiSampleBuffer
Definition: audiotypes.h:40
nap::audio::SampleValue
float SampleValue
Definition: audiotypes.h:28
nap::audio::TimeValue
float TimeValue
Definition: audiotypes.h:119
nap::audio::ControllerValue
float ControllerValue
Definition: audiotypes.h:113
nap::audio::MultiSampleBuffer::clear
void clear()
Definition: audiotypes.h:100
nap::audio::DiscreteTimeValue
nap::uint64 DiscreteTimeValue
Definition: audiotypes.h:125
nap::audio::Linear
@ Linear
Definition: audiotypes.h:133
nap
Definition: templateapp.h:17
nap::audio::MultiSampleBuffer::getSize
std::size_t getSize() const
Definition: audiotypes.h:71
nap::audio::MultiSampleBuffer::getChannelCount
std::size_t getChannelCount() const
Definition: audiotypes.h:66
nap::audio::MultiSampleBuffer::operator[]
SampleBuffer & operator[](std::size_t index)
Definition: audiotypes.h:58
nap::audio::MultiSampleBuffer::reserve
void reserve(std::size_t channelCount, std::size_t size)
Definition: audiotypes.h:90
nap::audio::SampleBuffer
std::vector< SampleValue > SampleBuffer
Definition: audiotypes.h:34
nap::audio::Exponential
@ Exponential
Definition: audiotypes.h:133