Mercurial > hg > svapp
comparison audioio/AudioGenerator.h @ 450:d9d132c0e240 alignment_view
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 20 Apr 2015 09:21:32 +0100 |
parents | 72c662fe7ea3 |
children |
comparison
equal
deleted
inserted
replaced
430:adfb2948fabf | 450:d9d132c0e240 |
---|---|
29 #include <QMutex> | 29 #include <QMutex> |
30 | 30 |
31 #include <set> | 31 #include <set> |
32 #include <map> | 32 #include <map> |
33 #include <vector> | 33 #include <vector> |
34 | |
35 #include "base/BaseTypes.h" | |
34 | 36 |
35 class AudioGenerator : public QObject | 37 class AudioGenerator : public QObject |
36 { | 38 { |
37 Q_OBJECT | 39 Q_OBJECT |
38 | 40 |
72 /** | 74 /** |
73 * Return the internal processing block size. The frameCount | 75 * Return the internal processing block size. The frameCount |
74 * argument to all mixModel calls must be a multiple of this | 76 * argument to all mixModel calls must be a multiple of this |
75 * value. | 77 * value. |
76 */ | 78 */ |
77 virtual int getBlockSize() const; | 79 virtual sv_frame_t getBlockSize() const; |
78 | 80 |
79 /** | 81 /** |
80 * Mix a single model into an output buffer. | 82 * Mix a single model into an output buffer. |
81 */ | 83 */ |
82 virtual int mixModel(Model *model, int startFrame, int frameCount, | 84 virtual sv_frame_t mixModel(Model *model, sv_frame_t startFrame, sv_frame_t frameCount, |
83 float **buffer, int fadeIn = 0, int fadeOut = 0); | 85 float **buffer, sv_frame_t fadeIn = 0, sv_frame_t fadeOut = 0); |
84 | 86 |
85 /** | 87 /** |
86 * Specify that only the given set of models should be played. | 88 * Specify that only the given set of models should be played. |
87 */ | 89 */ |
88 virtual void setSoloModelSet(std::set<Model *>s); | 90 virtual void setSoloModelSet(std::set<Model *>s); |
95 | 97 |
96 protected slots: | 98 protected slots: |
97 void playClipIdChanged(const Playable *, QString); | 99 void playClipIdChanged(const Playable *, QString); |
98 | 100 |
99 protected: | 101 protected: |
100 int m_sourceSampleRate; | 102 sv_samplerate_t m_sourceSampleRate; |
101 int m_targetChannelCount; | 103 int m_targetChannelCount; |
102 int m_waveType; | 104 int m_waveType; |
103 | 105 |
104 bool m_soloing; | 106 bool m_soloing; |
105 std::set<Model *> m_soloModelSet; | 107 std::set<Model *> m_soloModelSet; |
106 | 108 |
107 struct NoteOff { | 109 struct NoteOff { |
108 | 110 |
109 NoteOff(float _freq, int _frame) : frequency(_freq), frame(_frame) { } | 111 NoteOff(float _freq, sv_frame_t _frame) : frequency(_freq), frame(_frame) { } |
110 | 112 |
111 float frequency; | 113 float frequency; |
112 int frame; | 114 sv_frame_t frame; |
113 | 115 |
114 struct Comparator { | 116 struct Comparator { |
115 bool operator()(const NoteOff &n1, const NoteOff &n2) const { | 117 bool operator()(const NoteOff &n1, const NoteOff &n2) const { |
116 return n1.frame < n2.frame; | 118 return n1.frame < n2.frame; |
117 } | 119 } |
141 ClipMixer *makeClipMixerFor(const Model *model); | 143 ClipMixer *makeClipMixerFor(const Model *model); |
142 ContinuousSynth *makeSynthFor(const Model *model); | 144 ContinuousSynth *makeSynthFor(const Model *model); |
143 | 145 |
144 static void initialiseSampleDir(); | 146 static void initialiseSampleDir(); |
145 | 147 |
146 virtual int mixDenseTimeValueModel | 148 virtual sv_frame_t mixDenseTimeValueModel |
147 (DenseTimeValueModel *model, int startFrame, int frameCount, | 149 (DenseTimeValueModel *model, sv_frame_t startFrame, sv_frame_t frameCount, |
148 float **buffer, float gain, float pan, int fadeIn, int fadeOut); | 150 float **buffer, float gain, float pan, sv_frame_t fadeIn, sv_frame_t fadeOut); |
149 | 151 |
150 virtual int mixClipModel | 152 virtual sv_frame_t mixClipModel |
151 (Model *model, int startFrame, int frameCount, | 153 (Model *model, sv_frame_t startFrame, sv_frame_t frameCount, |
152 float **buffer, float gain, float pan); | 154 float **buffer, float gain, float pan); |
153 | 155 |
154 virtual int mixContinuousSynthModel | 156 virtual sv_frame_t mixContinuousSynthModel |
155 (Model *model, int startFrame, int frameCount, | 157 (Model *model, sv_frame_t startFrame, sv_frame_t frameCount, |
156 float **buffer, float gain, float pan); | 158 float **buffer, float gain, float pan); |
157 | 159 |
158 static const int m_processingBlockSize; | 160 static const sv_frame_t m_processingBlockSize; |
159 | 161 |
160 float **m_channelBuffer; | 162 float **m_channelBuffer; |
161 int m_channelBufSiz; | 163 sv_frame_t m_channelBufSiz; |
162 int m_channelBufCount; | 164 int m_channelBufCount; |
163 }; | 165 }; |
164 | 166 |
165 #endif | 167 #endif |
166 | 168 |