mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2024-12-11 21:31:18 +00:00
60 lines
1.8 KiB
Text
60 lines
1.8 KiB
Text
/*!
|
|
|
|
\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
|
|
\setting{audio} documentation for more \c audio.file\.\* options.
|
|
|
|
*/
|