<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>libfluidsynth: audio.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <script type="text/javascript"> function hasClass(ele,cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); } function addClass(ele,cls) { if (!this.hasClass(ele,cls)) ele.className += " "+cls; } function removeClass(ele,cls) { if (hasClass(ele,cls)) { var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)'); ele.className=ele.className.replace(reg,' '); } } function toggleVisibility(linkObj) { var base = linkObj.getAttribute('id'); var summary = document.getElementById(base + '-summary'); var content = document.getElementById(base + '-content'); var trigger = document.getElementById(base + '-trigger'); if ( hasClass(linkObj,'closed') ) { summary.style.display = 'none'; content.style.display = 'block'; trigger.src = 'open.png'; removeClass(linkObj,'closed'); addClass(linkObj,'opened'); } else if ( hasClass(linkObj,'opened') ) { summary.style.display = 'block'; content.style.display = 'none'; trigger.src = 'closed.png'; removeClass(linkObj,'opened'); addClass(linkObj,'closed'); } return false; } </script> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <h1>audio.h File Reference</h1> </div> </div> <div class="contents"> <p>Functions for audio driver output. <a href="#_details">More...</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#aedef4ac50e1c453d126855a7da31e332">fluid_audio_func_t</a> )(void *data, int len, int nin, float **in, int nout, float **out)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Callback function type used with <a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc" title="Create a new audio driver.">new_fluid_audio_driver2()</a> to allow for custom user audio processing before the audio is sent to the driver. <a href="#aedef4ac50e1c453d126855a7da31e332"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API <br class="typebreak"/> <a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#a4ad51317b10b89bfe94ade5db345864b">new_fluid_audio_driver</a> (<a class="el" href="types_8h.html#aa363402d3c77333b0f070ba531d034ba">fluid_settings_t</a> *settings, <a class="el" href="types_8h.html#ae265f10ae174a13afe010de50d87e1a4">fluid_synth_t</a> *synth)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new audio driver. <a href="#a4ad51317b10b89bfe94ade5db345864b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API <br class="typebreak"/> <a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc">new_fluid_audio_driver2</a> (<a class="el" href="types_8h.html#aa363402d3c77333b0f070ba531d034ba">fluid_settings_t</a> *settings, <a class="el" href="audio_8h.html#aedef4ac50e1c453d126855a7da31e332">fluid_audio_func_t</a> func, void *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new audio driver. <a href="#a3959d8add1dea97e507a5ea2c802c0bc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#a05678e633d37da0f93000045393e9442">delete_fluid_audio_driver</a> (<a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a> *driver)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Deletes an audio driver instance. <a href="#a05678e633d37da0f93000045393e9442"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API <br class="typebreak"/> <a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#a9d9338a870c5f71ba6fad6db7d17a93e">new_fluid_file_renderer</a> (<a class="el" href="types_8h.html#ae265f10ae174a13afe010de50d87e1a4">fluid_synth_t</a> *synth)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new file renderer and open the file. <a href="#a9d9338a870c5f71ba6fad6db7d17a93e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#abdea2fb753cf1a5fa9b5dca38c177d80">fluid_file_renderer_process_block</a> (<a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a> *dev)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Write period_size samples to file. <a href="#abdea2fb753cf1a5fa9b5dca38c177d80"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="audio_8h.html#a6893d780de15030366e2399293ed7362">delete_fluid_file_renderer</a> (<a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a> *dev)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close file and destroy a file renderer object. <a href="#a6893d780de15030366e2399293ed7362"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Functions for audio driver output. </p> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="aedef4ac50e1c453d126855a7da31e332"></a><!-- doxytag: member="audio.h::fluid_audio_func_t" ref="aedef4ac50e1c453d126855a7da31e332" args=")(void *data, int len, int nin, float **in, int nout, float **out)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef int(* <a class="el" href="audio_8h.html#aedef4ac50e1c453d126855a7da31e332">fluid_audio_func_t</a>)(void *data, int len, int nin, float **in, int nout, float **out)</td> </tr> </table> </div> <div class="memdoc"> <p>Callback function type used with <a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc" title="Create a new audio driver.">new_fluid_audio_driver2()</a> to allow for custom user audio processing before the audio is sent to the driver. </p> <p>This function is responsible for rendering the audio to the buffers. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>The user data parameter as passed to <a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc" title="Create a new audio driver.">new_fluid_audio_driver2()</a>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Length of the audio in frames. </td></tr> <tr><td valign="top"></td><td valign="top"><em>nin</em> </td><td>Count of buffers in 'in' </td></tr> <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>Not used currently </td></tr> <tr><td valign="top"></td><td valign="top"><em>nout</em> </td><td>Count of arrays in 'out' (i.e., channel count) </td></tr> <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>Output buffers, one for each channel </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Should return 0 on success, non-zero if an error occured. </dd></dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="a4ad51317b10b89bfe94ade5db345864b"></a><!-- doxytag: member="audio.h::new_fluid_audio_driver" ref="a4ad51317b10b89bfe94ade5db345864b" args="(fluid_settings_t *settings, fluid_synth_t *synth)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API <a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a>* new_fluid_audio_driver </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#aa363402d3c77333b0f070ba531d034ba">fluid_settings_t</a> * </td> <td class="paramname"> <em>settings</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="types_8h.html#ae265f10ae174a13afe010de50d87e1a4">fluid_synth_t</a> * </td> <td class="paramname"> <em>synth</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new audio driver. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>settings</em> </td><td>Configuration settings used to select and create the audio driver. </td></tr> <tr><td valign="top"></td><td valign="top"><em>synth</em> </td><td>Synthesizer instance for which the audio driver is created for. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The new audio driver instance.</dd></dl> <p>Creates a new audio driver for a given 'synth' instance with a defined set of configuration 'settings'. </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="example_8c-example.html#a2">example.c</a>, <a class="el" href="fluidsynth__arpeggio_8c-example.html#a10">fluidsynth_arpeggio.c</a>, <a class="el" href="fluidsynth__metronome_8c-example.html#a9">fluidsynth_metronome.c</a>, and <a class="el" href="fluidsynth__simple_8c-example.html#a3">fluidsynth_simple.c</a>.</dd> </dl> <p>References <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9ea5542b67c606598020b832c31729175fc">FLUID_DBG</a>, <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9eabc0ff48d192b3b0fc721946ccf095d25">FLUID_ERR</a>, <a class="el" href="settings_8h.html#aa2cf8ed808a4ce5fcfdfb208ea77811b">fluid_settings_dupstr()</a>, <a class="el" href="settings_8h.html#a7c78d673d39c3463339612f7a508cda4">fluid_settings_option_concat()</a>, <a class="el" href="settings_8h.html#a2646edb018c961162845f1711503b597">fluid_settings_str_equal()</a>, and <a class="el" href="audio_8h.html#a4ad51317b10b89bfe94ade5db345864b">new_fluid_audio_driver()</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#a4ad51317b10b89bfe94ade5db345864b">new_fluid_audio_driver()</a>.</p> </div> </div> <a class="anchor" id="a3959d8add1dea97e507a5ea2c802c0bc"></a><!-- doxytag: member="audio.h::new_fluid_audio_driver2" ref="a3959d8add1dea97e507a5ea2c802c0bc" args="(fluid_settings_t *settings, fluid_audio_func_t func, void *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API <a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a>* new_fluid_audio_driver2 </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#aa363402d3c77333b0f070ba531d034ba">fluid_settings_t</a> * </td> <td class="paramname"> <em>settings</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="audio_8h.html#aedef4ac50e1c453d126855a7da31e332">fluid_audio_func_t</a> </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new audio driver. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>settings</em> </td><td>Configuration settings used to select and create the audio driver. </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>Function called to fill audio buffers for audio playback </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>User defined data pointer to pass to 'func' </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The new audio driver instance.</dd></dl> <p>Like <a class="el" href="audio_8h.html#a4ad51317b10b89bfe94ade5db345864b" title="Create a new audio driver.">new_fluid_audio_driver()</a> but allows for custom audio processing before audio is sent to audio driver. It is the responsibility of the callback 'func' to render the audio into the buffers.</p> <p>NOTE: Not as efficient as <a class="el" href="audio_8h.html#a4ad51317b10b89bfe94ade5db345864b" title="Create a new audio driver.">new_fluid_audio_driver()</a>. </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="fluidsynth__fx_8c-example.html#a4">fluidsynth_fx.c</a>.</dd> </dl> <p>References <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9ea5542b67c606598020b832c31729175fc">FLUID_DBG</a>, <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9eabc0ff48d192b3b0fc721946ccf095d25">FLUID_ERR</a>, <a class="el" href="settings_8h.html#aa2cf8ed808a4ce5fcfdfb208ea77811b">fluid_settings_dupstr()</a>, <a class="el" href="settings_8h.html#a2646edb018c961162845f1711503b597">fluid_settings_str_equal()</a>, and <a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc">new_fluid_audio_driver2()</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#a3959d8add1dea97e507a5ea2c802c0bc">new_fluid_audio_driver2()</a>.</p> </div> </div> <a class="anchor" id="a05678e633d37da0f93000045393e9442"></a><!-- doxytag: member="audio.h::delete_fluid_audio_driver" ref="a05678e633d37da0f93000045393e9442" args="(fluid_audio_driver_t *driver)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API void delete_fluid_audio_driver </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#ac3706330ce49cac5b7dd079e90d376d8">fluid_audio_driver_t</a> * </td> <td class="paramname"> <em>driver</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Deletes an audio driver instance. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>driver</em> </td><td>Audio driver instance to delete</td></tr> </table> </dd> </dl> <p>Shuts down an audio driver and deletes its instance. </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="example_8c-example.html#a6">example.c</a>, <a class="el" href="fluidsynth__arpeggio_8c-example.html#a17">fluidsynth_arpeggio.c</a>, <a class="el" href="fluidsynth__fx_8c-example.html#a6">fluidsynth_fx.c</a>, <a class="el" href="fluidsynth__metronome_8c-example.html#a16">fluidsynth_metronome.c</a>, and <a class="el" href="fluidsynth__simple_8c-example.html#a5">fluidsynth_simple.c</a>.</dd> </dl> <p>References <a class="el" href="audio_8h.html#a05678e633d37da0f93000045393e9442">delete_fluid_audio_driver()</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#a05678e633d37da0f93000045393e9442">delete_fluid_audio_driver()</a>.</p> </div> </div> <a class="anchor" id="a9d9338a870c5f71ba6fad6db7d17a93e"></a><!-- doxytag: member="audio.h::new_fluid_file_renderer" ref="a9d9338a870c5f71ba6fad6db7d17a93e" args="(fluid_synth_t *synth)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API <a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a>* new_fluid_file_renderer </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#ae265f10ae174a13afe010de50d87e1a4">fluid_synth_t</a> * </td> <td class="paramname"> <em>synth</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new file renderer and open the file. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>synth</em> </td><td>The synth that creates audio data. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the new object, or NULL on failure </dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.1.0</dd></dl> <p>NOTE: Available file types and formats depends on if libfluidsynth was built with libsndfile support or not. If not then only RAW 16 bit output is supported.</p> <p>Uses the following settings from the synth object:</p> <ul> <li>audio.file.name: Output filename</li> <li>audio.file.type: File type, "auto" tries to determine type from filename extension with fallback to "wav".</li> <li>audio.file.format: Audio format</li> <li>audio.file.endian: Endian byte order, "auto" for file type's default byte order</li> <li>audio.period-size: Size of audio blocks to process</li> <li>synth.sample-rate: Sample rate to use </li> </ul> <p>References <a class="el" href="audio_8h.html#a6893d780de15030366e2399293ed7362">delete_fluid_file_renderer()</a>, <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9eabc0ff48d192b3b0fc721946ccf095d25">FLUID_ERR</a>, <a class="el" href="settings_8h.html#aa2cf8ed808a4ce5fcfdfb208ea77811b">fluid_settings_dupstr()</a>, <a class="el" href="settings_8h.html#a4a570095ef3de25e77f4dd9c574bc56c">fluid_settings_getint()</a>, <a class="el" href="settings_8h.html#a619c930e119a4a3889131d67293e2089">fluid_settings_getnum()</a>, and <a class="el" href="audio_8h.html#a9d9338a870c5f71ba6fad6db7d17a93e">new_fluid_file_renderer()</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#a9d9338a870c5f71ba6fad6db7d17a93e">new_fluid_file_renderer()</a>.</p> </div> </div> <a class="anchor" id="abdea2fb753cf1a5fa9b5dca38c177d80"></a><!-- doxytag: member="audio.h::fluid_file_renderer_process_block" ref="abdea2fb753cf1a5fa9b5dca38c177d80" args="(fluid_file_renderer_t *dev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API int fluid_file_renderer_process_block </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a> * </td> <td class="paramname"> <em>dev</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Write period_size samples to file. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>File renderer instance </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="misc_8h.html#ae4efb1c3ce0d550c922504adfb0fb886" title="Value that indicates success, used by most libfluidsynth functions.">FLUID_OK</a> or <a class="el" href="misc_8h.html#a90e8bdbc5a507bbfa5c45bac85a63a61" title="Value that indicates failure, used by most libfluidsynth functions.">FLUID_FAILED</a> if an error occurred </dd></dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.1.0 </dd></dl> <p>References <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9eabc0ff48d192b3b0fc721946ccf095d25">FLUID_ERR</a>, <a class="el" href="audio_8h.html#abdea2fb753cf1a5fa9b5dca38c177d80">fluid_file_renderer_process_block()</a>, <a class="el" href="synth_8h.html#ac86a79a943fc5d5d485ccc5a5fcad03d">fluid_synth_write_float()</a>, and <a class="el" href="synth_8h.html#a0d7c287342eb282d4ec63ea7f35cd791">fluid_synth_write_s16()</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#abdea2fb753cf1a5fa9b5dca38c177d80">fluid_file_renderer_process_block()</a>.</p> </div> </div> <a class="anchor" id="a6893d780de15030366e2399293ed7362"></a><!-- doxytag: member="audio.h::delete_fluid_file_renderer" ref="a6893d780de15030366e2399293ed7362" args="(fluid_file_renderer_t *dev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FLUIDSYNTH_API void delete_fluid_file_renderer </td> <td>(</td> <td class="paramtype"><a class="el" href="types_8h.html#a8e8a634da121763271ed819dfe866b3d">fluid_file_renderer_t</a> * </td> <td class="paramname"> <em>dev</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Close file and destroy a file renderer object. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>File renderer object. </td></tr> </table> </dd> </dl> <dl class="since"><dt><b>Since:</b></dt><dd>1.1.0 </dd></dl> <p>References <a class="el" href="audio_8h.html#a6893d780de15030366e2399293ed7362">delete_fluid_file_renderer()</a>, and <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9ea394460be1ec74fce15e1ff683606df0f">FLUID_WARN</a>.</p> <p>Referenced by <a class="el" href="audio_8h.html#a6893d780de15030366e2399293ed7362">delete_fluid_file_renderer()</a>, and <a class="el" href="audio_8h.html#a9d9338a870c5f71ba6fad6db7d17a93e">new_fluid_file_renderer()</a>.</p> </div> </div> </div> <hr class="footer"/><address class="footer"><small>Generated on Tue Oct 12 2010 for libfluidsynth by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>