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