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

Contents of /linuxsampler/trunk/src/engines/common/EngineChannel.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 411 - (show annotations) (download) (as text)
Sat Feb 26 02:01:14 2005 UTC (19 years, 2 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3806 byte(s)
* design change: using now one sampler engine instance and one disk thread
  instance for all sampler channels that are connected to the same audio
  output device (and are using the same engine type of course)
* added EngineFactory / EngineChannelFactory to remove the annoying build
  dependencies e.g. of the lscpserver to the actual sampler engine
  implementations
* bumped version to 0.3.0 (current CVS state is still quite broken,
  previous, stable CVS version was tagged as "v0_2_0" and is also available
  as source tarball)

1 /***************************************************************************
2 * *
3 * Copyright (C) 2005 Christian Schoenebeck *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the Free Software *
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
18 * MA 02111-1307 USA *
19 ***************************************************************************/
20
21 #ifndef __LS_ENGINECHANNEL_H__
22 #define __LS_ENGINECHANNEL_H__
23
24 #include "../../drivers/audio/AudioOutputDevice.h"
25 #include "Engine.h"
26
27 namespace LinuxSampler {
28
29 // just symbol prototyping
30 class AudioOutputDevice;
31
32 /** @brief Channel Interface for LinuxSampler Sampler Engines
33 *
34 * Every sampler engine can be used on several sampler channels and
35 * usually the same Engine instance is used on multiple sampler
36 * channels. For this every sampler engine must also implement a class
37 * which handles all channel dependant parameters and channel
38 * dependant execution code.
39 *
40 * This abstract base interface class defines all mandatory methods
41 * which have to be implemented by all engine channel implementations.
42 */
43 class EngineChannel {
44 public:
45
46 /////////////////////////////////////////////////////////////////
47 // abstract methods
48 // (these have to be implemented by the descendant)
49
50 virtual int RenderAudio(uint Samples) = 0;
51 virtual void PrepareLoadInstrument(const char* FileName, uint Instrument) = 0;
52 virtual void LoadInstrument() = 0;
53 virtual void SendNoteOn(uint8_t Key, uint8_t Velocity) = 0;
54 virtual void SendNoteOff(uint8_t Key, uint8_t Velocity) = 0;
55 virtual void SendPitchbend(int Pitch) = 0;
56 virtual void SendControlChange(uint8_t Controller, uint8_t Value) = 0;
57 virtual float Volume() = 0;
58 virtual void Volume(float f) = 0;
59 virtual uint Channels() = 0;
60 virtual void Connect(AudioOutputDevice* pAudioOut) = 0;
61 virtual void DisconnectAudioOutputDevice() = 0;
62 virtual void SetOutputChannel(uint EngineAudioChannel, uint AudioDeviceChannel) = 0;
63 virtual int OutputChannel(uint EngineAudioChannel) = 0;
64 virtual String InstrumentFileName() = 0;
65 virtual String InstrumentName() = 0;
66 virtual int InstrumentIndex() = 0;
67 virtual int InstrumentStatus() = 0;
68 virtual Engine* GetEngine() = 0;
69
70 virtual ~EngineChannel() {};
71 };
72
73 } // namespace LinuxSampler
74
75 #endif // __LS_ENGINECHANNEL_H__

  ViewVC Help
Powered by ViewVC