CSL
5.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
InOut.h
Go to the documentation of this file.
1
//
2
// InOut.h -- copies the input buffer to the output buffer, possibly with channel remap and scaling
3
// Constructor: InOut(UnitGenerator &, unsigned inChan, [unsigned outChan, ch-1 ... ch-outChan]);
4
//
5
// See the copyright notice and acknowledgment of authors in the file COPYRIGHT
6
//
7
8
#ifndef CSL_InOut_H
9
#define CSL_InOut_H
10
11
#include "
CSL_Core.h
"
12
#include <stdarg.h>
// for varargs
13
14
namespace
csl {
15
16
#ifdef CSL_ENUMS
17
typedef
enum
{
18
kNoProc
,
// tries to keep it mono or stereo if in_chans == out_chans
19
kLR2M
,
// mixes the L and R inputs down to a mono signal
20
kL2M
,
// Copies left input to make mono
21
kR2M
,
// Copies right input to make mono
22
kN2M
,
// Copies N-channel input to M-channel output using a map
23
}
InOutFlags
;
24
#else
25
#define kNoProc 0
26
#define kLR2M 1
27
#define kL2M 2
28
#define kR2M 3
29
#define kN2M 4
30
typedef
int
InOutFlags
;
31
#endif
32
33
///
34
/// InOut class copies the IO port's input buffer to the output buffer, possibly with channel remap and scaling
35
///
36
37
class
InOut
:
public
Effect
{
38
public
:
39
/// Constructor with IO, number of channels in & out, and processing
40
InOut
(
IO
* anIO,
unsigned
inChans,
unsigned
outChans,
InOutFlags
f =
kNoProc
);
41
InOut
(
IO
* anIO,
unsigned
inChans,
unsigned
outChans,
InOutFlags
f, ...);
42
InOut
(
UnitGenerator
& myInput,
unsigned
inChans,
unsigned
outChans,
InOutFlags
f =
kNoProc
);
43
InOut
(
UnitGenerator
& myInput,
unsigned
inChans,
unsigned
outChans,
InOutFlags
, ...);
44
~InOut
();
45
46
void
setInChan
(
unsigned
chan) {
mInChans
= chan; };
///< set # in/out chans
47
void
setOutChan
(
unsigned
chan) {
mOutChans
= chan; };
48
unsigned
getInChan
(
void
) {
return
mInChans
; };
///< get # in/out chans
49
unsigned
getOutChan
(
void
) {
return
mOutChans
; };
50
51
void
setChanMap
(
unsigned
* chans);
///< set channel map
52
void
setChanGains
(
float
* values);
///< set gain array
53
void
setGain
(
unsigned
index,
float
value
);
///< set gain value at index
54
55
virtual
void
nextBuffer
(
Buffer
& outputBuffer)
throw
(
CException
);
56
57
private
:
58
IO
*
mIO
;
///< The (Singleton) IO pointer (or NULL, to act as an effect)
59
BufferCMap
mMap
;
///< the mapped buffer pointers for the output channels
60
unsigned
mInChans
;
///< # in chans
61
unsigned
mOutChans
;
///< # out chans
62
InOutFlags
mFlags
;
//< copy/process flag
63
float
*
mGains
;
///< amplitude scales
64
};
65
66
}
67
68
#endif
CSL
Processors
InOut.h
Generated on Thu Nov 15 2012 22:01:10 for CSL by
1.8.1.1