Hello Davy

 

Following some hints.

>I imagined two possibilities:
>1) loading an existing soundfont and synchronizing all following changes made 
>in Polyphone with the internal structure of the FluidSynth data

This solution should be possible via the concept of possible multiple 
"soundfont loader" (fluid_sfloader_t) inside Fluidsynth.

When an application creates a Fluidsynth instance, a default internal 
fluid_sfloader_t is built. Of course this default loader is for Soundfont 2.1 
loading.

Then when the application call fluid_synth_noteon(), Fluidsynth call 
fluid_defpreset_noteon() which is the default noteon function provided by the 
default loader.

The application can also add others soundfont loader 
(fluid_synth_add_sfloader()) owned by this application. These new loader is 
added in the internal loader list.

Then when the application call fluid_synth_sfload() (or fluid_synth_sfreload()) 
, the internal loader list is used until the load is successful.

This means that if the application call fluid_synth_noteon(), now the noteon 
function provided by the application loader could be called.

Whatever this solution avoid to save and load a file between two operations, it 
is complex to implement.

 

1.2) May be an other solution could be making use of those APIs to play a 
preset coming from the application (without any soundfont loading):

FLUIDSYNTH_API fluid_sample_t *new_fluid_sample(void)

FLUIDSYNTH_API int fluid_sample_set_name()

FLUIDSYNTH_API int fluid_sample_set_sound_data()

FLUIDSYNTH_API int fluid_sample_set_loop()

FLUIDSYNTH_API int fluid_sample_set_pitch()

FLUIDSYNTH_API fluid_voice_t *fluid_synth_alloc_voice()

FLUIDSYNTH_API void fluid_voice_gen_set()

FLUIDSYNTH_API void fluid_voice_add_mod()

FLUIDSYNTH_API void fluid_voice_start()

Note this solution (1.2) is a subset of solution (1.1), anyway it is still a 
bit complex.

 

>2) loading an existing soundfont and creating small temporary files containing 
>a modified version of presets.

Probably the easier way. Making use of fluid_synth_sfload(), 
fluid_synth_sfunload(), fluid_synth_sfreload() should be convenient.

Using a very small file should not produce a boring latency.

Regards.

jjc

 

 

 

> Message du 19/09/18 14:46
> De : "Davy Triponney" 
> A : fluid-dev@nongnu.org
> Copie à : 
> Objet : [fluid-dev] Integration of FluidSynth in Polyphone
> 
>

Dear FluidSynth team,

>
I should have done this from the beginning but I'm now considering integrating 
FluidSynth directly inside Polyphone, which will assure a correct and complete 
rendering of the soundfonts. I have always considered FluidSynth as the 
reference for playing a soundfont.

>
Loading a soundfont from a file with FluidSynth is well documented but, 
Polyphone being an editor, I'm now requiring some help or "hints" to know how 
parameters of a sample, instrument or preset can be changed / added / deleted 
without requiring loading a file. The goal is to test the effect of a change 
within Polyphone without having to save and load the file between two 
operations.

>
I imagined two possibilities:
* loading an existing soundfont and synchronizing all following changes made in 
Polyphone with the internal structure of the FluidSynth data, or
* loading an existing soundfont and creating small temporary files containing a 
modified version of presets.

>
Can someone advice on the best way to update parameters?

>
Best regards,
>
Davy
>




_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to