1// ****************************************************************************
2//
3//		CLineLevel.h
4//
5//		Include file for EchoGals generic driver line level state machine.
6//
7//		Class for setting and getting mixer values for input and output busses.
8//
9//		Implemented as a base class with 3 derived classes, one for
10//		each type of line.
11//
12// ----------------------------------------------------------------------------
13//
14// ----------------------------------------------------------------------------
15//
16// This file is part of Echo Digital Audio's generic driver library.
17// Copyright Echo Digital Audio Corporation (c) 1998 - 2005
18// All rights reserved
19// www.echoaudio.com
20//
21// This library is free software; you can redistribute it and/or
22// modify it under the terms of the GNU Lesser General Public
23// License as published by the Free Software Foundation; either
24// version 2.1 of the License, or (at your option) any later version.
25//
26// This library is distributed in the hope that it will be useful,
27// but WITHOUT ANY WARRANTY; without even the implied warranty of
28// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29// Lesser General Public License for more details.
30//
31// You should have received a copy of the GNU Lesser General Public
32// License along with this library; if not, write to the Free Software
33// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
34//
35// ****************************************************************************
36
37#ifndef _CLineLevel_
38#define _CLineLevel_
39
40
41class CEchoGals;
42
43
44/****************************************************************************
45
46	CLineLevel - Base class
47
48 ****************************************************************************/
49
50class CLineLevel
51{
52protected :
53
54	INT32				m_iGain;				// Current gain in dB X 256
55	BOOL				m_fMuted;
56	CEchoGals *		m_pEchoGals;		// Ptr to our creator object
57	WORD				m_wChannelIndex;	// pipe index for this line
58
59public:
60
61	//
62	//	Construction/destruction
63	//
64	CLineLevel();
65	virtual ~CLineLevel();
66
67	//
68	//	Initialization function for initializing arrays of this class
69	//
70	void Init
71	(
72		WORD				wChannelIndex,	// Which channel we represent
73		CEchoGals *		pEchoGals,		// For setting line levels
74		INT32				iGain = 0		// Initial gain setting
75	);
76
77	//
78	//	Mute
79	//
80	virtual ECHOSTATUS SetMute( BOOL bOn );
81	BOOL IsMuteOn() { return m_fMuted; }
82
83
84	//
85	//	Gain functions
86	//
87	INT32 GetGain() { return( m_iGain ); }
88	virtual ECHOSTATUS SetGain(
89		INT32 	iGain,
90		BOOL 	fImmediate = TRUE
91	) = NULL;
92
93};		// class CLineLevel
94
95typedef CLineLevel * PCLineLevel;
96
97
98
99/****************************************************************************
100
101	CBusInLineLevel - Derived class for managing input bus gains
102
103 ****************************************************************************/
104
105class CBusInLineLevel : public CLineLevel
106{
107protected :
108
109public:
110
111	//
112	//	Construction/destruction
113	//
114	CBusInLineLevel();
115	virtual ~CBusInLineLevel();
116
117	//
118	//	Mute
119	//
120	virtual ECHOSTATUS SetMute( BOOL bOn );
121
122	//
123	//	Gain functions
124	//
125	virtual ECHOSTATUS SetGain
126	(
127		INT32 	iGain,
128		BOOL 	fImmediate = TRUE
129	);
130
131
132};		// class CBusInLineLevel
133
134typedef CBusInLineLevel * PCBusInLineLevel;
135
136
137
138
139/****************************************************************************
140
141	CBusOutLineLevel - Derived class for managing output bus gains
142
143 ****************************************************************************/
144
145class CBusOutLineLevel : public CLineLevel
146{
147protected :
148
149public:
150
151	//
152	//	Construction/destruction
153	//
154	CBusOutLineLevel();
155	virtual ~CBusOutLineLevel();
156
157	//
158	//	Mute
159	//
160	virtual ECHOSTATUS SetMute( BOOL bOn );
161
162	//
163	//	Gain functions
164	//
165	virtual ECHOSTATUS SetGain
166	(
167		INT32 	iGain,
168		BOOL 	fImmediate = TRUE
169	);
170
171
172};		// class CBusOutLineLevel
173
174typedef CBusOutLineLevel * PCBusOutLineLevel;
175
176#endif
177
178// **** CLineLevel.h ****
179