47 |
class EngineChannel { |
class EngineChannel { |
48 |
public: |
public: |
49 |
|
|
|
EngineChannel(); |
|
|
|
|
50 |
///////////////////////////////////////////////////////////////// |
///////////////////////////////////////////////////////////////// |
51 |
// abstract methods |
// abstract methods |
52 |
// (these have to be implemented by the descendant) |
// (these have to be implemented by the descendant) |
55 |
virtual void LoadInstrument() = 0; |
virtual void LoadInstrument() = 0; |
56 |
virtual void Reset() = 0; |
virtual void Reset() = 0; |
57 |
virtual void SendNoteOn(uint8_t Key, uint8_t Velocity) = 0; |
virtual void SendNoteOn(uint8_t Key, uint8_t Velocity) = 0; |
58 |
|
virtual void SendNoteOn(uint8_t Key, uint8_t Velocity, int32_t FragmentPos) = 0; |
59 |
virtual void SendNoteOff(uint8_t Key, uint8_t Velocity) = 0; |
virtual void SendNoteOff(uint8_t Key, uint8_t Velocity) = 0; |
60 |
|
virtual void SendNoteOff(uint8_t Key, uint8_t Velocity, int32_t FragmentPos) = 0; |
61 |
virtual void SendPitchbend(int Pitch) = 0; |
virtual void SendPitchbend(int Pitch) = 0; |
62 |
|
virtual void SendPitchbend(int Pitch, int32_t FragmentPos) = 0; |
63 |
virtual void SendControlChange(uint8_t Controller, uint8_t Value) = 0; |
virtual void SendControlChange(uint8_t Controller, uint8_t Value) = 0; |
64 |
|
virtual void SendControlChange(uint8_t Controller, uint8_t Value, int32_t FragmentPos) = 0; |
65 |
virtual bool StatusChanged(bool bNewStatus = false) = 0; |
virtual bool StatusChanged(bool bNewStatus = false) = 0; |
66 |
virtual float Volume() = 0; |
virtual float Volume() = 0; |
67 |
virtual void Volume(float f) = 0; |
virtual void Volume(float f) = 0; |
113 |
*/ |
*/ |
114 |
bool GetSolo(); |
bool GetSolo(); |
115 |
|
|
116 |
|
/** |
117 |
|
* Returns current MIDI program (change) number of this |
118 |
|
* EngineChannel. |
119 |
|
*/ |
120 |
|
uint8_t GetMidiProgram(); |
121 |
|
|
122 |
|
/** |
123 |
|
* Change EngineChannel's MIDI program. |
124 |
|
*/ |
125 |
|
void SetMidiProgram(uint8_t Program); |
126 |
|
|
127 |
|
/** |
128 |
|
* Returns current MIDI bank MSB (coarse) number of this |
129 |
|
* EngineChannel. |
130 |
|
*/ |
131 |
|
uint8_t GetMidiBankMsb(); |
132 |
|
|
133 |
|
/** |
134 |
|
* Change current MIDI bank MSB (coarse) number of this |
135 |
|
* EngineChannel. |
136 |
|
*/ |
137 |
|
void SetMidiBankMsb(uint8_t BankMSB); |
138 |
|
|
139 |
|
/** |
140 |
|
* Returns current MIDI bank LSB (fine) number of this |
141 |
|
* EngineChannel. |
142 |
|
*/ |
143 |
|
uint8_t GetMidiBankLsb(); |
144 |
|
|
145 |
|
/** |
146 |
|
* Change current MIDI bank LSB (fine) number of this |
147 |
|
* EngineChannel. |
148 |
|
*/ |
149 |
|
void SetMidiBankLsb(uint8_t BankLSB); |
150 |
|
|
151 |
int iSamplerChannelIndex; ///< FIXME: nasty hack, might be removed (should be 'virtual EngineChannel* EngineChannel() = 0;', but due to cyclic dependencies only a void* solution would be possible ATM) |
int iSamplerChannelIndex; ///< FIXME: nasty hack, might be removed (should be 'virtual EngineChannel* EngineChannel() = 0;', but due to cyclic dependencies only a void* solution would be possible ATM) |
152 |
|
|
153 |
protected: |
protected: |
154 |
|
EngineChannel(); |
155 |
virtual ~EngineChannel() {}; // MUST only be destroyed by EngineChannelFactory |
virtual ~EngineChannel() {}; // MUST only be destroyed by EngineChannelFactory |
156 |
friend class EngineChannelFactory; |
friend class EngineChannelFactory; |
157 |
|
|
158 |
private: |
private: |
159 |
int iMute; |
int iMute; |
160 |
bool bSolo; |
bool bSolo; |
161 |
|
uint8_t uiMidiProgram; |
162 |
|
uint8_t uiMidiBankMsb; |
163 |
|
uint8_t uiMidiBankLsb; |
164 |
}; |
}; |
165 |
|
|
166 |
} // namespace LinuxSampler |
} // namespace LinuxSampler |