/[svn]/linuxsampler/trunk/src/drivers/audio/AudioChannel.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/audio/AudioChannel.cpp

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

revision 200 by schoenebeck, Tue Jul 13 22:04:16 2004 UTC revision 319 by schoenebeck, Mon Dec 13 00:46:42 2004 UTC
# Line 21  Line 21 
21   ***************************************************************************/   ***************************************************************************/
22    
23  #include "AudioChannel.h"  #include "AudioChannel.h"
24    #include <malloc.h>
25    
26  namespace LinuxSampler {  namespace LinuxSampler {
27    
28      /**      /**
29       * Create real channel.       * Create real channel.
30       *       *
31         * @param ChannelNr  - channel number of this new channel
32       * @param BufferSize - desired audio data buffer size       * @param BufferSize - desired audio data buffer size
      * @param Name       - arbitrary name for this channel (optional)  
33       */       */
34      AudioChannel::AudioChannel(uint BufferSize, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {      AudioChannel::AudioChannel(uint ChannelNr, uint BufferSize) {
35          this->pBuffer            = new float[BufferSize];          this->ChannelNr          = ChannelNr;
36            this->pBuffer            = (float *) memalign(16,BufferSize*sizeof(float));
37          this->uiBufferSize       = BufferSize;          this->uiBufferSize       = BufferSize;
38          this->pMixChannel        = NULL;          this->pMixChannel        = NULL;
39          this->UsesExternalBuffer = false;          this->UsesExternalBuffer = false;
40    
41          if (!ChannelParameters["Name"])           ChannelParameters["Name"]           = new ParameterName(Name);          Parameters["NAME"]           = new ParameterName("Channel " + ToString(ChannelNr));
42          if (!ChannelParameters["IS_MIX_CHANNEL"]) ChannelParameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);          Parameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);
         this->mParameters = ChannelParameters;  
43    
44          Clear();          Clear();
45      }      }
# Line 46  namespace LinuxSampler { Line 47  namespace LinuxSampler {
47      /**      /**
48       * Create channel with external (already existing) audio buffer.       * Create channel with external (already existing) audio buffer.
49       *       *
50         * @param ChannelNr  - channel number of this new channel
51       * @param pBuffer    - external audio buffer       * @param pBuffer    - external audio buffer
52       * @param BufferSIze - size of the external buffer       * @param BufferSIze - size of the external buffer
      * @param Name       - arbitrary name for this channel (optional)  
53       */       */
54      AudioChannel::AudioChannel(float* pBuffer, uint BufferSize, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {      AudioChannel::AudioChannel(uint ChannelNr, float* pBuffer, uint BufferSize) {
55            this->ChannelNr          = ChannelNr;
56          this->pBuffer            = pBuffer;          this->pBuffer            = pBuffer;
57          this->uiBufferSize       = BufferSize;          this->uiBufferSize       = BufferSize;
58          this->pMixChannel        = NULL;          this->pMixChannel        = NULL;
59          this->UsesExternalBuffer = true;          this->UsesExternalBuffer = true;
60    
61          if (!ChannelParameters["Name"])           ChannelParameters["Name"]           = new ParameterName(Name);          Parameters["NAME"]           = new ParameterName("Channel " + ToString(ChannelNr));
62          if (!ChannelParameters["IS_MIX_CHANNEL"]) ChannelParameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);          Parameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);
63    
64          Clear();          Clear();
65      }      }
# Line 65  namespace LinuxSampler { Line 67  namespace LinuxSampler {
67      /**      /**
68       * Create mix channel.       * Create mix channel.
69       *       *
70       * @param pMixChannel - the real channel this new mix channel refers to       * @param ChannelNr              - channel number of this new channel
71       * @param Name        - arbitrary name for this channel (optional)       * @param pMixChannelDestination - a real audio channel this new mix
72         *                                 channel refers to
73       */       */
74      AudioChannel::AudioChannel(AudioChannel* pMixChannel, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {      AudioChannel::AudioChannel(uint ChannelNr, AudioChannel* pMixChannelDestination) {
75            this->ChannelNr          = ChannelNr;
76          this->pBuffer            = pMixChannel->Buffer();          this->pBuffer            = pMixChannel->Buffer();
77          this->uiBufferSize       = pMixChannel->uiBufferSize;          this->uiBufferSize       = pMixChannel->uiBufferSize;
78          this->pMixChannel        = pMixChannel;          this->pMixChannel        = pMixChannel;
79          this->UsesExternalBuffer = true;          this->UsesExternalBuffer = true;
80    
81          if (!ChannelParameters["Name"])                    ChannelParameters["Name"]                    = new ParameterName(Name);          Parameters["NAME"]           = new ParameterName("Channel " + ToString(ChannelNr));
82          if (!ChannelParameters["IS_MIX_CHANNEL"])          ChannelParameters["IS_MIX_CHANNEL"]          = new ParameterIsMixChannel(true);          Parameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(true);
83          //TODO: if (!ChannelParameters["MIX_CHANNEL_DESTINATION"]) ChannelParameters["MIX_CHANNEL_DESTINATION"] = new ParameterMixChannelDestination(dest_chan);          //TODO: Parameters["MIX_CHANNEL_DESTINATION"] = new ParameterMixChannelDestination(dest_chan);
84    
85          Clear();          Clear();
86      }      }
# Line 85  namespace LinuxSampler { Line 89  namespace LinuxSampler {
89       * Destructor       * Destructor
90       */       */
91      AudioChannel::~AudioChannel() {      AudioChannel::~AudioChannel() {
92          std::map<String,DeviceRuntimeParameter*>::iterator iter = mParameters.begin();          std::map<String,DeviceRuntimeParameter*>::iterator iter = Parameters.begin();
93          while (iter != mParameters.end()) { delete iter->second; iter++; }          while (iter != Parameters.end()) { delete iter->second; iter++; }
94          if (!UsesExternalBuffer)          delete[] pBuffer;          if (!UsesExternalBuffer) free(pBuffer);
95      }      }
96    
97      std::map<String,DeviceRuntimeParameter*> AudioChannel::ChannelParameters() {      std::map<String,DeviceRuntimeParameter*> AudioChannel::ChannelParameters() {
98          return mParameters;          return Parameters;
99      }      }
100  }  }

Legend:
Removed from v.200  
changed lines
  Added in v.319

  ViewVC Help
Powered by ViewVC