fluidsynth/doc/fluidsynth_simple.c
derselbst aac2354f5c remove fop-level "fluidsynth" directory node
cd fluidsynth && git mv * ../
2017-09-03 13:30:26 +02:00

84 lines
1.7 KiB
C

/* FluidSynth Simple - An example of using fluidsynth
*
* This code is in the public domain.
*
* To compile:
* gcc -g -O -o fluidsynth_simple fluidsynth_simple.c -lfluidsynth
*
* To run
* fluidsynth_simple soundfont
*
* [Peter Hanappe]
*/
#include <stdio.h>
#include <fluidsynth.h>
int main(int argc, char** argv)
{
fluid_settings_t* settings;
fluid_synth_t* synth = NULL;
fluid_audio_driver_t* adriver = NULL;
int err = 0;
if (argc != 2) {
fprintf(stderr, "Usage: fluidsynth_simple [soundfont]\n");
return 1;
}
/* Create the settings object. This example uses the default
* values for the settings. */
settings = new_fluid_settings();
if (settings == NULL) {
fprintf(stderr, "Failed to create the settings\n");
err = 2;
goto cleanup;
}
/* Create the synthesizer */
synth = new_fluid_synth(settings);
if (synth == NULL) {
fprintf(stderr, "Failed to create the synthesizer\n");
err = 3;
goto cleanup;
}
/* Load the soundfont */
if (fluid_synth_sfload(synth, argv[1], 1) == -1) {
fprintf(stderr, "Failed to load the SoundFont\n");
err = 4;
goto cleanup;
}
/* Create the audio driver. As soon as the audio driver is
* created, the synthesizer can be played. */
adriver = new_fluid_audio_driver(settings, synth);
if (adriver == NULL) {
fprintf(stderr, "Failed to create the audio driver\n");
err = 5;
goto cleanup;
}
/* Play a note */
fluid_synth_noteon(synth, 0, 60, 100);
printf("Press \"Enter\" to stop: ");
fgetc(stdin);
printf("done\n");
cleanup:
if (adriver) {
delete_fluid_audio_driver(adriver);
}
if (synth) {
delete_fluid_synth(synth);
}
if (settings) {
delete_fluid_settings(settings);
}
return err;
}