Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 2eb128636afdc4a8c8207ec3ec09861d > files > 109

fluidsynth-devel-1.1.3-1.fc14.i686.rpm

<!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: voice.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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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&nbsp;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="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>voice.h File Reference</h1>  </div>
</div>
<div class="contents">

<p>Synthesis voice manipulation functions.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b">fluid_voice_add_mod</a> { <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2ba0fe2e3c967922afa7c61990a4a5d01e4">FLUID_VOICE_OVERWRITE</a>, 
<a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2baed44612d36459a1254b7ab6f34576a72">FLUID_VOICE_ADD</a>, 
<a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2bab6a4717eb5a5f1adc30f89843a0bac4d">FLUID_VOICE_DEFAULT</a>
 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Enum used with <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b" title="Enum used with fluid_voice_add_mod() to specify how to handle duplicate modulators.">fluid_voice_add_mod()</a> to specify how to handle duplicate modulators. </p>
 <a href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b">More...</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 void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#a4d62972ae304910f87e7d63e5470c813">fluid_voice_update_param</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice, int gen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update all the synthesis parameters, which depend on generator <em>gen</em>.  <a href="#a4d62972ae304910f87e7d63e5470c813"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#ac11c3fc60306f620c9f7fe6966c00c61">fluid_voice_add_mod</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice, <a class="el" href="struct__fluid__mod__t.html">fluid_mod_t</a> *mod, int mode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a modulator to the voice.  <a href="#ac11c3fc60306f620c9f7fe6966c00c61"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#aa72691425953a90635ddc32ad246528e">fluid_voice_gen_set</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice, int gen, float val)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the value of a generator.  <a href="#aa72691425953a90635ddc32ad246528e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#a61f7647152016a209706790e5a37b7dc">fluid_voice_gen_get</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice, int gen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the value of a generator.  <a href="#a61f7647152016a209706790e5a37b7dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#a7113dbb4a08d8097d4188658876749c5">fluid_voice_gen_incr</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice, int gen, float val)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset the value of a generator.  <a href="#a7113dbb4a08d8097d4188658876749c5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#a2388ffa5047de96d37fdd0b8e988097a">fluid_voice_get_id</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the unique ID of the noteon-event.  <a href="#a2388ffa5047de96d37fdd0b8e988097a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#ac2257338d31a1a8456a219e616bdc109">fluid_voice_is_playing</a> (<a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *voice)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a voice is still playing.  <a href="#ac2257338d31a1a8456a219e616bdc109"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">FLUIDSYNTH_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="voice_8h.html#a57eda19dd187b4ba46fcd121c992f3b9">fluid_voice_optimize_sample</a> (<a class="el" href="struct__fluid__sample__t.html">fluid_sample_t</a> *s)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the peak volume of a sample for voice off optimization.  <a href="#a57eda19dd187b4ba46fcd121c992f3b9"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Synthesis voice manipulation functions. </p>
