[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] fluidsynth export single midi channel to wav

From: Ceresa Jean-Jacques
Subject: Re: [fluid-dev] fluidsynth export single midi channel to wav
Date: Sat, 24 Oct 2020 01:48:34 +0200 (CEST)

Hi vladimir,

>jChannel is the midi channel number(1-16).

No, in fluidsynth API MIDI channel parameter are zero based (0 to 15).


>Notice these 2 lines: I'm not really sure whether I'm doing it right.
>(1) fluid_synth_reset_basic_channel(synth, -1);
>(2) fluid_synth_set_basic_channel(synth, jChannel, FLUID_CHANNEL_MODE_OMNION_MONO, 1);

1)The first line remove any basic channels groups. So all MIDI channels are disabled. That means that any MIDI messages received will be ignored.
2)The second line "says" to the synthesizer that only one channel from basic channel jChannel should be played monophonic.This is not what you expected!. What you need is only one channel enabled regardless the polyphonic/monophonic behaviour of this channel. You could think using fluid_synth_set_basic_channel(synth, jChannel, FLUID_CHANNEL_MODE_OMNIOFF_POLY, 1), but attention, this will work only if you are sure that the MIDI file currently played never change the MIDI mode (omni on/off poly/mono) by sending MIDI CC messages (124d to 127d). Unfortunately most MIDI file usually contain those CC.
So, to be sure of the result, the proper solution is to remove these 2 lines and edit the MIDIFILE by removing all tracks except the one that contain the instrument on the channel jChannel.

Before using your code, consider using the fluidsynth application console: fluidsynth  -F  your_audio_file  your_soundfont.sf2  your_midifile.mid.

Then you could use your code that look fine. Dont forget to test the result value (FLUID_OK/FLUID_FAILED) returned by API functions.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]