/[svn]/linuxsampler/trunk/src/drivers/audio/AudioOutputDevice.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/audio/AudioOutputDevice.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 846 by persson, Sun Mar 19 16:38:22 2006 UTC revision 1722 by schoenebeck, Thu Apr 10 17:41:32 2008 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 Christian Schoenebeck                              *   *   Copyright (C) 2005 - 2008 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 30  Line 30 
30  #include <stdexcept>  #include <stdexcept>
31    
32  #include "../../common/global.h"  #include "../../common/global.h"
33  #include "../../common/LinuxSamplerException.h"  #include "../../common/Exception.h"
34  #include "../Device.h"  #include "../Device.h"
35  #include "../DeviceParameter.h"  #include "../DeviceParameter.h"
36  #include "../../engines/common/Engine.h"  #include "../../engines/Engine.h"
37  #include "AudioChannel.h"  #include "AudioChannel.h"
38  #include "../../common/SynchronizedConfig.h"  #include "../../common/SynchronizedConfig.h"
39    #include "../../effects/EffectChain.h"
40    
41  namespace LinuxSampler {  namespace LinuxSampler {
42    
# Line 67  namespace LinuxSampler { Line 68  namespace LinuxSampler {
68                      virtual bool   Mandatory();                      virtual bool   Mandatory();
69                      virtual std::map<String,DeviceCreationParameter*> DependsAsParameters();                      virtual std::map<String,DeviceCreationParameter*> DependsAsParameters();
70                      virtual optional<bool> DefaultAsBool(std::map<String,String> Parameters);                      virtual optional<bool> DefaultAsBool(std::map<String,String> Parameters);
71                      virtual void OnSetValue(bool b) throw (LinuxSamplerException);                      virtual void OnSetValue(bool b) throw (Exception);
72                      static String Name();                      static String Name();
73              };              };
74    
# Line 87  namespace LinuxSampler { Line 88  namespace LinuxSampler {
88                      virtual optional<int>    RangeMinAsInt(std::map<String,String> Parameters);                      virtual optional<int>    RangeMinAsInt(std::map<String,String> Parameters);
89                      virtual optional<int>    RangeMaxAsInt(std::map<String,String> Parameters);                      virtual optional<int>    RangeMaxAsInt(std::map<String,String> Parameters);
90                      virtual std::vector<int> PossibilitiesAsInt(std::map<String,String> Parameters);                      virtual std::vector<int> PossibilitiesAsInt(std::map<String,String> Parameters);
91                      virtual void             OnSetValue(int i) throw (LinuxSamplerException);                      virtual int              ValueAsInt();
92                        virtual void             OnSetValue(int i) throw (Exception);
93                      static String Name();                      static String Name();
94              };              };
95    
# Line 108  namespace LinuxSampler { Line 110  namespace LinuxSampler {
110                      virtual optional<int>    RangeMinAsInt(std::map<String,String> Parameters);                      virtual optional<int>    RangeMinAsInt(std::map<String,String> Parameters);
111                      virtual optional<int>    RangeMaxAsInt(std::map<String,String> Parameters);                      virtual optional<int>    RangeMaxAsInt(std::map<String,String> Parameters);
112                      virtual std::vector<int> PossibilitiesAsInt(std::map<String,String> Parameters);                      virtual std::vector<int> PossibilitiesAsInt(std::map<String,String> Parameters);
113                      virtual void             OnSetValue(int i) throw (LinuxSamplerException);                      virtual void             OnSetValue(int i) throw (Exception);
114                      static String Name();                      static String Name();
115              };              };
116    
# Line 230  namespace LinuxSampler { Line 232  namespace LinuxSampler {
232              void AcquireChannels(uint Channels);              void AcquireChannels(uint Channels);
233    
234              /**              /**
235                 * Returns the amount of audio channels (including the so called
236                 * "mix channels") the device is currently providing.
237                 */
238                uint ChannelCount();
239    
240                /**
241               * Returns all device parameter settings.               * Returns all device parameter settings.
242               */               */
243              std::map<String,DeviceCreationParameter*> DeviceParameters();              std::map<String,DeviceCreationParameter*> DeviceParameters();
244    
245                /**
246                 * Add a chain of master effects to this AudioOutputDevice.
247                 * You actually have to add effects to that chain afterwards.
248                 */
249                EffectChain* AddMasterEffectChain();
250    
251                /**
252                 * Remove the master effect chain given by @a iChain .
253                 *
254                 * @throws Exception - if given master effect chain doesn't exist
255                 */
256                void RemoveMasterEffectChain(uint iChain) throw (Exception);
257    
258                /**
259                 * Returns master effect chain given by @a iChain or @c NULL if
260                 * there's no such effect chain.
261                 */
262                EffectChain* MasterEffectChain(uint iChain) const;
263    
264                /**
265                 * Returns amount of master effect chains this AudioOutputDevice
266                 * currently provides.
267                 */
268                uint MasterEffectChainCount() const;
269    
270          protected:          protected:
271              SynchronizedConfig<std::set<Engine*> >    Engines;     ///< All sampler engines that are connected to the audio output device.              SynchronizedConfig<std::set<Engine*> >    Engines;     ///< All sampler engines that are connected to the audio output device.
272              SynchronizedConfig<std::set<Engine*> >::Reader EnginesReader; ///< Audio thread access to Engines.              SynchronizedConfig<std::set<Engine*> >::Reader EnginesReader; ///< Audio thread access to Engines.
273              std::vector<AudioChannel*>                Channels;    ///< All audio channels of the audio output device. This is just a container; the descendant has to create channels by himself.              std::vector<AudioChannel*>                Channels;    ///< All audio channels of the audio output device. This is just a container; the descendant has to create channels by himself.
274              std::map<String,DeviceCreationParameter*> Parameters;  ///< All device parameters.              std::map<String,DeviceCreationParameter*> Parameters;  ///< All device parameters.
275                std::vector<EffectChain*>                 vEffectChains;
276    
277              AudioOutputDevice(std::map<String,DeviceCreationParameter*> DriverParameters);              AudioOutputDevice(std::map<String,DeviceCreationParameter*> DriverParameters);
278    
# Line 279  namespace LinuxSampler { Line 313  namespace LinuxSampler {
313       * (which should be done in the constructor of the AudioOutputDevice       * (which should be done in the constructor of the AudioOutputDevice
314       * descendant).       * descendant).
315       */       */
316      class AudioOutputException : public LinuxSamplerException {      class AudioOutputException : public Exception {
317          public:          public:
318              AudioOutputException(const std::string& msg) : LinuxSamplerException(msg) {}              AudioOutputException(const std::string& msg) : Exception(msg) {}
319      };      };
320  }  }
321    

Legend:
Removed from v.846  
changed lines
  Added in v.1722

  ViewVC Help
Powered by ViewVC