fluid_synth_set_channel_type() changes the type only. It does not assign new presets. To do this, either add a call to fluid_synth_program_reset() or send some fluid_synth_program_change() messages afterwards.
And make sure to implement proper error handling by checking the return values of those functions.
Tom