00001 /*************************************************************************** 00002 * * 00003 * LinuxSampler - modular, streaming capable sampler * 00004 * * 00005 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * 00006 * Copyright (C) 2005 - 2008 Christian Schoenebeck * 00007 * * 00008 * This library is free software; you can redistribute it and/or modify * 00009 * it under the terms of the GNU General Public License as published by * 00010 * the Free Software Foundation; either version 2 of the License, or * 00011 * (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00016 * GNU General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU General Public License * 00019 * along with this library; if not, write to the Free Software * 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 00021 * MA 02111-1307 USA * 00022 ***************************************************************************/ 00023 00024 #ifndef LS_FXSEND_H 00025 #define LS_FXSEND_H 00026 00027 #include "../common/global.h" 00028 #include "../drivers/audio/AudioChannel.h" 00029 #include "EngineChannel.h" 00030 00031 #include <vector> 00032 00033 namespace LinuxSampler { 00034 00035 // just symbol prototyping 00036 class EngineChannel; 00037 00055 class FxSend { 00056 public: 00072 FxSend(EngineChannel* pEngineChannel, uint8_t MidiCtrl, String Name = "") throw (Exception); 00073 00078 int DestinationMasterEffectChain() const; 00079 00085 int DestinationMasterEffect() const; 00086 00099 void SetDestinationMasterEffect(int iChain, int iEffect) throw (Exception); 00100 00105 int DestinationChannel(int SrcChan); 00106 00114 void SetDestinationChannel(int SrcChan, int DstChan) throw (Exception); 00115 00122 void UpdateChannels(); 00123 00128 float Level(); 00129 00134 void SetLevel(float f); 00135 00141 void SetLevel(uint8_t iMidiValue); 00142 00147 void Reset(); 00148 00153 uint8_t MidiController(); 00154 00162 void SetMidiController(uint8_t MidiCtrl) throw (Exception); 00163 00167 String Name(); 00168 00173 void SetName(String Name); 00174 00181 uint Id(); 00182 00186 bool IsInfoChanged(); 00187 00191 void SetInfoChanged(bool b); 00192 00193 protected: 00194 EngineChannel* pEngineChannel; 00195 int iMasterEffectChain; 00196 int iMasterEffect; 00197 std::vector<int> Routing; 00198 uint8_t MidiFxSendController; 00199 String sName; 00200 uint iId; 00201 float fLevel; 00202 bool bInfoChanged; // Determines whether there are changes to the settings. 00203 }; 00204 00205 } // namespace LinuxSampler 00206 00207 #endif // LS_FXSEND_H