linuxsampler 1.0.0

FxSend.h

Go to the documentation of this file.
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