Mercurial > hg > svapp
comparison audioio/AudioGenerator.h @ 234:a98f1638c5ec sonification
Refactor mixNoteModel and mixSparseOneDimensionalModel into a single mixSparseModel -- attempting to clear the decks a bit for asynchronous example-note playing
| author | Chris Cannam |
|---|---|
| date | Fri, 24 Jun 2011 15:39:00 +0100 |
| parents | e81c1ea227ee |
| children | 1fcee2a1c03e |
comparison
equal
deleted
inserted
replaced
| 233:8aace2d9f1c2 | 234:a98f1638c5ec |
|---|---|
| 26 #include <QObject> | 26 #include <QObject> |
| 27 #include <QMutex> | 27 #include <QMutex> |
| 28 | 28 |
| 29 #include <set> | 29 #include <set> |
| 30 #include <map> | 30 #include <map> |
| 31 #include <vector> | |
| 31 | 32 |
| 32 class AudioGenerator : public QObject | 33 class AudioGenerator : public QObject |
| 33 { | 34 { |
| 34 Q_OBJECT | 35 Q_OBJECT |
| 35 | 36 |
| 99 size_t m_targetChannelCount; | 100 size_t m_targetChannelCount; |
| 100 | 101 |
| 101 bool m_soloing; | 102 bool m_soloing; |
| 102 std::set<Model *> m_soloModelSet; | 103 std::set<Model *> m_soloModelSet; |
| 103 | 104 |
| 105 struct Note { | |
| 106 int pitch; | |
| 107 size_t frame; | |
| 108 size_t duration; // 0 -> "anything" (short example note) | |
| 109 int velocity; | |
| 110 }; | |
| 111 typedef std::vector<Note> Notes; | |
| 112 | |
| 104 struct NoteOff { | 113 struct NoteOff { |
| 105 | 114 |
| 106 int pitch; | 115 int pitch; |
| 107 size_t frame; | 116 size_t frame; |
| 108 | 117 |
| 126 virtual RealTimePluginInstance *loadPluginFor(const Model *model); | 135 virtual RealTimePluginInstance *loadPluginFor(const Model *model); |
| 127 virtual RealTimePluginInstance *loadPlugin(QString id, QString program); | 136 virtual RealTimePluginInstance *loadPlugin(QString id, QString program); |
| 128 static void initialiseSampleDir(); | 137 static void initialiseSampleDir(); |
| 129 static void setSampleDir(RealTimePluginInstance *plugin); | 138 static void setSampleDir(RealTimePluginInstance *plugin); |
| 130 | 139 |
| 140 virtual Notes getNotesFromModel | |
| 141 (Model *model, size_t startFrame, size_t frameCount); | |
| 142 | |
| 131 virtual size_t mixDenseTimeValueModel | 143 virtual size_t mixDenseTimeValueModel |
| 132 (DenseTimeValueModel *model, size_t startFrame, size_t frameCount, | 144 (DenseTimeValueModel *model, size_t startFrame, size_t frameCount, |
| 133 float **buffer, float gain, float pan, size_t fadeIn, size_t fadeOut); | 145 float **buffer, float gain, float pan, size_t fadeIn, size_t fadeOut); |
| 134 | 146 |
| 135 virtual size_t mixSparseOneDimensionalModel | 147 virtual size_t mixSparseModel |
| 136 (SparseOneDimensionalModel *model, size_t startFrame, size_t frameCount, | 148 (Model *model, size_t startFrame, size_t frameCount, |
| 137 float **buffer, float gain, float pan, size_t fadeIn, size_t fadeOut); | |
| 138 | |
| 139 virtual size_t mixNoteModel | |
| 140 (NoteModel *model, size_t startFrame, size_t frameCount, | |
| 141 float **buffer, float gain, float pan, size_t fadeIn, size_t fadeOut); | 149 float **buffer, float gain, float pan, size_t fadeIn, size_t fadeOut); |
| 142 | 150 |
| 143 static const size_t m_pluginBlockSize; | 151 static const size_t m_pluginBlockSize; |
| 144 }; | 152 }; |
| 145 | 153 |
