aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi/soft.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2015-02-09 08:47:48 -0800
committerChris Robinson <[email protected]>2015-02-09 08:47:48 -0800
commit8933e21ef21c2084570eb9cb998a47053b686ed1 (patch)
tree5765bae45d1adb3b267f3a942b46fa80ad866c7c /Alc/midi/soft.c
parent1393af4f9f2bb081b48006b29fed6ec56dc2dbab (diff)
Properly handle a mono output buffer with the MIDI synths
Diffstat (limited to 'Alc/midi/soft.c')
-rw-r--r--Alc/midi/soft.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/Alc/midi/soft.c b/Alc/midi/soft.c
index 6566b411..e8050173 100644
--- a/Alc/midi/soft.c
+++ b/Alc/midi/soft.c
@@ -18,7 +18,7 @@ typedef struct SSynth {
DERIVE_FROM_TYPE(MidiSynth);
} SSynth;
-static void SSynth_mixSamples(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE]);
+static void SSynth_mixSamples(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE], ALuint NumChannels);
static void SSynth_Construct(SSynth *self, ALCdevice *device);
static void SSynth_Destruct(SSynth *self);
@@ -27,7 +27,7 @@ static DECLARE_FORWARD1(SSynth, MidiSynth, void, setGain, ALfloat)
static DECLARE_FORWARD(SSynth, MidiSynth, void, stop)
static DECLARE_FORWARD(SSynth, MidiSynth, void, reset)
static void SSynth_update(SSynth *self, ALCdevice *device);
-static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE]);
+static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE], ALuint NumChannels);
DECLARE_DEFAULT_ALLOCATORS(SSynth)
DEFINE_MIDISYNTH_VTABLE(SSynth);
@@ -48,7 +48,7 @@ static void SSynth_update(SSynth* UNUSED(self), ALCdevice* UNUSED(device))
}
-static void SSynth_mixSamples(SSynth* UNUSED(self), ALuint UNUSED(SamplesToDo), ALfloatBUFFERSIZE *restrict UNUSED(DryBuffer))
+static void SSynth_mixSamples(SSynth* UNUSED(self), ALuint UNUSED(SamplesToDo), ALfloatBUFFERSIZE *restrict UNUSED(DryBuffer), ALuint UNUSED(NumChannels))
{
}
@@ -61,7 +61,7 @@ static void SSynth_processQueue(SSynth *self, ALuint64 time)
queue->pos++;
}
-static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE])
+static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE], ALuint NumChannels)
{
MidiSynth *synth = STATIC_CAST(MidiSynth, self);
ALenum state = synth->State;
@@ -72,7 +72,7 @@ static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict
return;
if(state != AL_PLAYING)
{
- SSynth_mixSamples(self, SamplesToDo, DryBuffer);
+ SSynth_mixSamples(self, SamplesToDo, DryBuffer, NumChannels);
return;
}
@@ -103,7 +103,7 @@ static void SSynth_process(SSynth *self, ALuint SamplesToDo, ALfloat (*restrict
if(tonext > 0)
{
ALuint todo = mini(tonext, SamplesToDo-total);
- SSynth_mixSamples(self, todo, DryBuffer);
+ SSynth_mixSamples(self, todo, DryBuffer, NumChannels);
total += todo;
tonext -= todo;
}