/*! \page FileRenderer Fast file renderer for non-realtime MIDI file rendering Instead of creating an audio driver as described in section \ref MIDIPlayer one may chose to use the file renderer, which is the fastest way to synthesize MIDI files. \code fluid_settings_t* settings; fluid_synth_t* synth; fluid_player_t* player; fluid_file_renderer_t* renderer; settings = new_fluid_settings(); // specify the file to store the audio to // make sure you compiled fluidsynth with libsndfile to get a real wave file // otherwise this file will only contain raw s16 stereo PCM fluid_settings_setstr(settings, "audio.file.name", "/path/to/output.wav"); // use number of samples processed as timing source, rather than the system timer fluid_settings_setstr(settings, "player.timing-source", "sample"); // since this is a non-realtime scenario, there is no need to pin the sample data fluid_settings_setint(settings, "synth.lock-memory", 0); synth = new_fluid_synth(settings); // *** loading of a soundfont omitted *** player = new_fluid_player(synth); fluid_player_add(player, "/path/to/midifile.mid"); fluid_player_play(player); renderer = new_fluid_file_renderer (synth); while (fluid_player_get_status(player) == FLUID_PLAYER_PLAYING) { if (fluid_file_renderer_process_block(renderer) != FLUID_OK) { break; } } // just for sure: stop the playback explicitly and wait until finished fluid_player_stop(player); fluid_player_join(player); delete_fluid_file_renderer(renderer); delete_fluid_player(player); delete_fluid_synth(synth); delete_fluid_settings(settings); \endcode Various output files types are supported, if compiled with libsndfile. Those can be specified via the \c settings object as well. Refer to the \ref settings_audio documentation for more \c audio.file\.\* options. */