aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi/fluidsynth.c
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/midi/fluidsynth.c')
-rw-r--r--Alc/midi/fluidsynth.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/Alc/midi/fluidsynth.c b/Alc/midi/fluidsynth.c
index fbcd4353..1ddf44c3 100644
--- a/Alc/midi/fluidsynth.c
+++ b/Alc/midi/fluidsynth.c
@@ -579,7 +579,7 @@ static void FSynth_stop(FSynth *self);
static void FSynth_reset(FSynth *self);
static void FSynth_update(FSynth *self, ALCdevice *device);
static void FSynth_processQueue(FSynth *self, ALuint64 time);
-static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE]);
+static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE], ALuint NumChannels);
DECLARE_DEFAULT_ALLOCATORS(FSynth)
DEFINE_MIDISYNTH_VTABLE(FSynth);
@@ -844,9 +844,11 @@ static void FSynth_processQueue(FSynth *self, ALuint64 time)
}
}
-static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE])
+static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict DryBuffer)[BUFFERSIZE], ALuint NumChannels)
{
MidiSynth *synth = STATIC_CAST(MidiSynth, self);
+ ALfloat *LeftBuffer = DryBuffer[0];
+ ALfloat *RightBuffer = DryBuffer[(NumChannels > 1) ? 1 : 0];
ALenum state = synth->State;
ALuint64 curtime;
ALuint total = 0;
@@ -855,8 +857,8 @@ static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict
return;
if(state != AL_PLAYING)
{
- fluid_synth_write_float(self->Synth, SamplesToDo, DryBuffer[0], 0, 1,
- DryBuffer[1], 0, 1);
+ fluid_synth_write_float(self->Synth, SamplesToDo, LeftBuffer, 0, 1,
+ RightBuffer, 0, 1);
return;
}
@@ -884,8 +886,8 @@ static void FSynth_process(FSynth *self, ALuint SamplesToDo, ALfloat (*restrict
if(tonext > 0)
{
ALuint todo = minu(tonext, SamplesToDo-total);
- fluid_synth_write_float(self->Synth, todo, DryBuffer[0], total, 1,
- DryBuffer[1], total, 1);
+ fluid_synth_write_float(self->Synth, todo, LeftBuffer, total, 1,
+ RightBuffer, total, 1);
total += todo;
tonext -= todo;
}