1// ****************************************************************************
2//
3//		CMonitorCtrl.h
4//
5//		Class to control input monitors on cards with or without vmixers.
6//		Input monitors are used to route audio data from input busses to
7//		output busses through the DSP with very low latency.
8//
9//		Any input bus may be routed to any output bus.
10//
11// ----------------------------------------------------------------------------
12//
13// This file is part of Echo Digital Audio's generic driver library.
14// Copyright Echo Digital Audio Corporation (c) 1998 - 2005
15// All rights reserved
16// www.echoaudio.com
17//
18// This library is free software; you can redistribute it and/or
19// modify it under the terms of the GNU Lesser General Public
20// License as published by the Free Software Foundation; either
21// version 2.1 of the License, or (at your option) any later version.
22//
23// This library is distributed in the hope that it will be useful,
24// but WITHOUT ANY WARRANTY; without even the implied warranty of
25// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
26// Lesser General Public License for more details.
27//
28// You should have received a copy of the GNU Lesser General Public
29// License along with this library; if not, write to the Free Software
30// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
31//
32// ****************************************************************************
33
34#ifndef _CMonitorCtrl_H_
35#define _CMonitorCtrl_H_
36
37class CEchoGals;
38
39class CMonitorCtrl
40{
41
42protected:
43
44	typedef struct
45	{
46		INT8	iLeft;
47		INT8	iRight;
48	} PAN_DB;
49
50	CEchoGals	*m_pEG;
51
52	WORD			m_wNumBussesIn;
53	WORD			m_wNumBussesOut;
54
55	INT8			*m_Gains;
56	BYTE			*m_Mutes;
57	WORD			*m_Pans;
58	PAN_DB		*m_PanDbs;
59
60	WORD GetIndex(WORD wBusIn,WORD wBusOut)
61	{
62		return (wBusOut >> 1) * m_wNumBussesIn + wBusIn;
63	}
64
65public:
66
67	~CMonitorCtrl();
68
69	ECHOSTATUS Init(CEchoGals *m_pEG);
70	void Cleanup();
71
72	ECHOSTATUS SetGain
73	(
74		WORD 	wBusIn,
75		WORD 	wBusOut,
76		INT32 	iGain,
77		BOOL 	fImmediate = TRUE
78	);
79	ECHOSTATUS GetGain(WORD wBusIn, WORD wBusOut, INT32 &iGain);
80
81	ECHOSTATUS SetMute
82	(
83		WORD 	wBusIn,
84		WORD 	wBusOut,
85		BOOL 	bMute,
86		BOOL 	fImmediate = TRUE
87	);
88	ECHOSTATUS GetMute(WORD wBusIn, WORD wBusOut, BOOL &bMute);
89
90	ECHOSTATUS SetPan(WORD wBusIn, WORD wBusOut, INT32 iPan);
91	ECHOSTATUS GetPan(WORD wBusIn, WORD wBusOut, INT32 &iPan);
92
93};
94
95#endif // _CMonitorCtrl_H_
96