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

Annotation of /linuxsampler/trunk/src/engines/sfz/Engine.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2559 - (hide annotations) (download) (as text)
Sun May 18 17:38:25 2014 UTC (10 years ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 4363 byte(s)
* Aftertouch: extended API to explicitly handle channel pressure and
  polyphonic key pressure events (so far polyphonic pressure was not
  supported at all, and channel pressure was rerouted as CC128 but not
  used so far).
* Gig Engine: Fixed support for 'aftertouch' attenuation controller.
* Bumped version (1.0.0.svn39).

1 iliev 2012 /***************************************************************************
2     * *
3     * LinuxSampler - modular, streaming capable sampler *
4     * *
5     * Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck *
6     * Copyright (C) 2005-2009 Christian Schoenebeck *
7 persson 2072 * Copyright (C) 2009-2010 Grigor Iliev *
8 iliev 2012 * *
9     * 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 *
11     * the Free Software Foundation; either version 2 of the License, or *
12     * (at your option) any later version. *
13     * *
14     * This program is distributed in the hope that it will be useful, *
15     * but WITHOUT ANY WARRANTY; without even the implied warranty of *
16     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
17     * GNU General Public License for more details. *
18     * *
19     * You should have received a copy of the GNU General Public License *
20     * along with this program; if not, write to the Free Software *
21     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
22     * MA 02111-1307 USA *
23     ***************************************************************************/
24    
25     #ifndef __LS_SFZ_ENGINE_H__
26     #define __LS_SFZ_ENGINE_H__
27    
28     #include "DiskThread.h"
29     #include "../EngineBase.h"
30     #include "Voice.h"
31     #include "sfz.h"
32 schoenebeck 2500 #include "EngineChannel.h" // prevents compile errors with clang 2.x
33 iliev 2012
34     namespace LinuxSampler { namespace sfz {
35 iliev 2244 const int MaxCCPerVoice = 128; // FIXME: too much?
36    
37 iliev 2012 class Engine: public LinuxSampler::EngineBase<Voice, ::sfz::Region, ::sfz::Region, DiskThread, InstrumentResourceManager, ::sfz::Instrument> {
38     public:
39 iliev 2244 Engine();
40     virtual ~Engine();
41 iliev 2012 // implementation of abstract methods derived from class 'LinuxSampler::Engine'
42     virtual bool DiskStreamSupported();
43     virtual String Description();
44     virtual String Version();
45    
46     virtual Format GetEngineFormat();
47    
48     virtual void ProcessControlChange (
49     LinuxSampler::EngineChannel* pEngineChannel,
50     Pool<Event>::Iterator& itControlChangeEvent
51 schoenebeck 2559 ) OVERRIDE;
52     virtual void ProcessChannelPressure(LinuxSampler::EngineChannel* pEngineChannel, Pool<Event>::Iterator& itChannelPressureEvent) OVERRIDE;
53     virtual void ProcessPolyphonicKeyPressure(LinuxSampler::EngineChannel* pEngineChannel, Pool<Event>::Iterator& itNotePressureEvent) OVERRIDE;
54 iliev 2244
55     virtual void PostSetMaxVoices(int iVoices);
56 iliev 2012
57     friend class Voice;
58 iliev 2244 friend class SfzSignalUnitRack;
59 iliev 2012
60     protected:
61 iliev 2244 Pool<CCSignalUnit::CC>* pCCPool;
62     Pool<Smoother>* pSmootherPool;
63    
64 iliev 2012 virtual DiskThread* CreateDiskThread();
65    
66     virtual Pool<Voice>::Iterator LaunchVoice (
67     LinuxSampler::EngineChannel* pEngineChannel,
68     Pool<Event>::Iterator& itNoteOnEvent,
69     int iLayer,
70     bool ReleaseTriggerVoice,
71     bool VoiceStealing,
72     bool HandleKeyGroupConflicts
73     );
74    
75     virtual void TriggerNewVoices (
76     LinuxSampler::EngineChannel* pEngineChannel,
77     RTList<Event>::Iterator& itNoteOnEvent,
78     bool HandleKeyGroupConflicts
79     );
80    
81     void TriggerReleaseVoices (
82     LinuxSampler::EngineChannel* pEngineChannel,
83     RTList<Event>::Iterator& itNoteOffEvent
84     );
85     };
86    
87     }} // namespace LinuxSampler::sfz
88    
89     #endif /* __LS_SFZ_ENGINE_H__ */
90    

  ViewVC Help
Powered by ViewVC