/[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 2114 by persson, Tue Aug 10 12:05:19 2010 UTC revision 2326 by persson, Thu Mar 8 19:40:14 2012 UTC
# Line 4  Line 4 
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-2008 Christian Schoenebeck                         *   *   Copyright (C) 2005-2008 Christian Schoenebeck                         *
7   *   Copyright (C) 2009-2010 Christian Schoenebeck and 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 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 63  namespace LinuxSampler { Line 63  namespace LinuxSampler {
63              virtual String  InstrumentName();              virtual String  InstrumentName();
64              virtual int     InstrumentIndex();              virtual int     InstrumentIndex();
65              virtual int     InstrumentStatus();              virtual int     InstrumentStatus();
66              virtual LinuxSampler::Engine* GetEngine();              virtual Engine* GetEngine();
67              virtual String  EngineName();              virtual String  EngineName();
68              virtual FxSend* AddFxSend(uint8_t MidiCtrl, String Name = "") throw (Exception);              virtual FxSend* AddFxSend(uint8_t MidiCtrl, String Name = "") throw (Exception);
69              virtual FxSend* GetFxSend(uint FxSendIndex);              virtual FxSend* GetFxSend(uint FxSendIndex);
# Line 75  namespace LinuxSampler { Line 75  namespace LinuxSampler {
75    
76              virtual AbstractEngine::Format GetEngineFormat() = 0;              virtual AbstractEngine::Format GetEngineFormat() = 0;
77    
78                AudioOutputDevice* GetAudioOutputDeviceSafe();
79    
80              friend class AbstractVoice;              friend class AbstractVoice;
81              friend class AbstractEngine;              friend class AbstractEngine;
82              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;
# Line 85  namespace LinuxSampler { Line 87  namespace LinuxSampler {
87              virtual ~AbstractEngineChannel();              virtual ~AbstractEngineChannel();
88    
89              AbstractEngine*           pEngine;              AbstractEngine*           pEngine;
90                Mutex                     EngineMutex; ///< protects the Engine from access by the instrument loader thread when lscp is disconnecting
91    
92          public: // TODO: should be protected          public: // TODO: should be protected
93              AudioChannel*             pChannelLeft;             ///< encapsulates the audio rendering buffer (left)              AudioChannel*             pChannelLeft;             ///< encapsulates the audio rendering buffer (left)
94              AudioChannel*             pChannelRight;            ///< encapsulates the audio rendering buffer (right)              AudioChannel*             pChannelRight;            ///< encapsulates the audio rendering buffer (right)
# Line 120  namespace LinuxSampler { Line 124  namespace LinuxSampler {
124              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread;              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread;
125              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_MidiThread;              SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_MidiThread;
126    
127              std::map<uint,RTList<Event>*> ActiveKeyGroups;      ///< Contains event queues for key groups, ordered by key group ID.              // specialization of RTList that doesn't require the pool
128                // to be provided at construction time
129                template<typename T>
130                class LazyList : public RTList<T> {
131                public:
132                    using RTList<T>::allocAppend;
133                    using RTList<T>::pPool;
134    
135                    LazyList() : RTList<T>(0) { }
136                    typename RTList<T>::Iterator allocAppend(Pool<T>* pool) {
137                        pPool = pool;
138                        return allocAppend();
139                    }
140                };
141                
142                typedef std::map<uint, LazyList<Event>*> ActiveKeyGroupMap;
143                ActiveKeyGroupMap ActiveKeyGroups;      ///< Contains event queues for key groups, ordered by key group ID.
144    
145              virtual void ResetControllers();              virtual void ResetControllers();
146              virtual void ResetInternal();              virtual void ResetInternal();

Legend:
Removed from v.2114  
changed lines
  Added in v.2326

  ViewVC Help
Powered by ViewVC