55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
|
/*
|
||
|
==============================================================================
|
||
|
This file is part of Obxd synthesizer.
|
||
|
|
||
|
Copyright ) 2013-2014 Filatov Vadim
|
||
|
|
||
|
Contact author via email :
|
||
|
justdat_@_e1.ru
|
||
|
|
||
|
This file may be licensed under the terms of of the
|
||
|
GNU General Public License Version 2 (the ``GPL'').
|
||
|
|
||
|
Software distributed under the License is distributed
|
||
|
on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
|
||
|
express or implied. See the GPL for the specific language
|
||
|
governing rights and limitations.
|
||
|
|
||
|
You should have received a copy of the GPL along with this
|
||
|
program. If not, go to http://www.gnu.org/licenses/gpl.html
|
||
|
or write to the Free Software Foundation, Inc.,
|
||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
==============================================================================
|
||
|
*/
|
||
|
#pragma once
|
||
|
#include "ObxdVoice.h"
|
||
|
class VoiceQueue
|
||
|
{
|
||
|
private:
|
||
|
ObxdVoice* voices;
|
||
|
int idx,total;
|
||
|
public:
|
||
|
VoiceQueue()
|
||
|
{
|
||
|
voices = NULL;
|
||
|
idx = 0;
|
||
|
total = 0;
|
||
|
}
|
||
|
VoiceQueue(int voiceCount,ObxdVoice* voicesReference)
|
||
|
{
|
||
|
voices = voicesReference;
|
||
|
idx = 0;total = voiceCount;
|
||
|
}
|
||
|
inline ObxdVoice* getNext()
|
||
|
{
|
||
|
idx = idx + 1;
|
||
|
idx %=total;
|
||
|
return &voices[idx];
|
||
|
}
|
||
|
inline void reInit(int voiceCount)
|
||
|
{
|
||
|
total = voiceCount;
|
||
|
idx = idx%total;
|
||
|
}
|
||
|
};
|