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-2012 Christian Schoenebeck and Grigor Iliev * |
* Copyright (C) 2009-2012 Christian Schoenebeck and Grigor Iliev * |
8 |
* Copyright (C) 2013-2014 Christian Schoenebeck and Andreas Persson * |
* Copyright (C) 2012-2016 Christian Schoenebeck and Andreas Persson * |
9 |
* * |
* * |
10 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
11 |
* 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 * |
123 |
midi_chan_t midiChannel; ///< MIDI channel(s) on which this engine channel listens to (on all MIDI input ports). |
midi_chan_t midiChannel; ///< MIDI channel(s) on which this engine channel listens to (on all MIDI input ports). |
124 |
RingBuffer<Event,false>* pEventQueue; ///< Input event queue. |
RingBuffer<Event,false>* pEventQueue; ///< Input event queue. |
125 |
RTList<Event>* pEvents; ///< All engine channel specific events for the current audio fragment. |
RTList<Event>* pEvents; ///< All engine channel specific events for the current audio fragment. |
126 |
|
struct _DelayedEvents { |
127 |
|
RTList<Event>* pList; ///< Unsorted list where all delayed events are moved to and remain here until they're finally processed. |
128 |
|
Pool<ScheduledEvent> schedulerNodes; ///< Nodes used to sort the delayed events (stored on pList) with time sorted queue. |
129 |
|
RTAVLTree<ScheduledEvent> queue; ///< Used to access the delayed events (from pList) in time sorted manner. |
130 |
|
|
131 |
|
_DelayedEvents() : pList(NULL), schedulerNodes(CONFIG_MAX_EVENTS_PER_FRAGMENT) {} |
132 |
|
|
133 |
|
inline void clear() { |
134 |
|
if (pList) pList->clear(); |
135 |
|
schedulerNodes.clear(); |
136 |
|
queue.clear(); |
137 |
|
} |
138 |
|
} delayedEvents; |
139 |
uint8_t ControllerTable[130]; ///< Reflects the current values (0-127) of all MIDI controllers for this engine / sampler channel. Number 128 is for channel pressure (mono aftertouch), 129 for pitch bend. |
uint8_t ControllerTable[130]; ///< Reflects the current values (0-127) of all MIDI controllers for this engine / sampler channel. Number 128 is for channel pressure (mono aftertouch), 129 for pitch bend. |
140 |
String InstrumentFile; |
String InstrumentFile; |
141 |
int InstrumentIdx; |
int InstrumentIdx; |
179 |
ActiveKeyGroupMap ActiveKeyGroups; ///< Contains event queues for key groups, ordered by key group ID. |
ActiveKeyGroupMap ActiveKeyGroups; ///< Contains event queues for key groups, ordered by key group ID. |
180 |
|
|
181 |
virtual void ResetControllers(); |
virtual void ResetControllers(); |
182 |
virtual void ResetInternal(); |
virtual void ResetInternal(bool bResetEngine); |
183 |
virtual void RemoveAllFxSends(); |
virtual void RemoveAllFxSends(); |
184 |
|
|
185 |
void ImportEvents(uint Samples); |
void ImportEvents(uint Samples); |
186 |
int ScheduleEvent(const Event* pEvent, int delay); //TODO: delay not implemented yet |
int ScheduleEventMicroSec(const Event* pEvent, int delay); |
187 |
void IgnoreEvent(int id); |
void IgnoreEvent(int id); |
188 |
|
|
189 |
void AddGroup(uint group); |
void AddGroup(uint group); |