/[svn]/linuxsampler/trunk/src/engines/AbstractEngineChannel.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/AbstractEngineChannel.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2013 by persson, Sat Oct 24 09:07:38 2009 UTC revision 2317 by persson, Sun Feb 19 12:13:19 2012 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck    *   *   Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck    *
6   *   Copyright (C) 2005-2009 Christian Schoenebeck                         *   *   Copyright (C) 2005-2008 Christian Schoenebeck                         *
7   *   Copyright (C) 2009 Grigor Iliev                                       *   *   Copyright (C) 2009-2012 Christian Schoenebeck and Grigor Iliev        *
8   *                                                                         *   *                                                                         *
9   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
10   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 23  Line 23 
23   ***************************************************************************/   ***************************************************************************/
24    
25  #ifndef __LS_ABSTRACTENGINECHANNEL_H__  #ifndef __LS_ABSTRACTENGINECHANNEL_H__
26  #define __LS_ABSTRACTENGINECHANNEL_H__  #define __LS_ABSTRACTENGINECHANNEL_H__
27    
28  #include "EngineChannel.h"  #include "EngineChannel.h"
29  #include "AbstractEngine.h"  #include "AbstractEngine.h"
# Line 38  namespace LinuxSampler { Line 38  namespace LinuxSampler {
38              // implementation of abstract methods derived from interface class 'LinuxSampler::EngineChannel'              // implementation of abstract methods derived from interface class 'LinuxSampler::EngineChannel'
39              virtual void    PrepareLoadInstrument(const char* FileName, uint Instrument);              virtual void    PrepareLoadInstrument(const char* FileName, uint Instrument);
40              virtual void    Reset();              virtual void    Reset();
41              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity);              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity, uint8_t MidiChannel);
42              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity, int32_t FragmentPos);              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity, uint8_t MidiChannel, int32_t FragmentPos);
43              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity);              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity, uint8_t MidiChannel);
44              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity, int32_t FragmentPos);              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity, uint8_t MidiChannel, int32_t FragmentPos);
45              virtual void    SendPitchbend(int Pitch);              virtual void    SendPitchbend(int Pitch, uint8_t MidiChannel);
46              virtual void    SendPitchbend(int Pitch, int32_t FragmentPos);              virtual void    SendPitchbend(int Pitch, uint8_t MidiChannel, int32_t FragmentPos);
47              virtual void    SendControlChange(uint8_t Controller, uint8_t Value);              virtual void    SendControlChange(uint8_t Controller, uint8_t Value, uint8_t MidiChannel);
48              virtual void    SendControlChange(uint8_t Controller, uint8_t Value, int32_t FragmentPos);              virtual void    SendControlChange(uint8_t Controller, uint8_t Value, uint8_t MidiChannel, int32_t FragmentPos);
49              virtual bool    StatusChanged(bool bNewStatus = false);              virtual bool    StatusChanged(bool bNewStatus = false);
50              virtual float   Volume();              virtual float   Volume();
51              virtual void    Volume(float f);              virtual void    Volume(float f);
# Line 75  namespace LinuxSampler { Line 75  namespace LinuxSampler {
75    
76              virtual AbstractEngine::Format GetEngineFormat() = 0;              virtual AbstractEngine::Format GetEngineFormat() = 0;
77    
78                friend class AbstractVoice;
79              friend class AbstractEngine;              friend class AbstractEngine;
80              template<class TV, class TRR, class TR, class TD, class TIM, class TI> friend class EngineBase;              template<class TV, class TRR, class TR, class TD, class TIM, class TI> friend class EngineBase;
81                template<class EC, class R, class S, class D> friend class VoiceBase;
82    
83          protected:          protected:
84              AbstractEngineChannel();              AbstractEngineChannel();
# Line 112  namespace LinuxSampler { Line 114  namespace LinuxSampler {
114              int                       iLastPanRequest;          ///< just for the return value of Pan(), so we don't have to make an injective function              int                       iLastPanRequest;          ///< just for the return value of Pan(), so we don't have to make an injective function
115              int                       iEngineIndexSelf;         ///< Reflects the index of this EngineChannel in the Engine's ArrayList.              int                       iEngineIndexSelf;         ///< Reflects the index of this EngineChannel in the Engine's ArrayList.
116              bool                      bStatusChanged;           ///< true in case an engine parameter has changed (e.g. new instrument, another volumet)              bool                      bStatusChanged;           ///< true in case an engine parameter has changed (e.g. new instrument, another volumet)
117                uint32_t                  RoundRobinIndex;          ///< counter for round robin sample selection, incremented for each note on
118    
119              SynchronizedConfig< ArrayList<VirtualMidiDevice*> > virtualMidiDevices;              SynchronizedConfig< ArrayList<VirtualMidiDevice*> > virtualMidiDevices;
120              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread;              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread;
121              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_MidiThread;              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_MidiThread;
122    
123                // specialization of RTList that doesn't require the pool
124                // to be provided at construction time
125                template<typename T>
126                class LazyList : public RTList<T> {
127                public:
128                    using RTList<T>::allocAppend;
129                    using RTList<T>::pPool;
130    
131                    LazyList() : RTList<T>(0) { }
132                    typename RTList<T>::Iterator allocAppend(Pool<T>* pool) {
133                        pPool = pool;
134                        return allocAppend();
135                    }
136                };
137                
138                typedef std::map<uint, LazyList<Event>*> ActiveKeyGroupMap;
139                ActiveKeyGroupMap ActiveKeyGroups;      ///< Contains event queues for key groups, ordered by key group ID.
140    
141              virtual void ResetControllers();              virtual void ResetControllers();
142              virtual void ResetInternal();              virtual void ResetInternal();
143              virtual void RemoveAllFxSends();              virtual void RemoveAllFxSends();
144    
145              void ImportEvents(uint Samples);              void ImportEvents(uint Samples);
146    
147                void AddGroup(uint group);
148                void HandleKeyGroupConflicts(uint KeyGroup, Pool<Event>::Iterator& itNoteOnEvent);
149                void ClearGroupEventLists();
150                void DeleteGroupEventLists();
151      };      };
152    
153  } // namespace LinuxSampler  } // namespace LinuxSampler
154    
155  #endif  /* __LS_ABSTRACTENGINECHANNEL_H__ */  #endif  /* __LS_ABSTRACTENGINECHANNEL_H__ */
156    

Legend:
Removed from v.2013  
changed lines
  Added in v.2317

  ViewVC Help
Powered by ViewVC