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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 219 - (show annotations) (download)
Tue Aug 17 20:35:04 2004 UTC (19 years, 8 months ago) by schoenebeck
File size: 4721 byte(s)
* completely removed the lex scanner and replaced it by pure yacc rules
  for all terminal symbols (that is command keywords and variables) to
  avoid misunderstandings while parsing (e.g. recognition of command
  keywords in string arguments)
* src/drivers/audio/AudioChannel.cpp: changed channel parameter 'Name' to
 'NAME' as defined in the LSCP documentation

1 /***************************************************************************
2 * *
3 * LinuxSampler - modular, streaming capable sampler *
4 * *
5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the Free Software *
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
20 * MA 02111-1307 USA *
21 ***************************************************************************/
22
23 #include "AudioChannel.h"
24
25 namespace LinuxSampler {
26
27 /**
28 * Create real channel.
29 *
30 * @param BufferSize - desired audio data buffer size
31 * @param Name - arbitrary name for this channel (optional)
32 */
33 AudioChannel::AudioChannel(uint BufferSize, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {
34 this->pBuffer = new float[BufferSize];
35 this->uiBufferSize = BufferSize;
36 this->pMixChannel = NULL;
37 this->UsesExternalBuffer = false;
38
39 if (!ChannelParameters["NAME"]) ChannelParameters["NAME"] = new ParameterName(Name);
40 if (!ChannelParameters["IS_MIX_CHANNEL"]) ChannelParameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);
41 this->mParameters = ChannelParameters;
42
43 Clear();
44 }
45
46 /**
47 * Create channel with external (already existing) audio buffer.
48 *
49 * @param pBuffer - external audio buffer
50 * @param BufferSIze - size of the external buffer
51 * @param Name - arbitrary name for this channel (optional)
52 */
53 AudioChannel::AudioChannel(float* pBuffer, uint BufferSize, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {
54 this->pBuffer = pBuffer;
55 this->uiBufferSize = BufferSize;
56 this->pMixChannel = NULL;
57 this->UsesExternalBuffer = true;
58
59 if (!ChannelParameters["NAME"]) ChannelParameters["NAME"] = new ParameterName(Name);
60 if (!ChannelParameters["IS_MIX_CHANNEL"]) ChannelParameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(false);
61
62 Clear();
63 }
64
65 /**
66 * Create mix channel.
67 *
68 * @param pMixChannel - the real channel this new mix channel refers to
69 * @param Name - arbitrary name for this channel (optional)
70 */
71 AudioChannel::AudioChannel(AudioChannel* pMixChannel, String Name, std::map<String,DeviceRuntimeParameter*> ChannelParameters) {
72 this->pBuffer = pMixChannel->Buffer();
73 this->uiBufferSize = pMixChannel->uiBufferSize;
74 this->pMixChannel = pMixChannel;
75 this->UsesExternalBuffer = true;
76
77 if (!ChannelParameters["NAME"]) ChannelParameters["NAME"] = new ParameterName(Name);
78 if (!ChannelParameters["IS_MIX_CHANNEL"]) ChannelParameters["IS_MIX_CHANNEL"] = new ParameterIsMixChannel(true);
79 //TODO: if (!ChannelParameters["MIX_CHANNEL_DESTINATION"]) ChannelParameters["MIX_CHANNEL_DESTINATION"] = new ParameterMixChannelDestination(dest_chan);
80
81 Clear();
82 }
83
84 /**
85 * Destructor
86 */
87 AudioChannel::~AudioChannel() {
88 std::map<String,DeviceRuntimeParameter*>::iterator iter = mParameters.begin();
89 while (iter != mParameters.end()) { delete iter->second; iter++; }
90 if (!UsesExternalBuffer) delete[] pBuffer;
91 }
92
93 std::map<String,DeviceRuntimeParameter*> AudioChannel::ChannelParameters() {
94 return mParameters;
95 }
96 }

  ViewVC Help
Powered by ViewVC