diff audioio/AudioGenerator.h @ 22:7f32bb07629a

* Add editing for auralisation plugin parameters and programs * Rename and reorganise the sample plugin sample set
author Chris Cannam
date Thu, 23 Mar 2006 15:49:41 +0000
parents ebe07d3560e6
children dd2084d32652
line wrap: on
line diff
--- a/audioio/AudioGenerator.h	Mon Mar 20 15:10:07 2006 +0000
+++ b/audioio/AudioGenerator.h	Thu Mar 23 15:49:41 2006 +0000
@@ -23,13 +23,16 @@
 class SparseOneDimensionalModel;
 class RealTimePluginInstance;
 
+#include <QObject>
 #include <QMutex>
 
 #include <set>
 #include <map>
 
-class AudioGenerator
+class AudioGenerator : public QObject
 {
+    Q_OBJECT
+
 public:
     AudioGenerator(ViewManager *);
     virtual ~AudioGenerator();
@@ -42,6 +45,9 @@
      */
     static bool canPlay(const Model *model);
 
+    static QString getDefaultPlayPluginId(const Model *model);
+    static QString getDefaultPlayPluginConfiguration(const Model *model);
+
     /**
      * Add a data model to be played from and initialise any necessary
      * audio generation code.  Returns true if the model will be
@@ -85,6 +91,10 @@
     virtual size_t mixModel(Model *model, size_t startFrame, size_t frameCount,
 			    float **buffer, size_t fadeIn = 0, size_t fadeOut = 0);
 
+protected slots:
+    void playPluginIdChanged(const Model *, QString);
+    void playPluginConfigurationChanged(const Model *, QString);
+
 protected:
     ViewManager *m_viewManager;
     size_t       m_sourceSampleRate;
@@ -102,15 +112,16 @@
 	};
     };
 
-    typedef std::map<Model *, RealTimePluginInstance *> PluginMap;
+    typedef std::map<const Model *, RealTimePluginInstance *> PluginMap;
 
     typedef std::set<NoteOff, NoteOff::Comparator> NoteOffSet;
-    typedef std::map<Model *, NoteOffSet> NoteOffMap;
+    typedef std::map<const Model *, NoteOffSet> NoteOffMap;
 
     QMutex m_mutex;
     PluginMap m_synthMap;
     NoteOffMap m_noteOffs;
 
+    virtual RealTimePluginInstance *loadPluginFor(const Model *model);
     virtual RealTimePluginInstance *loadPlugin(QString id, QString program);
 
     virtual size_t mixDenseTimeValueModel