Hello,

        this is a newbie quiz
        I am totally new to fluidsynth, soundfonts and midi

I am writing a fluidsynth bindings for the guile scheme language,
currently have low level bindings to the types, settings, audio and
synth API's.

I can load a sf2, create a synth and play a note, using the following
calls, fwiw [1].

But I fail to understand what series of api calls I should place to
change a midi channel instrument. I tried this:

         (fluid_synth_program_select_by_sfont_name $7 0 "Celesta" 0 0)

but I get this error message:

        fluidsynth: error: There is no preset with bank number 0 and preset 
number 0 in SoundFont Celesta
        $18 = -1

However, if I call fluid_synth_get_program, passing the appropriate
args, then access the sfont_id, bank_num and preset_num, I get

        1, 0, 0

Can someone kindly paste the exact series of low level api calls I
should place to change a midi channel instrument, given that I load the
FluidR3_GM.sf2 file.

Many thanks,
David

;; below, a guile scheme read eval print lop mini session

;; procedure calls result are 'associated' to a $xx id, which can be
;; re-used in succeeding cals ..., so for example, the synth instance is
;; in this case in the $7 variable


        scheme@(guile-user)> (new_fluid_settings)
        $6 = #<pointer 0x55a06b63f9b0>

        scheme@(guile-user)> (new_fluid_synth $6)
        $7 = #<pointer 0x55a06b6679b0>

        scheme@(guile-user)> (fluid_synth_sfload $7
        "/usr/share/sounds/sf2/FluidR3_GM.sf2" 1)
        $8 = 1

        scheme@(guile-user)> (new_fluid_audio_driver $6 $7)
        $9 = #<pointer 0x55a06b905010>
        scheme@(guile-user)> fluidsynth: warning: Failed to set thread to high 
priority

        scheme@(guile-user)> (fluid_synth_noteon $7 0 60 100)
        $10 = 0

Attachment: pgpsZx2sJAc6T.pgp
Description: OpenPGP digital signature

_______________________________________________
fluid-dev mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to