<p>The interface to the synthesizer's voices. Examples on using them can be found in fluid_defsfont.c. Most of these functions should only be called from within synthesis context, such as the SoundFont loader's noteon method. </p>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="aac296fe3c3d6930261b9ead8afe4db2b"></a><!-- doxytag: member="voice.h::fluid_voice_add_mod" ref="aac296fe3c3d6930261b9ead8afe4db2b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b">fluid_voice_add_mod</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enum used with <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b" title="Enum used with fluid_voice_add_mod() to specify how to handle duplicate modulators.">fluid_voice_add_mod()</a> to specify how to handle duplicate modulators. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="aac296fe3c3d6930261b9ead8afe4db2ba0fe2e3c967922afa7c61990a4a5d01e4"></a><!-- doxytag: member="FLUID_VOICE_OVERWRITE" ref="aac296fe3c3d6930261b9ead8afe4db2ba0fe2e3c967922afa7c61990a4a5d01e4" args="" -->FLUID_VOICE_OVERWRITE</em>&nbsp;</td><td>
<p>Overwrite any existing matching modulator. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="aac296fe3c3d6930261b9ead8afe4db2baed44612d36459a1254b7ab6f34576a72"></a><!-- doxytag: member="FLUID_VOICE_ADD" ref="aac296fe3c3d6930261b9ead8afe4db2baed44612d36459a1254b7ab6f34576a72" args="" -->FLUID_VOICE_ADD</em>&nbsp;</td><td>
<p>Add (sum) modulator amounts. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="aac296fe3c3d6930261b9ead8afe4db2bab6a4717eb5a5f1adc30f89843a0bac4d"></a><!-- doxytag: member="FLUID_VOICE_DEFAULT" ref="aac296fe3c3d6930261b9ead8afe4db2bab6a4717eb5a5f1adc30f89843a0bac4d" args="" -->FLUID_VOICE_DEFAULT</em>&nbsp;</td><td>
<p>For default modulators only, no need to check for duplicates. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a4d62972ae304910f87e7d63e5470c813"></a><!-- doxytag: member="voice.h::fluid_voice_update_param" ref="a4d62972ae304910f87e7d63e5470c813" args="(fluid_voice_t *voice, int gen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API void fluid_voice_update_param </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>gen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Update all the synthesis parameters, which depend on generator <em>gen</em>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>gen</em>&nbsp;</td><td>Generator id (<a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4" title="Generator (effect) numbers (Soundfont 2.01 specifications section 8.1.3).">fluid_gen_type</a>)</td></tr>
  </table>
  </dd>
</dl>
<p>This is only necessary after changing a generator of an already operating voice. Most applications will not need this function. </p>

<p>References <a class="el" href="voice_8h.html#a4d62972ae304910f87e7d63e5470c813">fluid_voice_update_param()</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a2db65ad593aeff4e814f9a7b7324c0df">GEN_ATTENUATION</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a20dc580d6c53d30eb97efe3e910793b6">GEN_CHORUSSEND</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a5ffa8b961965bad3ec420e049e399c33">GEN_COARSETUNE</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a4795d4f36d830b51ba20af142cd17625">GEN_ENDADDRCOARSEOFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a5728b1022388e8e5218383c5f72cf087">GEN_ENDADDROFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ae57660306a59b9547798d52ce90bb4bb">GEN_ENDLOOPADDRCOARSEOFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a989927f815f1be4e32603719f99b6169">GEN_ENDLOOPADDROFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ae43e689b0b6349a676d26ea3096ed8d2">GEN_FILTERFC</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a587a7ca42e99238fca39cdf42496af6e">GEN_FILTERQ</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a68229fec83f8d5d62246d98c6868320d">GEN_FINETUNE</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4acb52265c898014662ec34a0bc5e71aab">GEN_KEYNUM</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a6f26ca6855cfb526ff0d550a98a1e07a">GEN_KEYTOMODENVDECAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ada2d2d053e33b9b54870bc7b6b18c4c3">GEN_KEYTOMODENVHOLD</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a72ec6209fab9decf6ed9cb5283cdc019">GEN_KEYTOVOLENVDECAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4abb0287401874a3e223f9a79b50c29e6a">GEN_KEYTOVOLENVHOLD</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a9ed1b5c95bd9c461558bbf98eb75157d">GEN_MODENVATTACK</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a95141e243fd2cfd056af89116038bd22">GEN_MODENVDECAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a1dbd9220ed3cdf594dbcc51f2edb888c">GEN_MODENVDELAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a65a52aafce25d202e01ace9c8f170a58">GEN_MODENVHOLD</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ad7594c8e4d03e62f7bd5a8770fc6e3d2">GEN_MODENVRELEASE</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4aa8216db47eb4508e8f810da36a3e3199">GEN_MODENVSUSTAIN</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a0c51d005b15718a7c7e84addd51073c8">GEN_MODENVTOFILTERFC</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ac767cd6d4156318428bcfc9b3a2a087c">GEN_MODENVTOPITCH</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a9ea8904d2decc65b0239bd11c9e97250">GEN_MODLFODELAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a66a660a7b0bebd6d6104dfd8e15b558d">GEN_MODLFOFREQ</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4add1b67c6e56efccf734e98da71816315">GEN_MODLFOTOFILTERFC</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ab8343028edd99ad0a23585760bdb1b78">GEN_MODLFOTOPITCH</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a488cdd7c1a9f15b82a3c317ce5951cc1">GEN_MODLFOTOVOL</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4af9dcf53c06eaf19d595685d7fac0f678">GEN_OVERRIDEROOTKEY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a5b713ab8c931017d98f11b5ed5a81fb1">GEN_PAN</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ab9a5716b5af1baf131a6225da6687ff0">GEN_PITCH</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a8de830acd064933f55e0c1615d1e7f78">GEN_REVERBSEND</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ac60e7883e31e05f35202eba013e33030">GEN_STARTADDRCOARSEOFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a446337bebed34df88f998132a5a8492a">GEN_STARTADDROFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a1746f056035cc6e4ed07161a7259bbe6">GEN_STARTLOOPADDRCOARSEOFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a23d8f7a3906fa3d8385cea0e1d7119f3">GEN_STARTLOOPADDROFS</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ae94f0b3bf830e3363041e7c9e1d90095">GEN_VELOCITY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ae61bfcf61774784a5e9aeb9865996a0f">GEN_VIBLFODELAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ae06bcc982faadd741450780989cbd1b0">GEN_VIBLFOFREQ</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a99387606556a9024de640b4519f7e559">GEN_VIBLFOTOPITCH</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a8719daf5507805113f443c16d19b7d64">GEN_VOLENVATTACK</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a034ca3f2dc95233efbba099ef33d8e51">GEN_VOLENVDECAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4ac4ee056799e46d7877cfb4f244aa6922">GEN_VOLENVDELAY</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a948f8a99eba9400ab3d361ac49a831cb">GEN_VOLENVHOLD</a>, <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4aca3b587527e748ea7aabb2e3a28e70e7">GEN_VOLENVRELEASE</a>, and <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a0741e826d8acb00bde4810ec07c3bcd0">GEN_VOLENVSUSTAIN</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#a4d62972ae304910f87e7d63e5470c813">fluid_voice_update_param()</a>.</p>

</div>
</div>
<a class="anchor" id="ac11c3fc60306f620c9f7fe6966c00c61"></a><!-- doxytag: member="voice.h::fluid_voice_add_mod" ref="ac11c3fc60306f620c9f7fe6966c00c61" args="(fluid_voice_t *voice, fluid_mod_t *mod, int mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API void <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2b">fluid_voice_add_mod</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct__fluid__mod__t.html">fluid_mod_t</a> *&nbsp;</td>
          <td class="paramname"> <em>mod</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Adds a modulator to the voice. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mod</em>&nbsp;</td><td>Modulator info (copied) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>Determines how to handle an existing identical modulator <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2baed44612d36459a1254b7ab6f34576a72" title="Add (sum) modulator amounts.">FLUID_VOICE_ADD</a> to add (offset) the modulator amounts, <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2ba0fe2e3c967922afa7c61990a4a5d01e4" title="Overwrite any existing matching modulator.">FLUID_VOICE_OVERWRITE</a> to replace the modulator, <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2bab6a4717eb5a5f1adc30f89843a0bac4d" title="For default modulators only, no need to check for duplicates.">FLUID_VOICE_DEFAULT</a> when adding a default modulator - no duplicate should exist so don't check. </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="struct__fluid__mod__t.html#a89680a436126f578594c5981d6c4f2ad">_fluid_mod_t::amount</a>, <a class="el" href="struct__fluid__mod__t.html#adb71cc4a4b81c915f05c1b8d069e3056">_fluid_mod_t::flags1</a>, <a class="el" href="mod_8h.html#a4b2419150b2a167df7807d5020a6e996a61e4c4ad391548b2d12764644e6e8a45">FLUID_MOD_CC</a>, <a class="el" href="mod_8h.html#a160458b700d3e902cbbfd69e05e82617">fluid_mod_test_identity()</a>, <a class="el" href="mod_8h.html#a36d07f04a69f257b9a696b7a955b66c7">FLUID_NUM_MOD</a>, <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2baed44612d36459a1254b7ab6f34576a72">FLUID_VOICE_ADD</a>, <a class="el" href="voice_8h.html#aac296fe3c3d6930261b9ead8afe4db2ba0fe2e3c967922afa7c61990a4a5d01e4">FLUID_VOICE_OVERWRITE</a>, <a class="el" href="log_8h.html#aa341232c15addd9c336131984840ed9ea394460be1ec74fce15e1ff683606df0f">FLUID_WARN</a>, and <a class="el" href="struct__fluid__mod__t.html#a199e73690c3e5fdb0e073d05f8237196">_fluid_mod_t::src1</a>.</p>

</div>
</div>
<a class="anchor" id="aa72691425953a90635ddc32ad246528e"></a><!-- doxytag: member="voice.h::fluid_voice_gen_set" ref="aa72691425953a90635ddc32ad246528e" args="(fluid_voice_t *voice, int gen, float val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API void fluid_voice_gen_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the value of a generator. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>i</em>&nbsp;</td><td>Generator ID (<a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4" title="Generator (effect) numbers (Soundfont 2.01 specifications section 8.1.3).">fluid_gen_type</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Generator value </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="voice_8h.html#aa72691425953a90635ddc32ad246528e">fluid_voice_gen_set()</a>, and <a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4a5b654b7cb64659b6a48d39bf0b11bc06">GEN_SAMPLEMODE</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#aa72691425953a90635ddc32ad246528e">fluid_voice_gen_set()</a>.</p>

</div>
</div>
<a class="anchor" id="a61f7647152016a209706790e5a37b7dc"></a><!-- doxytag: member="voice.h::fluid_voice_gen_get" ref="a61f7647152016a209706790e5a37b7dc" args="(fluid_voice_t *voice, int gen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API float fluid_voice_gen_get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>gen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the value of a generator. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>gen</em>&nbsp;</td><td>Generator ID (<a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4" title="Generator (effect) numbers (Soundfont 2.01 specifications section 8.1.3).">fluid_gen_type</a>) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Current generator value </dd></dl>

<p>References <a class="el" href="voice_8h.html#a61f7647152016a209706790e5a37b7dc">fluid_voice_gen_get()</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#a61f7647152016a209706790e5a37b7dc">fluid_voice_gen_get()</a>.</p>

</div>
</div>
<a class="anchor" id="a7113dbb4a08d8097d4188658876749c5"></a><!-- doxytag: member="voice.h::fluid_voice_gen_incr" ref="a7113dbb4a08d8097d4188658876749c5" args="(fluid_voice_t *voice, int gen, float val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API void fluid_voice_gen_incr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Offset the value of a generator. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>i</em>&nbsp;</td><td>Generator ID (<a class="el" href="gen_8h.html#ad17a24ae3b25f3b8cc5762f818eef9b4" title="Generator (effect) numbers (Soundfont 2.01 specifications section 8.1.3).">fluid_gen_type</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Value to add to the existing value </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="voice_8h.html#a7113dbb4a08d8097d4188658876749c5">fluid_voice_gen_incr()</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#a7113dbb4a08d8097d4188658876749c5">fluid_voice_gen_incr()</a>.</p>

</div>
</div>
<a class="anchor" id="a2388ffa5047de96d37fdd0b8e988097a"></a><!-- doxytag: member="voice.h::fluid_voice_get_id" ref="a2388ffa5047de96d37fdd0b8e988097a" args="(fluid_voice_t *voice)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API unsigned int fluid_voice_get_id </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the unique ID of the noteon-event. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Note on unique ID</dd></dl>
<p>A SoundFont loader may store the voice processes it has created for real-time control during the operation of a voice (for example: parameter changes in SoundFont editor). The synth uses a pool of voices, which are 'recycled' and never deallocated.</p>
<p>Before modifying an existing voice, check</p>
<ul>
<li>that its state is still 'playing'</li>
<li>that the ID is still the same</li>
</ul>
<p>Otherwise the voice has finished playing. </p>

<p>References <a class="el" href="voice_8h.html#a2388ffa5047de96d37fdd0b8e988097a">fluid_voice_get_id()</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#a2388ffa5047de96d37fdd0b8e988097a">fluid_voice_get_id()</a>.</p>

</div>
</div>
<a class="anchor" id="ac2257338d31a1a8456a219e616bdc109"></a><!-- doxytag: member="voice.h::fluid_voice_is_playing" ref="ac2257338d31a1a8456a219e616bdc109" args="(fluid_voice_t *voice)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API int fluid_voice_is_playing </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="types_8h.html#a5123ae5ef2d7806475267380c33604c3">fluid_voice_t</a> *&nbsp;</td>
          <td class="paramname"> <em>voice</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a voice is still playing. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>voice</em>&nbsp;</td><td>Voice instance </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if playing, FALSE otherwise </dd></dl>

<p>References <a class="el" href="voice_8h.html#ac2257338d31a1a8456a219e616bdc109">fluid_voice_is_playing()</a>.</p>

<p>Referenced by <a class="el" href="synth_8h.html#a585a63f3a25b9df17b82ae87f2d38cfc">delete_fluid_synth()</a>, and <a class="el" href="voice_8h.html#ac2257338d31a1a8456a219e616bdc109">fluid_voice_is_playing()</a>.</p>

</div>
</div>
<a class="anchor" id="a57eda19dd187b4ba46fcd121c992f3b9"></a><!-- doxytag: member="voice.h::fluid_voice_optimize_sample" ref="a57eda19dd187b4ba46fcd121c992f3b9" args="(fluid_sample_t *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">FLUIDSYNTH_API int fluid_voice_optimize_sample </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__fluid__sample__t.html">fluid_sample_t</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calculate the peak volume of a sample for voice off optimization. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>Sample to optimize </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> on success, <a class="el" href="misc_8h.html#a90e8bdbc5a507bbfa5c45bac85a63a61" title="Value that indicates failure, used by most libfluidsynth functions.">FLUID_FAILED</a> otherwise</dd></dl>
<p>If the peak volume during the loop is known, then the voice can be released earlier during the release phase. Otherwise, the voice will operate (inaudibly), until the envelope is at the nominal turnoff point. So it's a good idea to call <a class="el" href="voice_8h.html#a57eda19dd187b4ba46fcd121c992f3b9" title="Calculate the peak volume of a sample for voice off optimization.">fluid_voice_optimize_sample()</a> on each sample once. </p>

<p>References <a class="el" href="struct__fluid__sample__t.html#a91eee4970ca353df88665c0c3119e841">_fluid_sample_t::amplitude_that_reaches_noise_floor</a>, <a class="el" href="struct__fluid__sample__t.html#ac054e203acd07ad158256e343f1fd0a5">_fluid_sample_t::amplitude_that_reaches_noise_floor_is_valid</a>, <a class="el" href="struct__fluid__sample__t.html#a8c7262f51500369fd1a3e5306b458d55">_fluid_sample_t::data</a>, <a class="el" href="misc_8h.html#ae4efb1c3ce0d550c922504adfb0fb886">FLUID_OK</a>, <a class="el" href="voice_8h.html#a57eda19dd187b4ba46fcd121c992f3b9">fluid_voice_optimize_sample()</a>, <a class="el" href="struct__fluid__sample__t.html#a3baa4ca199a55b77c2692d9d3211e0d0">_fluid_sample_t::loopend</a>, <a class="el" href="struct__fluid__sample__t.html#a708e728c1dd67bb62a70e4edd7fc1f1c">_fluid_sample_t::loopstart</a>, and <a class="el" href="struct__fluid__sample__t.html#ad95a25c77565b132e686cc3f14687221">_fluid_sample_t::valid</a>.</p>

<p>Referenced by <a class="el" href="voice_8h.html#a57eda19dd187b4ba46fcd121c992f3b9">fluid_voice_optimize_sample()</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Oct 12 2010 for libfluidsynth by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>