3952 lines
321 KiB
HTML
3952 lines
321 KiB
HTML
<html>
|
|
<head>
|
|
<title>Plug-in API Reference | DSP</title>
|
|
<link rel="stylesheet" href="style/docs.css">
|
|
<link rel="stylesheet" href="style/code_highlight.css">
|
|
<script type="text/javascript" src="scripts/language-selector.js"></script></head>
|
|
<body>
|
|
<div class="docs-body">
|
|
<div class="manual-toc">
|
|
<p>FMOD Engine User Manual 2.03</p>
|
|
<ul>
|
|
<li><a href="welcome.html">Welcome to the FMOD Engine</a></li>
|
|
<li><a href="core-api-concepts.html">Core API Key Concepts</a></li>
|
|
<li><a href="running-the-core-api.html">Core API Getting Started</a></li>
|
|
<li><a href="loading-and-playing-sounds-in-the-core-api.html">Core API Loading and Playing Sounds</a></li>
|
|
<li><a href="spatializing-sounds-in-the-core-api.html">Core API Spatializing Sounds</a></li>
|
|
<li><a href="mixing-and-routing-in-the-core-api.html">Core API Mixing and Routing</a></li>
|
|
<li><a href="using-dsp-effects-in-the-core-api.html">Core API Using DSP Effects</a></li>
|
|
<li><a href="effects-reference.html">Core API Effect Reference</a></li>
|
|
<li><a href="managing-resources-in-the-core-api.html">Core API Managing Resources</a></li>
|
|
<li><a href="advanced-core-api-topics.html">Core API Advanced Topics</a></li>
|
|
<li><a href="core-api.html">Core API Reference</a></li>
|
|
<li><a href="studio-api-getting-started.html">Studio API Getting Started</a></li>
|
|
<li><a href="studio-guide.html">Studio API Guide</a></li>
|
|
<li><a href="studio-api-3d-events.html">Studio API 3D Events</a></li>
|
|
<li><a href="studio-api-threads.html">Studio API Threads</a></li>
|
|
<li><a href="studio-api.html">Studio API Reference</a></li>
|
|
<li><a href="platforms.html">Platform Details</a></li>
|
|
<li><a href="dsp-plugin-api-guide.html">Plug-in DSP API Guide</a></li>
|
|
<li class="manual-current-chapter manual-inactive-chapter"><a href="plugin-api.html">Plug-in API Reference</a><ul class="subchapters"><li><a href="plugin-api-codec.html">Codec</a></li><li class="manual-current-chapter manual-active-chapter"><a href="plugin-api-dsp.html">DSP</a></li><li><a href="plugin-api-output.html">Output</a></li></ul></li>
|
|
<li><a href="fsbank-api.html">FSBank API Reference</a></li>
|
|
<li><a href="troubleshooting.html">Troubleshooting</a></li>
|
|
<li><a href="glossary.html">Glossary</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="manual-content api">
|
|
<h1>19. Plug-in API Reference | DSP</h1>
|
|
<p>An interface that manages <a href="glossary.html#dsp">DSP</a> plug-ins.</p>
|
|
<p>For more information on creating and using DSP plug-ins, please refer to the <a href="dsp-plugin-api-guide.html">Plug-in DSP API Guide</a>.</p>
|
|
<p><strong>System:</strong></p>
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_register_callback" title="System level DSP type registration callback.">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</a> System level DSP type registration callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_deregister_callback" title="System level DSP type deregister callback.">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</a> System level <a href="glossary.html#dsp">DSP</a> type deregister callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_mix_callback" title="System level DSP type mix callback.">FMOD_DSP_SYSTEM_MIX_CALLBACK</a> System level DSP type mix callback.</span></li>
|
|
</ul>
|
|
<p><strong>Parameter API:</strong></p>
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type" title="Data parameter types.">FMOD_DSP_PARAMETER_DATA_TYPE</a> Data parameter types.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type" title="DSP parameter types.">FMOD_DSP_PARAMETER_TYPE</a> <a href="glossary.html#dsp">DSP</a> parameter types.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_3dattributes" title="3D attributes data structure.">FMOD_DSP_PARAMETER_3DATTRIBUTES</a> 3D attributes data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_3dattributes_multi" title="3D attributes data structure for multiple listeners.">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</a> 3D attributes data structure for multiple listeners.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_attenuation_range" title="Attenuation range parameter data structure.">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</a> Attenuation range parameter data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc" title="Base structure for DSP parameter descriptions.">FMOD_DSP_PARAMETER_DESC</a> Base structure for <a href="glossary.html#dsp">DSP</a> parameter descriptions.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_bool" title="Boolean parameter description.">FMOD_DSP_PARAMETER_DESC_BOOL</a> Boolean parameter description.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data" title="Data parameter description.">FMOD_DSP_PARAMETER_DESC_DATA</a> Data parameter description.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_float" title="Float parameter description.">FMOD_DSP_PARAMETER_DESC_FLOAT</a> Float parameter description.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_int" title="Integer parameter description.">FMOD_DSP_PARAMETER_DESC_INT</a> Integer parameter description.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_fft" title="FFT parameter data structure.">FMOD_DSP_PARAMETER_FFT</a> FFT parameter data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_dynamic_response" title="Dynamic response data structure.">FMOD_DSP_PARAMETER_DYNAMIC_RESPONSE</a> Dynamic response data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping" title="Structure to define a mapping for a DSP unit's float parameter.">FMOD_DSP_PARAMETER_FLOAT_MAPPING</a> Structure to define a mapping for a <a href="glossary.html#dsp">DSP unit</a>'s float parameter.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_piecewise_linear" title="Structure to define a piecewise linear mapping.">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</a> Structure to define a piecewise linear mapping.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_type" title="DSP float parameter mappings. These determine how values are mapped across dials and automation curves.">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</a> <a href="glossary.html#dsp">DSP</a> float parameter mappings. These determine how values are mapped across dials and automation curves.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_overallgain" title="Overall gain parameter data structure.">FMOD_DSP_PARAMETER_OVERALLGAIN</a> Overall gain parameter data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_sidechain" title="Side chain parameter data structure.">FMOD_DSP_PARAMETER_SIDECHAIN</a> Side chain parameter data structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_finite_length" title="Length data structure.">FMOD_DSP_PARAMETER_FINITE_LENGTH</a> Length data structure.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_bool_callback" title="Get boolean parameter callback.">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a> Get boolean parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_data_callback" title="Get data parameter callback.">FMOD_DSP_GETPARAM_DATA_CALLBACK</a> Get data parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_float_callback" title="Get float parameter callback.">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a> Get float parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_int_callback" title="Get integer parameter callback.">FMOD_DSP_GETPARAM_INT_CALLBACK</a> Get integer parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getuserdata_func" title="Function to get the user data attached to this DSP.">FMOD_DSP_GETUSERDATA_FUNC</a> Function to get the user data attached to this DSP.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_bool_callback" title="Set boolean parameter callback.">FMOD_DSP_SETPARAM_BOOL_CALLBACK</a> Set boolean parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_data_callback" title="Set data parameter callback.">FMOD_DSP_SETPARAM_DATA_CALLBACK</a> Set data parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_float_callback" title="Set float parameter callback.">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</a> Set float parameter callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_int_callback" title="Set integer parameter callback.">FMOD_DSP_SETPARAM_INT_CALLBACK</a> Set integer parameter callback.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_valuestr_length" title="Length in bytes of the buffer pointed to by the valuestr argument of FMOD_DSP_GETPARAM_XXXX_CALLBACK functions.">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a> Length in bytes of the buffer pointed to by the valuestr argument of FMOD_DSP_GETPARAM_XXXX_CALLBACK functions.</span></li>
|
|
</ul>
|
|
<p><strong>General:</strong></p>
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_complex" title="Complex number structure.">FMOD_COMPLEX</a> Complex number structure.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_buffer_array" title="Structure for input and output buffers.">FMOD_DSP_BUFFER_ARRAY</a> Structure for input and output buffers.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description" title="DSP description.">FMOD_DSP_DESCRIPTION</a> <a href="glossary.html#dsp">DSP</a> description.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_metering_info" title="DSP metering info.">FMOD_DSP_METERING_INFO</a> <a href="glossary.html#dsp">DSP</a> metering info.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state" title="DSP plug-in structure that is passed into each callback.">FMOD_DSP_STATE</a> <a href="glossary.html#dsp">DSP</a> plug-in structure that is passed into each callback.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_surround_flags" title="Flags for the FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC function.">FMOD_DSP_PAN_SURROUND_FLAGS</a> Flags for the FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC function.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_operation" title="Process operation type.">FMOD_DSP_PROCESS_OPERATION</a> Process operation type.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_create_callback" title="DSP create callback.">FMOD_DSP_CREATE_CALLBACK</a> <code>DSP</code> create callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback" title="Process callback.">FMOD_DSP_PROCESS_CALLBACK</a> Process callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback" title="DSP read callback.">FMOD_DSP_READ_CALLBACK</a> <a href="glossary.html#dsp">DSP</a> read callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_release_callback" title="DSP release callback.">FMOD_DSP_RELEASE_CALLBACK</a> <a href="glossary.html#dsp">DSP</a> release callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_reset_callback" title="DSP reset callback.">FMOD_DSP_RESET_CALLBACK</a> <a href="glossary.html#dsp">DSP</a> reset callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setposition_callback" title="DSP set position callback.">FMOD_DSP_SETPOSITION_CALLBACK</a> <a href="glossary.html#dsp">DSP</a> set position callback.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback" title="DSP 'should I process?' callback.">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a> <a href="glossary.html#dsp">DSP</a> 'should I process?' callback.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_dft_functions" title="Struct containing DFT functions to enable a plug-in to perform optimized time-frequency domain conversion.">FMOD_DSP_STATE_DFT_FUNCTIONS</a> Struct containing DFT functions to enable a plug-in to perform optimized time-frequency domain conversion.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions" title="Struct containing functions to give plug-in developers the ability to query system state and access system level functionality and helpers.">FMOD_DSP_STATE_FUNCTIONS</a> Struct containing functions to give plug-in developers the ability to query system state and access system level functionality and helpers.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_pan_functions" title="Struct containing panning helper functions for spatialization plug-ins.">FMOD_DSP_STATE_PAN_FUNCTIONS</a> Struct containing panning helper functions for spatialization plug-ins.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_plugin_sdk_version" title="The plug-in SDK version.">FMOD_PLUGIN_SDK_VERSION</a> The plug-in SDK version.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<p><strong>Functions:</strong></p>
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_alloc_func" title="Function to allocate memory using the FMOD memory system.">FMOD_DSP_ALLOC_FUNC</a> Function to allocate memory using the FMOD memory system.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_free_func" title="Function to free memory allocated with FMOD_DSP_ALLOC_FUNC.">FMOD_DSP_FREE_FUNC</a> Function to free memory allocated with <code>FMOD_DSP_ALLOC_FUNC</code>.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_realloc_func" title="Function to reallocate memory using the FMOD memory system.">FMOD_DSP_REALLOC_FUNC</a> Function to reallocate memory using the FMOD memory system.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_fftreal_func" title="Function for performing an FFT on a real signal.">FMOD_DSP_DFT_FFTREAL_FUNC</a> Function for performing an FFT on a real signal.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_ifftreal_func" title="Function for performing an inverse FFT to get a real signal.">FMOD_DSP_DFT_IFFTREAL_FUNC</a> Function for performing an inverse FFT to get a real signal.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getblocksize_func" title="Function to query the number of samples the mixer will process each mix.">FMOD_DSP_GETBLOCKSIZE_FUNC</a> Function to query the number of samples the <a href="glossary.html#mixer">mixer</a> will process each mix.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getclock_func" title="Function to get the clock of the current DSP, as well as the subset of the input buffer that contains the signal.">FMOD_DSP_GETCLOCK_FUNC</a> Function to get the clock of the current DSP, as well as the subset of the input buffer that contains the signal.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getlistenerattributes_func" title="Callback for getting the absolute listener attributes set via the API.">FMOD_DSP_GETLISTENERATTRIBUTES_FUNC</a> Callback for getting the absolute listener attributes set via the API.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getsamplerate_func" title="Function to query the system sample rate.">FMOD_DSP_GETSAMPLERATE_FUNC</a> Function to query the system sample rate.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getspeakermode_func" title="Function to query the system speaker modes.">FMOD_DSP_GETSPEAKERMODE_FUNC</a> Function to query the system speaker modes.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_log_func" title="Function to write to the FMOD logging system.">FMOD_DSP_LOG_FUNC</a> Function to write to the FMOD logging system.</span></li>
|
|
</ul>
|
|
<hr />
|
|
<ul>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_getrolloffgain_func" title="Function to calculate distance attenuation.">FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC</a> Function to calculate distance attenuation.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_summonomatrix_func" title="Function to calculate a mix matrix that downmixes the source speaker mode to mono.">FMOD_DSP_PAN_SUMMONOMATRIX_FUNC</a> Function to calculate a mix matrix that downmixes the source speaker mode to mono.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumstereomatrix_func" title="Function to calculate a mix matrix that downmixes from the source speaker mode to stereo.">FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC</a> Function to calculate a mix matrix that downmixes from the source speaker mode to stereo.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumsurroundmatrix_func" title="Function to calculate a mix matrix that upmixes or downmixes from the source speaker mode to the target speaker mode.">FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC</a> Function to calculate a mix matrix that upmixes or downmixes from the source speaker mode to the target speaker mode.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_summonotosurroundmatrix_func" title="Function to calculate a mix matrix that upmixes from mono to the target speaker mode.">FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</a> Function to calculate a mix matrix that upmixes from mono to the target speaker mode.</span></li>
|
|
<li><span><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumstereotosurroundmatrix_func" title="Function to calculate a mix matrix that upmixes from stereo to the target speaker mode.">FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</a> Function to calculate a mix matrix that upmixes from stereo to the target speaker mode.</span></li>
|
|
</ul>
|
|
<h2 api="struct" id="fmod_complex"><a href="#fmod_complex">FMOD_COMPLEX</a></h2>
|
|
<p>Complex number structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_COMPLEX</span> <span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">real</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">imag</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_COMPLEX</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">COMPLEX</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">real</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">imag</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_COMPLEX</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">real</span><span class="p">,</span>
|
|
<span class="nx">imag</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_complex_real">real</dt>
|
|
<dd>Real component</dd>
|
|
<dt id="fmod_complex_imag">imag</dt>
|
|
<dd>Imaginary component</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_dft_functions">FMOD_DSP_STATE_DFT_FUNCTIONS</a></p>
|
|
<h2 api="callback" id="fmod_dsp_alloc_func"><a href="#fmod_dsp_alloc_func">FMOD_DSP_ALLOC_FUNC</a></h2>
|
|
<p>Function to allocate memory using the FMOD memory system.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="kt">void</span> <span class="o">*</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_ALLOC_FUNC</span><span class="p">(</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">FMOD_MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">IntPtr</span> <span class="nf">DSP_ALLOC_FUNC</span><span class="p">(</span>
|
|
<span class="kt">uint</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>size</dt>
|
|
<dd>
|
|
<p>Allocation size.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Bytes</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>type</dt>
|
|
<dd>Memory allocation type. (<a class="apilink" href="core-api-common.html#fmod_memory_type">FMOD_MEMORY_TYPE</a>)</dd>
|
|
<dt>sourcestr</dt>
|
|
<dd>String with the FMOD source code filename and line number in it. Only valid in logging versions of FMOD. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'sourcestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper sourceStr = new FMOD.StringWrapper(sourcestr);</code></p>
|
|
</div>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This function is a wrapper used by the system level allocator and can be called from any DSP instance. Returns a pointer to a region of memory with the requested size, or 0 on a failure.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_realloc_func">FMOD_DSP_REALLOC_FUNC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_free_func">FMOD_DSP_FREE_FUNC</a></p>
|
|
<h2 api="struct" id="fmod_dsp_buffer_array"><a href="#fmod_dsp_buffer_array">FMOD_DSP_BUFFER_ARRAY</a></h2>
|
|
<p>Structure for input and output buffers.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_BUFFER_ARRAY</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numbuffers</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="o">*</span><span class="n">buffernumchannels</span><span class="p">;</span>
|
|
<span class="n">FMOD_CHANNELMASK</span> <span class="o">*</span><span class="n">bufferchannelmask</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="o">**</span><span class="n">buffers</span><span class="p">;</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">speakermode</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_BUFFER_ARRAY</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_BUFFER_ARRAY</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numbuffers</span><span class="p">;</span>
|
|
<span class="kt">int</span><span class="p">[]</span> <span class="n">buffernumchannels</span><span class="p">;</span>
|
|
<span class="n">CHANNELMASK</span><span class="p">[]</span> <span class="n">bufferchannelmask</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span><span class="p">[]</span> <span class="n">buffers</span><span class="p">;</span>
|
|
<span class="n">SPEAKERMODE</span> <span class="n">speakermode</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">buffer</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt id="fmod_dsp_buffer_array_numbuffers">numbuffers</dt>
|
|
<dd>Array size of <code>buffers</code>.</dd>
|
|
<dt id="fmod_dsp_buffer_array_buffernumchannels">buffernumchannels</dt>
|
|
<dd>Array of number of channels for each buffer.</dd>
|
|
<dt id="fmod_dsp_buffer_array_bufferchannelmask">bufferchannelmask</dt>
|
|
<dd>Deprecated. (<a class="apilink" href="core-api-common.html#fmod_channelmask">FMOD_CHANNELMASK</a>)</dd>
|
|
<dt id="fmod_dsp_buffer_array_buffers">buffers</dt>
|
|
<dd>Array of buffers.</dd>
|
|
<dt id="fmod_dsp_buffer_array_speakermode">speakermode</dt>
|
|
<dd>Speaker mode for all buffers in the array. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt id="fmod_dsp_buffer_array_numchannels">numchannels <span><a class="token" href="glossary.html#documentation-conventions" title="C#only">C#</a></span></dt>
|
|
<dd>C# helper property to get number of channels in the buffer.</dd>
|
|
<dt id="fmod_dsp_buffer_array_buffer">buffer <span><a class="token" href="glossary.html#documentation-conventions" title="C#only">C#</a></span></dt>
|
|
<dd>C# helper property to retrieve memory from the <code>buffers</code> property.</dd>
|
|
</dl>
|
|
<p>This structure is used for reading and writing sample data in the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</p>
|
|
<p><strong>Example:</strong></p>
|
|
<p>The following example demonstrates how to traverse a buffer array to generate a square wave:</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="kt">int</span> <span class="n">numchannels</span> <span class="o">=</span> <span class="n">outbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffernumchannels</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">output</span> <span class="o">=</span> <span class="n">outbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffers</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
|
|
|
|
<span class="kt">bool</span> <span class="n">pos</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">step</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">sample</span> <span class="o"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">channel</span> <span class="o"><</span> <span class="n">numchannels</span><span class="p">;</span> <span class="n">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="n">numchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">=</span> <span class="n">pos</span> <span class="o">?</span> <span class="mf">1.0f</span> <span class="o">:</span> <span class="o">-</span><span class="mf">1.0f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">step</span><span class="o">++</span> <span class="o">%</span> <span class="mi">32</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">pos</span> <span class="o">=</span> <span class="o">!</span><span class="n">pos</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="kt">int</span> <span class="n">numchannels</span> <span class="p">=</span> <span class="n">outbufferarray</span><span class="p">.</span><span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">output</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">];</span>
|
|
|
|
<span class="kt">bool</span> <span class="n">pos</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">step</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">sample</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">sample</span> <span class="p"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">channel</span> <span class="p"><</span> <span class="n">numchannels</span><span class="p">;</span> <span class="n">channel</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">numchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">=</span> <span class="n">pos</span> <span class="p">?</span> <span class="m">1.0f</span> <span class="p">:</span> <span class="p">-</span><span class="m">1.0f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">step</span><span class="p">++</span> <span class="p">%</span> <span class="m">32</span> <span class="p">==</span> <span class="m">0</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">pos</span> <span class="p">=</span> <span class="p">!</span><span class="n">pos</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">outbufferarray</span><span class="p">.</span><span class="n">buffer</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_create_callback"><a href="#fmod_dsp_create_callback">FMOD_DSP_CREATE_CALLBACK</a></h2>
|
|
<p><a class="apilink" href="core-api-dsp.html">DSP</a> create callback.</p>
|
|
<p>This callback is called when you create a <a href="glossary.html#dsp">DSP unit</a> instance of this type.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_CREATE_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_CREATE_CALLBACK</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_CREATE_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-system.html#system_createdspbytype">System::createDSPByType</a>, or <a class="apilink" href="core-api-system.html#system_createdspbyplugin">System::createDSPByPlugin</a>.</li>
|
|
</ul>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This callback is typically where memory is allocated and DSP specific variables are initialized.</p>
|
|
<p>If a user re-uses a DSP unit instead of releasing it and creating a new one, it may be useful to implement <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_reset_callback">FMOD_DSP_RESET_CALLBACK</a> to reset any variables or buffers when the user calls <a class="apilink" href="core-api-dsp.html#dsp_reset">DSP::reset</a>.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-system.html#system_createdspbytype">System::createDSPByType</a>, <a class="apilink" href="core-api-system.html#system_createdspbyplugin">System::createDSPByPlugin</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_reset_callback">FMOD_DSP_RESET_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_release_callback">FMOD_DSP_RELEASE_CALLBACK</a></p>
|
|
<h2 api="struct" id="fmod_dsp_description"><a href="#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> description.</p>
|
|
<p>This description structure allows you to define all functionality required for a DSP unit when writing a DSP plug-in.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_DESCRIPTION</span> <span class="p">{</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">pluginsdkversion</span><span class="p">;</span>
|
|
<span class="kt">char</span> <span class="n">name</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">version</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numinputbuffers</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numoutputbuffers</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_CREATE_CALLBACK</span> <span class="n">create</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_RELEASE_CALLBACK</span> <span class="n">release</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_RESET_CALLBACK</span> <span class="n">reset</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_READ_CALLBACK</span> <span class="n">read</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PROCESS_CALLBACK</span> <span class="n">process</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SETPOSITION_CALLBACK</span> <span class="n">setposition</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numparameters</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DESC</span> <span class="o">**</span><span class="n">paramdesc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</span> <span class="n">setparameterfloat</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SETPARAM_INT_CALLBACK</span> <span class="n">setparameterint</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SETPARAM_BOOL_CALLBACK</span> <span class="n">setparameterbool</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SETPARAM_DATA_CALLBACK</span> <span class="n">setparameterdata</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</span> <span class="n">getparameterfloat</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETPARAM_INT_CALLBACK</span> <span class="n">getparameterint</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETPARAM_BOOL_CALLBACK</span> <span class="n">getparameterbool</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETPARAM_DATA_CALLBACK</span> <span class="n">getparameterdata</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SHOULDIPROCESS_CALLBACK</span> <span class="n">shouldiprocess</span><span class="p">;</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">userdata</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</span> <span class="n">sys_register</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</span> <span class="n">sys_deregister</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_SYSTEM_MIX_CALLBACK</span> <span class="n">sys_mix</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_DESCRIPTION</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_DESCRIPTION</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">uint</span> <span class="n">pluginsdkversion</span><span class="p">;</span>
|
|
<span class="kt">char</span><span class="p">[]</span> <span class="n">name</span><span class="p">;</span>
|
|
<span class="kt">uint</span> <span class="n">version</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numinputbuffers</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numoutputbuffers</span><span class="p">;</span>
|
|
<span class="n">DSP_CREATE_CALLBACK</span> <span class="n">create</span><span class="p">;</span>
|
|
<span class="n">DSP_RELEASE_CALLBACK</span> <span class="n">release</span><span class="p">;</span>
|
|
<span class="n">DSP_RESET_CALLBACK</span> <span class="n">reset</span><span class="p">;</span>
|
|
<span class="n">DSP_READ_CALLBACK</span> <span class="n">read</span><span class="p">;</span>
|
|
<span class="n">DSP_PROCESS_CALLBACK</span> <span class="n">process</span><span class="p">;</span>
|
|
<span class="n">DSP_SETPOSITION_CALLBACK</span> <span class="n">setposition</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numparameters</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">paramdesc</span><span class="p">;</span>
|
|
<span class="n">DSP_SETPARAM_FLOAT_CALLBACK</span> <span class="n">setparameterfloat</span><span class="p">;</span>
|
|
<span class="n">DSP_SETPARAM_INT_CALLBACK</span> <span class="n">setparameterint</span><span class="p">;</span>
|
|
<span class="n">DSP_SETPARAM_BOOL_CALLBACK</span> <span class="n">setparameterbool</span><span class="p">;</span>
|
|
<span class="n">DSP_SETPARAM_DATA_CALLBACK</span> <span class="n">setparameterdata</span><span class="p">;</span>
|
|
<span class="n">DSP_GETPARAM_FLOAT_CALLBACK</span> <span class="n">getparameterfloat</span><span class="p">;</span>
|
|
<span class="n">DSP_GETPARAM_INT_CALLBACK</span> <span class="n">getparameterint</span><span class="p">;</span>
|
|
<span class="n">DSP_GETPARAM_BOOL_CALLBACK</span> <span class="n">getparameterbool</span><span class="p">;</span>
|
|
<span class="n">DSP_GETPARAM_DATA_CALLBACK</span> <span class="n">getparameterdata</span><span class="p">;</span>
|
|
<span class="n">DSP_SHOULDIPROCESS_CALLBACK</span> <span class="n">shouldiprocess</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">userdata</span><span class="p">;</span>
|
|
<span class="n">DSP_SYSTEM_REGISTER_CALLBACK</span> <span class="n">sys_register</span><span class="p">;</span>
|
|
<span class="n">DSP_SYSTEM_DEREGISTER_CALLBACK</span> <span class="n">sys_deregister</span><span class="p">;</span>
|
|
<span class="n">DSP_SYSTEM_MIX_CALLBACK</span> <span class="n">sys_mix</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_DESCRIPTION</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">pluginsdkversion</span><span class="p">,</span>
|
|
<span class="nx">name</span><span class="p">,</span>
|
|
<span class="nx">version</span><span class="p">,</span>
|
|
<span class="nx">numinputbuffers</span><span class="p">,</span>
|
|
<span class="nx">numoutputbuffers</span><span class="p">,</span>
|
|
<span class="nx">create</span><span class="p">,</span>
|
|
<span class="nx">release</span><span class="p">,</span>
|
|
<span class="nx">reset</span><span class="p">,</span>
|
|
<span class="nx">read</span><span class="p">,</span>
|
|
<span class="nx">process</span><span class="p">,</span>
|
|
<span class="nx">setposition</span><span class="p">,</span>
|
|
<span class="nx">numparameters</span><span class="p">,</span>
|
|
<span class="nx">paramdesc</span><span class="p">,</span>
|
|
<span class="nx">setparameterfloat</span><span class="p">,</span>
|
|
<span class="nx">setparameterint</span><span class="p">,</span>
|
|
<span class="nx">setparameterbool</span><span class="p">,</span>
|
|
<span class="nx">setparameterdata</span><span class="p">,</span>
|
|
<span class="nx">getparameterfloat</span><span class="p">,</span>
|
|
<span class="nx">getparameterint</span><span class="p">,</span>
|
|
<span class="nx">getparameterbool</span><span class="p">,</span>
|
|
<span class="nx">getparameterdata</span><span class="p">,</span>
|
|
<span class="nx">shouldiprocess</span><span class="p">,</span>
|
|
<span class="nx">userdata</span><span class="p">,</span>
|
|
<span class="nx">sys_register</span><span class="p">,</span>
|
|
<span class="nx">sys_deregister</span><span class="p">,</span>
|
|
<span class="nx">sys_mix</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_description_pluginsdkversion">pluginsdkversion</dt>
|
|
<dd>The plug-in SDK version this plug-in is built for. Set this to <a class="apilink" href="plugin-api-dsp.html#fmod_plugin_sdk_version">FMOD_PLUGIN_SDK_VERSION</a>.</dd>
|
|
<dt id="fmod_dsp_description_name">name <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>DSP name. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
<dt id="fmod_dsp_description_version">version <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Plug-in's version number.</dd>
|
|
<dt id="fmod_dsp_description_numinputbuffers">numinputbuffers</dt>
|
|
<dd>Number of input <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_buffer_array">FMOD_DSP_BUFFER_ARRAY</a>s to process. Use 0 for DSPs that only generate sound and 1 for <a href="glossary.html#effect">effects</a> that process incoming sound.</dd>
|
|
<dt id="fmod_dsp_description_numoutputbuffers">numoutputbuffers</dt>
|
|
<dd>Number of audio output <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_buffer_array">FMOD_DSP_BUFFER_ARRAY</a>s. Only one output buffer is currently supported.</dd>
|
|
<dt id="fmod_dsp_description_create">create <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to initialize any required resources when the unit is created. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_create_callback">FMOD_DSP_CREATE_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_release">release <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to perform any required cleanup just before the unit is freed. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_release_callback">FMOD_DSP_RELEASE_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_reset">reset <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to perform any required state resetting on the unit, such as history buffers for a filter to avoid clicks or artifacts. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_reset_callback">FMOD_DSP_RESET_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_read">read <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve audio data from the unit. An alternative to the <code>process</code> callback. Use in conjunction with <code>shouldiprocess</code> to determine whether <code>read</code> should continue to be called. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_process">process <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve audio data from the unit. Can be specified instead of the <code>read</code> callback if any channel format changes occur between input and output. This also replaces <code>shouldiprocess</code> and should return an error if the effect is to be bypassed. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_setposition">setposition <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to change the unit's internal position info without processing data, or to reset a cursor position internally if reading data from a certain source. This is called when <a class="apilink" href="core-api-channel.html#channel_setposition">Channel::setPosition</a> is called on a <a class="apilink" href="core-api-channel.html">Channel</a> created with <a class="apilink" href="core-api-system.html#system_playdsp">System::playDSP</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setposition_callback">FMOD_DSP_SETPOSITION_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_numparameters">numparameters <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Number of parameters in the paramdesc array. The user finds this with <a class="apilink" href="core-api-dsp.html#dsp_getnumparameters">DSP::getNumParameters</a></dd>
|
|
<dt id="fmod_dsp_description_paramdesc">paramdesc <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Pointer to an array of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a> defining the parameters used by this filter. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>)</dd>
|
|
<dt id="fmod_dsp_description_setparameterfloat">setparameterfloat <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to update a floating point parameter value on the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_float_callback">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_setparameterint">setparameterint <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to update an integer parameter value on the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_int_callback">FMOD_DSP_SETPARAM_INT_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_setparameterbool">setparameterbool <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to update a boolean parameter value on the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_bool_callback">FMOD_DSP_SETPARAM_BOOL_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_setparameterdata">setparameterdata <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to update a data parameter value on the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_data_callback">FMOD_DSP_SETPARAM_DATA_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_getparameterfloat">getparameterfloat <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve a floating point parameter value from the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_float_callback">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_getparameterint">getparameterint <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve an integer parameter value from the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_int_callback">FMOD_DSP_GETPARAM_INT_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_getparameterbool">getparameterbool <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve a boolean parameter value from the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_bool_callback">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_getparameterdata">getparameterdata <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to retrieve a data parameter value from the unit. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_data_callback">FMOD_DSP_GETPARAM_DATA_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_shouldiprocess">shouldiprocess <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to determine whether <code>read</code> should continue to be called. You can detect if inputs are idle and return <a class="apilink" href="core-api-common.html#fmod_ok">FMOD_OK</a> to process or any other error code to avoid processing the effect. Use a countdown timer to allow effect tails to process before idling. If <code>process</code> is used instead, then <code>read</code> and <code>shouldiprocess</code> are not necessary. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_userdata">userdata <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>User data stored by assignment to this property is shared by all newly created DSP instances constructed from this DSP description and can be accessed using <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getuserdata_func">FMOD_DSP_GETUSERDATA_FUNC</a>.</dd>
|
|
<dt id="fmod_dsp_description_sys_register">sys_register <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to perform any 'global'/per <a class="apilink" href="core-api-system.html">System</a> object initialization for the plug-in. This is called when a DSP plug-in is registered with <a class="apilink" href="core-api-system.html#system_registerdsp">System::registerDSP</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_register_callback">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_sys_deregister">sys_deregister <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to perform any 'global'/per <a class="apilink" href="core-api-system.html">System</a> object shutdown for the plug-in. This is called when a DSP plug-in is unloaded with <a class="apilink" href="core-api-system.html#system_unloadplugin">System::unloadPlugin</a> or during system shutdown with <a class="apilink" href="core-api-system.html#system_close">System::close</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_deregister_callback">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</a>)</dd>
|
|
<dt id="fmod_dsp_description_sys_mix">sys_mix <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Callback to perform any 'global'/per <a class="apilink" href="core-api-system.html">System</a> object update calls each mix for the plug-in. This is called when the mixer starts to execute or is just finishing executing. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_mix_callback">FMOD_DSP_SYSTEM_MIX_CALLBACK</a>)</dd>
|
|
</dl>
|
|
<p>There are 2 different ways to change a parameter in this architecture.</p>
|
|
<p>One is to use <a class="apilink" href="core-api-dsp.html#dsp_setparameterfloat">DSP::setParameterFloat</a> / <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a> / <a class="apilink" href="core-api-dsp.html#dsp_setparameterbool">DSP::setParameterBool</a> / <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>. This is platform independent and is dynamic, so new unknown plug-ins can have their parameters enumerated and used.</p>
|
|
<p>The other is to use <a class="apilink" href="core-api-dsp.html#dsp_showconfigdialog">DSP::showConfigDialog</a>. This is platform specific and requires a GUI, and will display a dialog box to configure the plug-in.</p>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>All function pointers assigned to callbacks must remain valid until the plug-in is unloaded with <a class="apilink" href="core-api-system.html#system_unloadplugin">System::unloadPlugin</a>.</p>
|
|
<p>The name is stored as a UTF8 string. You can assign the plug-in's name in like so:</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_DSP_DESCRIPTION</span> <span class="n">desc</span> <span class="o">=</span> <span class="p">{};</span>
|
|
<span class="n">strncpy</span><span class="p">(</span><span class="n">desc</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="s">"My DSP"</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">desc</span><span class="p">.</span><span class="n">name</span><span class="p">));</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="n">FMOD</span><span class="p">.</span><span class="n">DSP_DESCRIPTION</span> <span class="n">desc</span> <span class="p">=</span> <span class="k">new</span> <span class="n">FMOD</span><span class="p">.</span><span class="n">DSP_DESCRIPTION</span><span class="p">();</span>
|
|
<span class="n">desc</span><span class="p">.</span><span class="n">name</span> <span class="p">=</span> <span class="n">System</span><span class="p">.</span><span class="n">Text</span><span class="p">.</span><span class="n">Encoding</span><span class="p">.</span><span class="n">UTF8</span><span class="p">.</span><span class="n">GetBytes</span><span class="p">(</span><span class="s">"My DSP"</span><span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javaScript"><pre><span></span><span class="kd">var</span> <span class="nx">desc</span> <span class="o">=</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_DESCRIPTION</span><span class="p">();</span>
|
|
<span class="nx">desc</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="s2">"My DSP"</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterfloat">DSP::setParameterFloat</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterbool">DSP::setParameterBool</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_create_callback">FMOD_DSP_CREATE_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_release_callback">FMOD_DSP_RELEASE_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_reset_callback">FMOD_DSP_RESET_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setposition_callback">FMOD_DSP_SETPOSITION_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_float_callback">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_int_callback">FMOD_DSP_SETPARAM_INT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_bool_callback">FMOD_DSP_SETPARAM_BOOL_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_data_callback">FMOD_DSP_SETPARAM_DATA_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_float_callback">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_int_callback">FMOD_DSP_GETPARAM_INT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_bool_callback">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_data_callback">FMOD_DSP_GETPARAM_DATA_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_register_callback">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_deregister_callback">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_system_mix_callback">FMOD_DSP_SYSTEM_MIX_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_dft_fftreal_func"><a href="#fmod_dsp_dft_fftreal_func">FMOD_DSP_DFT_FFTREAL_FUNC</a></h2>
|
|
<p>Function for performing an FFT on a real signal.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_DFT_FFTREAL_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">float</span> <span class="o">*</span><span class="n">signal</span><span class="p">,</span>
|
|
<span class="n">FMOD_COMPLEX</span><span class="o">*</span> <span class="n">dft</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">float</span> <span class="o">*</span><span class="n">window</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">signalhop</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_DFT_FFTREAL_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">signal</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">dft</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">window</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">signalhop</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>size</dt>
|
|
<dd>
|
|
<p>The length of the signal frame.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>signal</dt>
|
|
<dd>
|
|
<p>Input signal frame to perform DFT on.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> PCM</li>
|
|
<li><span class="label">Range:</span> [-1.0, +1.0]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>dft <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>
|
|
<p>The output DFT result. (<a class="apilink" href="plugin-api-dsp.html#fmod_complex">FMOD_COMPLEX</a>)</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> <a class="apilink" href="plugin-api-dsp.html#fmod_complex">FMOD_COMPLEX</a></li>
|
|
</ul>
|
|
</dd>
|
|
<dt>window <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>Window buffer for smoothing input signal prior to analysis. Must be the same length as the input signal. Example window types can be found in <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_fft_window">FMOD_DSP_FFT_WINDOW</a>.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0.0, 1.0]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>signalhop <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>The number of samples between signal frames.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>Calling this function will append an <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_fft">FMOD_DSP_FFT</a> effect to the DSP's output if there isn't one already.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_ifftreal_func">FMOD_DSP_DFT_IFFTREAL_FUNC</a>, <a href="effects-reference.html#fft">FFT</a></p>
|
|
<h2 api="callback" id="fmod_dsp_dft_ifftreal_func"><a href="#fmod_dsp_dft_ifftreal_func">FMOD_DSP_DFT_IFFTREAL_FUNC</a></h2>
|
|
<p>Function for performing an inverse FFT to get a real signal.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_DFT_IFFTREAL_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="n">FMOD_COMPLEX</span> <span class="o">*</span><span class="n">dft</span><span class="p">,</span>
|
|
<span class="kt">float</span><span class="o">*</span> <span class="n">signal</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">float</span> <span class="o">*</span><span class="n">window</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">signalhop</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_DFT_IFFTREAL_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">dft</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">signal</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">window</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">signalhop</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>size</dt>
|
|
<dd>
|
|
<p>The length of the signal frame.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>dft</dt>
|
|
<dd>
|
|
<p>The previous input DFT result calculated from <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_fftreal_func">FMOD_DSP_DFT_FFTREAL_FUNC</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_complex">FMOD_COMPLEX</a>)</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> <a class="apilink" href="plugin-api-dsp.html#fmod_complex">FMOD_COMPLEX</a></li>
|
|
</ul>
|
|
</dd>
|
|
<dt>signal <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>
|
|
<p>Output signal to perform IFFT on.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> PCM</li>
|
|
<li><span class="label">Range:</span> [-1.0, +1.0]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>window <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>Window buffer for smoothing input signal prior to analysis. Must be the same length as the input signal. Example window types can be found in <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_fft_window">FMOD_DSP_FFT_WINDOW</a>.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0.0, 1.0]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>signalhop <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>The number of samples between signal frames.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>Calling this function will append an <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_fft">FMOD_DSP_FFT</a> effect to the DSP's output if there isn't one already.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_fftreal_func">FMOD_DSP_DFT_FFTREAL_FUNC</a></p>
|
|
<h2 api="callback" id="fmod_dsp_free_func"><a href="#fmod_dsp_free_func">FMOD_DSP_FREE_FUNC</a></h2>
|
|
<p>Function to free memory allocated with <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_alloc_func">FMOD_DSP_ALLOC_FUNC</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="kt">void</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_FREE_FUNC</span><span class="p">(</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">,</span>
|
|
<span class="n">FMOD_MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">IntPtr</span> <span class="nf">DSP_FREE_FUNC</span><span class="p">(</span>
|
|
<span class="n">IntPtr</span> <span class="n">ptr</span><span class="p">,</span>
|
|
<span class="n">MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>ptr</dt>
|
|
<dd>Pointer to memory location to free.</dd>
|
|
<dt>type</dt>
|
|
<dd>Memory allocation type. (<a class="apilink" href="core-api-common.html#fmod_memory_type">FMOD_MEMORY_TYPE</a>)</dd>
|
|
<dt>sourcestr</dt>
|
|
<dd>String with the FMOD source code filename and line number in it. Only valid in logging versions of FMOD. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'sourcestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper sourceStr = new FMOD.StringWrapper(sourcestr);</code></p>
|
|
</div>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This function is a wrapper used by the system level allocator and can be called from any DSP instance.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_alloc_func">FMOD_DSP_ALLOC_FUNC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_realloc_func">FMOD_DSP_REALLOC_FUNC</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getblocksize_func"><a href="#fmod_dsp_getblocksize_func">FMOD_DSP_GETBLOCKSIZE_FUNC</a></h2>
|
|
<p>Function to query the number of samples the <a href="glossary.html#mixer">mixer</a> will process each mix.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETBLOCKSIZE_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="o">*</span><span class="n">blocksize</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETBLOCKSIZE_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">uint</span> <span class="n">blocksize</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_GETBLOCKSIZE_FUNC</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">blocksize</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>blocksize <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>
|
|
<p>Maximum number of decompressed PCM samples the DSP unit can handle.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>DSPs are requested to process blocks of varying length up to this size.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-system.html#system_getdspbuffersize">System::getDSPBufferSize</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getclock_func"><a href="#fmod_dsp_getclock_func">FMOD_DSP_GETCLOCK_FUNC</a></h2>
|
|
<p>Function to get the clock of the current DSP, as well as the subset of the input buffer that contains the signal.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETCLOCK_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">long</span> <span class="kt">long</span> <span class="o">*</span><span class="n">clock</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="o">*</span><span class="n">offset</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="o">*</span><span class="n">length</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETCLOCK_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">out</span> <span class="kt">ulong</span> <span class="n">clock</span><span class="p">,</span>
|
|
<span class="k">out</span> <span class="kt">uint</span> <span class="n">offset</span><span class="p">,</span>
|
|
<span class="k">out</span> <span class="kt">uint</span> <span class="n">length</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>clock <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p><a href="glossary.html#dsp-clock">DSP clock</a> value for the <a class="apilink" href="core-api-dsp.html">DSP</a> node.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>offset <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>The start offset of the audio data inside the input buffer.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>length <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>The length of the audio data inside the input buffer.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>FMOD mix blocks are block aligned, so when a delay such as <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setdelay">ChannelControl::setDelay</a> is used the audio may start and end part way through the buffer. The offset is where the audio starts inside the buffer, and the length is how long after the offset the audio continues for.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getlistenerattributes_func"><a href="#fmod_dsp_getlistenerattributes_func">FMOD_DSP_GETLISTENERATTRIBUTES_FUNC</a></h2>
|
|
<p>Callback for getting the absolute listener attributes set via the API.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETLISTENERATTRIBUTES_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="o">*</span><span class="n">numlisteners</span><span class="p">,</span>
|
|
<span class="n">FMOD_3D_ATTRIBUTES</span> <span class="o">*</span><span class="n">attributes</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETLISTENERATTRIBUTES_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="n">numlisteners</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">attributes</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>numlisteners <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>The number of listeners.</dd>
|
|
<dt>attributes <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>An array of 3D attributes corresponding to each listener. (<a class="apilink" href="core-api-common.html#fmod_3d_attributes">FMOD_3D_ATTRIBUTES</a>)</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>Returned as left-handed coordinates.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getparam_bool_callback"><a href="#fmod_dsp_getparam_bool_callback">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a></h2>
|
|
<p>Get boolean parameter callback.</p>
|
|
<p>This callback is called when the user wants to get a boolean parameter value from a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETPARAM_BOOL_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="o">*</span><span class="n">value</span><span class="p">,</span>
|
|
<span class="kt">char</span> <span class="o">*</span><span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETPARAM_BOOL_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">bool</span> <span class="k">value</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_GETPARAM_BOOL_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span><span class="p">,</span>
|
|
<span class="nx">valuestr</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP Plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>
|
|
<p>Parameter value.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>valuestr <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>String value of the parameter. Can be used to display an alternate representation of the number. For example "ON" or "OFF" instead of 1.0 and 0.0. The length of the buffer being passed in is always a maximum of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_valuestr_length">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a> bytes. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_getparameterbool">DSP::getParameterBool</a>. Parameter getters are not thread safe and you will need to handle synchronization between parameter getters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'valuestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper valueStr = new FMOD.StringWrapper(valuestr);</code></p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_bool_callback">FMOD_DSP_SETPARAM_BOOL_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getparam_data_callback"><a href="#fmod_dsp_getparam_data_callback">FMOD_DSP_GETPARAM_DATA_CALLBACK</a></h2>
|
|
<p>Get data parameter callback.</p>
|
|
<p>This callback is called when the user wants to get a data parameter value from a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETPARAM_DATA_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">void</span> <span class="o">**</span><span class="n">data</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="o">*</span><span class="n">length</span><span class="p">,</span>
|
|
<span class="kt">char</span> <span class="o">*</span><span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETPARAM_DATA_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">data</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">uint</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_GETPARAM_DATA_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">data</span><span class="p">,</span>
|
|
<span class="nx">length</span><span class="p">,</span>
|
|
<span class="nx">valuestr</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>data <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Parameter data.</dd>
|
|
<dt>length <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Length of <code>data</code>.</dd>
|
|
<dt>valuestr <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>String value of the parameter. Can be used to display an alternate representation of the number. For example "ON" or "OFF" instead of values values inside the binary data. The length of the buffer being passed in is always a maximum of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_valuestr_length">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a> bytes. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_getparameterdata">DSP::getParameterData</a>, or during <a class="apilink" href="core-api-system.html#system_update">System::update</a> if plug-in supports the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_overallgain">FMOD_DSP_PARAMETER_OVERALLGAIN</a> data type. Parameter getters are not thread safe and you will need to handle synchronization between parameter getters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'valuestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper valueStr = new FMOD.StringWrapper(valuestr);</code></p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_data_callback">FMOD_DSP_SETPARAM_DATA_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getparam_float_callback"><a href="#fmod_dsp_getparam_float_callback">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a></h2>
|
|
<p>Get float parameter callback.</p>
|
|
<p>This callback is called when the user wants to get a floating point parameter value from a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">value</span><span class="p">,</span>
|
|
<span class="kt">char</span> <span class="o">*</span><span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETPARAM_FLOAT_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">float</span> <span class="k">value</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span><span class="p">,</span>
|
|
<span class="nx">valuestr</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Parameter value.</dd>
|
|
<dt>valuestr <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>String value of the parameter. Can be used to display an alternate representation of the number. For example "ON" or "OFF" instead of 1.0 and 0.0. The length of the buffer being passed in is always a maximum of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_valuestr_length">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a> bytes. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_getparameterfloat">DSP::getParameterFloat</a>. Parameter getters are not thread safe and you will need to handle synchronization between parameter getters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'valuestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper valueStr = new FMOD.StringWrapper(valuestr);</code></p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_float_callback">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getparam_int_callback"><a href="#fmod_dsp_getparam_int_callback">FMOD_DSP_GETPARAM_INT_CALLBACK</a></h2>
|
|
<p>Get integer parameter callback.</p>
|
|
<p>This callback is called when the user wants to get an integer parameter value from a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETPARAM_INT_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="o">*</span><span class="n">value</span><span class="p">,</span>
|
|
<span class="kt">char</span> <span class="o">*</span><span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETPARAM_INT_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="k">value</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_GETPARAM_INT_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span><span class="p">,</span>
|
|
<span class="nx">valuestr</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Parameter value.</dd>
|
|
<dt>valuestr <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>String value of the parameter. Can be used to display an alternate representation of the number. For example "ON" or "OFF" instead of 1 and 0. The length of the buffer being passed in is always a maximum of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_valuestr_length">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a> bytes.</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_getparameterint">DSP::getParameterInt</a>. Parameter getters are not thread safe and you will need to handle synchronization between parameter getters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'valuestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper valueStr = new FMOD.StringWrapper(valuestr);</code></p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_setparam_int_callback">FMOD_DSP_SETPARAM_INT_CALLBACK</a></p>
|
|
<h2 api="define" id="fmod_dsp_getparam_valuestr_length"><a href="#fmod_dsp_getparam_valuestr_length">FMOD_DSP_GETPARAM_VALUESTR_LENGTH</a></h2>
|
|
<p>Length in bytes of the buffer pointed to by the valuestr argument of FMOD_DSP_GETPARAM_XXXX_CALLBACK functions.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="cp">#define FMOD_DSP_GETPARAM_VALUESTR_LENGTH 32</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_GETPARAM_VALUESTR_LENGTH</span> <span class="o">=</span> <span class="mi">32</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-csharp">
|
|
<p>Currently not supported for C#.</p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_float_callback">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_int_callback">FMOD_DSP_GETPARAM_INT_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_bool_callback">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_data_callback">FMOD_DSP_GETPARAM_DATA_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getsamplerate_func"><a href="#fmod_dsp_getsamplerate_func">FMOD_DSP_GETSAMPLERATE_FUNC</a></h2>
|
|
<p>Function to query the system sample rate.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETSAMPLERATE_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="o">*</span><span class="n">rate</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETSAMPLERATE_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="n">rate</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_GETSAMPLERATE_FUNC</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">rate</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>rate <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>The system sample rate.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Hertz</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getspeakermode_func"><a href="#fmod_dsp_getspeakermode_func">FMOD_DSP_GETSPEAKERMODE_FUNC</a></h2>
|
|
<p>Function to query the system speaker modes.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETSPEAKERMODE_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="o">*</span><span class="n">speakermode_mixer</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="o">*</span><span class="n">speakermode_output</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETSPEAKERMODE_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="n">speakermode_mixer</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="n">speakermode_output</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_GETSPEAKERMODE_FUNC</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">speakermode_mixer</span><span class="p">,</span>
|
|
<span class="nx">speakermode_output</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>speakermode_mixer <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>The default speaker mode of the <a class="apilink" href="core-api-system.html">System</a>. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>speakermode_output <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>The output device speaker mode. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Implementation detail:</strong></p>
|
|
<p>If speakermode_mixer and speakermode_output are different then the <a class="apilink" href="core-api-system.html">System</a> is downmixing or upmixing to the speakermode_output format.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a href="mixing-and-routing-in-the-core-api.html#upmixdownmix-behavior">Upmix/Downmix Behavior</a></p>
|
|
<h2 api="callback" id="fmod_dsp_getuserdata_func"><a href="#fmod_dsp_getuserdata_func">FMOD_DSP_GETUSERDATA_FUNC</a></h2>
|
|
<p>Function to get the user data attached to this DSP.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_GETUSERDATA_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">void</span> <span class="o">**</span><span class="n">userdata</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_GETUSERDATA_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="k">out</span> <span class="n">IntPtr</span> <span class="n">userdata</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>userdata <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>User data set by calling <a class="apilink" href="core-api-dsp.html#dsp_setuserdata">DSP::setUserData</a> or assignment via <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description_userdata">FMOD_DSP_DESCRIPTION::userdata</a>.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="callback" id="fmod_dsp_log_func"><a href="#fmod_dsp_log_func">FMOD_DSP_LOG_FUNC</a></h2>
|
|
<p>Function to write to the FMOD logging system.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="kt">void</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_LOG_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DEBUG_FLAGS</span> <span class="n">level</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">line</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">function</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span>
|
|
<span class="p">...</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="k">void</span> <span class="nf">DSP_LOG_FUNC</span><span class="p">(</span>
|
|
<span class="n">DEBUG_FLAGS</span> <span class="n">level</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">file</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">line</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">function</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">str</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>level</dt>
|
|
<dd>Log type or level. (<a class="apilink" href="core-api-common.html#fmod_debug_flags">FMOD_DEBUG_FLAGS</a>)</dd>
|
|
<dt>file</dt>
|
|
<dd>Source code file name from where the log is called. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
<dt>line</dt>
|
|
<dd>Line number in the source code file the function is being called from.</dd>
|
|
<dt>function</dt>
|
|
<dd>Name of the logging function. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
<dt>str</dt>
|
|
<dd>String to log. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="struct" id="fmod_dsp_metering_info"><a href="#fmod_dsp_metering_info">FMOD_DSP_METERING_INFO</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> metering info.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_METERING_INFO</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numsamples</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">peaklevel</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
<span class="kt">float</span> <span class="n">rmslevel</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
<span class="kt">short</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_METERING_INFO</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_METERING_INFO</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numsamples</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">peaklevel</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">rmslevel</span><span class="p">;</span>
|
|
<span class="kt">short</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_METERING_INFO</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">numsamples</span><span class="p">,</span>
|
|
<span class="nx">peaklevel</span><span class="p">,</span>
|
|
<span class="nx">rmslevel</span><span class="p">,</span>
|
|
<span class="nx">numchannels</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_metering_info_numsamples">numsamples <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Number of samples considered for this metering info.</dd>
|
|
<dt id="fmod_dsp_metering_info_peaklevel">peaklevel <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>
|
|
<p>Peak level per channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt id="fmod_dsp_metering_info_rmslevel">rmslevel <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>
|
|
<p>Rms level per channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt id="fmod_dsp_metering_info_numchannels">numchannels <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Number of channels.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-common.html#fmod_speaker">FMOD_SPEAKER</a>, <a class="apilink" href="core-api-dsp.html#dsp_getmeteringinfo">DSP::getMeteringInfo</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_getrolloffgain_func"><a href="#fmod_dsp_pan_getrolloffgain_func">FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC</a></h2>
|
|
<p>Function to calculate distance attenuation.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PAN_3D_ROLLOFF_TYPE</span> <span class="n">rolloff</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">distance</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">mindistance</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">maxdistance</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">gain</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_GETROLLOFFGAIN_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">DSP_PAN_3D_ROLLOFF_TYPE</span> <span class="n">rolloff</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">distance</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">mindistance</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">maxdistance</span><span class="p">,</span>
|
|
<span class="k">out</span> <span class="kt">float</span> <span class="n">gain</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>rolloff</dt>
|
|
<dd>Rolloff type to apply to distance attenuation calculation. (<a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_pan_3d_rolloff_type">FMOD_DSP_PAN_3D_ROLLOFF_TYPE</a>)</dd>
|
|
<dt>distance</dt>
|
|
<dd>
|
|
<p>The distance from the DSP's position.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> <a href="glossary.html#distance-units">Distance units</a></li>
|
|
</ul>
|
|
</dd>
|
|
<dt>mindistance</dt>
|
|
<dd>
|
|
<p>Distance from the source where attenuation begins.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> <a href="glossary.html#distance-units">Distance units</a></li>
|
|
</ul>
|
|
</dd>
|
|
<dt>maxdistance</dt>
|
|
<dd>
|
|
<p>Distance from the source where attenuation ends.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> <a href="glossary.html#distance-units">Distance units</a></li>
|
|
</ul>
|
|
</dd>
|
|
<dt>gain <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>
|
|
<p>Gain modifier applied to signal at provided distance.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_summonomatrix_func"><a href="#fmod_dsp_pan_summonomatrix_func">FMOD_DSP_PAN_SUMMONOMATRIX_FUNC</a></h2>
|
|
<p>Function to calculate a mix matrix that downmixes the source speaker mode to mono.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_SUMMONOMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_SUMMONOMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>sourceSpeakerMode</dt>
|
|
<dd>The input speaker mode of to create a mono mix matrix for. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>lowFrequencyGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply just to the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>overallGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply to each channel, including the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrix <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Calculated mono mix matrix based on the given parameters.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-system.html#system_getspeakermodechannels">System::getSpeakerModeChannels</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a>, <a href="mixing-and-routing-in-the-core-api.html#upmixdownmix-behavior">Upmix/Downmix Behavior</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_summonotosurroundmatrix_func"><a href="#fmod_dsp_pan_summonotosurroundmatrix_func">FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</a></h2>
|
|
<p>Function to calculate a mix matrix that upmixes from mono to the target speaker mode.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>targetSpeakerMode</dt>
|
|
<dd>The output speaker mode to create a mix matrix for. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>direction</dt>
|
|
<dd>
|
|
<p>Angle from center point of panning circle where 0 is front center and -180 or +180 is rear speakers center point.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [-180, 180]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>extent</dt>
|
|
<dd>
|
|
<p>The amount the signal will be spread across the panning circle relative to direction, where 0 is not at all and 360 is spread between all speakers.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [0, 360]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>lowFrequencyGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply just to the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>overallGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply to each channel, including the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrixHop</dt>
|
|
<dd>
|
|
<p>The number of source channels in the matrix.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0, <a class="apilink" href="core-api-common.html#fmod_max_channel_width">FMOD_MAX_CHANNEL_WIDTH</a>]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrix <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Calculated surround mix matrix based on the given parameters.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a>, <a href="mixing-and-routing-in-the-core-api.html#upmixdownmix-behavior">Upmix/Downmix Behavior</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_sumstereomatrix_func"><a href="#fmod_dsp_pan_sumstereomatrix_func">FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC</a></h2>
|
|
<p>Function to calculate a mix matrix that downmixes from the source speaker mode to stereo.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">pan</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_SUMSTEREOMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">pan</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>sourceSpeakerMode</dt>
|
|
<dd>The input speaker mode to create a stereo mix matrix for. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>pan</dt>
|
|
<dd>
|
|
<p>The amount the signal will be spread across the left and right channels, where -100 is 100% left, and 100 is 100% right.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Percentage</li>
|
|
<li><span class="label">Range:</span> [-100, 100]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>lowFrequencyGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply just to the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>overallGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply to each channel, including the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrixHop</dt>
|
|
<dd>
|
|
<p>The number of source channels in the matrix.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0, <a class="apilink" href="core-api-common.html#fmod_max_channel_width">FMOD_MAX_CHANNEL_WIDTH</a>]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrix <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Calculated stereo mix matrix based on the given parameters.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a>, <a href="mixing-and-routing-in-the-core-api.html#upmixdownmix-behavior">Upmix/Downmix Behavior</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_sumstereotosurroundmatrix_func"><a href="#fmod_dsp_pan_sumstereotosurroundmatrix_func">FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</a></h2>
|
|
<p>Function to calculate a mix matrix that upmixes from stereo to the target speaker mode.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">rotation</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">rotation</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">matrix</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>targetSpeakerMode</dt>
|
|
<dd>The target speaker mode to create a mix matrix for. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>direction</dt>
|
|
<dd>
|
|
<p>Angle from center point of panning circle where 0 is front center and -180 or +180 is rear speakers center point.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [-180, 180]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>extent</dt>
|
|
<dd>
|
|
<p>The amount the signal will be spread across the panning circle relative to direction, where 0 is not at all and 360 is spread between all speakers.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [0, 360]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>rotation</dt>
|
|
<dd>
|
|
<p>The rotation of the channels from their original mapping, contained within the extent.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [-180, 180]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>lowFrequencyGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply just to the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>overallGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply to each channel, including the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrixHop</dt>
|
|
<dd>
|
|
<p>The number of source channels in the matrix.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0, <a class="apilink" href="core-api-common.html#fmod_max_channel_width">FMOD_MAX_CHANNEL_WIDTH</a>]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrix <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Calculated surround mix matrix based on the given parameters.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a></p>
|
|
<h2 api="callback" id="fmod_dsp_pan_sumsurroundmatrix_func"><a href="#fmod_dsp_pan_sumsurroundmatrix_func">FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC</a></h2>
|
|
<p>Function to calculate a mix matrix that upmixes or downmixes from the source speaker mode to the target speaker mode.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">rotation</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">matrix</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PAN_SURROUND_FLAGS</span> <span class="n">flags</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PAN_SUMSURROUNDMATRIX_FUNC</span><span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">sourceSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">targetSpeakerMode</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">direction</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">extent</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">rotation</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">lowFrequencyGain</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">overallGain</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">matrixHop</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">matrix</span><span class="p">,</span>
|
|
<span class="n">DSP_PAN_SURROUND_FLAGS</span> <span class="n">flags</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>sourceSpeakerMode</dt>
|
|
<dd>The input speaker mode of the mix matrix to calculate. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>targetSpeakerMode</dt>
|
|
<dd>The output speaker mode of the mix matrix to calculate. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt>direction</dt>
|
|
<dd>
|
|
<p>Angle from center point of panning circle where 0 is front center and -180 or +180 is rear speakers center point.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [-180, 180]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>extent</dt>
|
|
<dd>
|
|
<p>The amount the signal will be spread across the panning circle relative to direction, where 0 is not at all and 360 is spread between all speakers.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [0, 360]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>rotation</dt>
|
|
<dd>
|
|
<p>The rotation of the channels from their original mapping, contained within the extent.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Degrees</li>
|
|
<li><span class="label">Range:</span> [-180, 180]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>lowFrequencyGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply just to the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>overallGain</dt>
|
|
<dd>
|
|
<p>Gain modifier to apply to each channel, including the LFE channel.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrixHop</dt>
|
|
<dd>
|
|
<p>The number of source channels in the matrix.</p>
|
|
<ul>
|
|
<li><span class="label">Range:</span> [0, <a class="apilink" href="core-api-common.html#fmod_max_channel_width">FMOD_MAX_CHANNEL_WIDTH</a>]</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>matrix <span><a class="token" href="glossary.html#documentation-conventions" title="Output">Out</a></span></dt>
|
|
<dd>Calculated surround mix matrix based on the given parameters.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a></p>
|
|
<h2 api="enum" id="fmod_dsp_pan_surround_flags"><a href="#fmod_dsp_pan_surround_flags">FMOD_DSP_PAN_SURROUND_FLAGS</a></h2>
|
|
<p>Flags for the FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC function.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="n">FMOD_DSP_PAN_SURROUND_FLAGS</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PAN_SURROUND_DEFAULT</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PAN_SURROUND_FLAGS</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">enum</span> <span class="n">DSP_PAN_SURROUND_FLAGS</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DEFAULT</span><span class="p">,</span>
|
|
<span class="n">ROTATION_NOT_BIASED</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">DSP_PAN_SURROUND_DEFAULT</span>
|
|
<span class="nx">DSP_PAN_SURROUND_ROTATION_NOT_BIASED</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_pan_surround_default">FMOD_DSP_PAN_SURROUND_DEFAULT</dt>
|
|
<dd>Output channel rotations are spread across the panning circle based on speaker positions.</dd>
|
|
<dt id="fmod_dsp_pan_surround_rotation_not_biased">FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED</dt>
|
|
<dd>Output channel rotations are spread evenly across the panning circle.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_pan_functions">FMOD_DSP_STATE_PAN_FUNCTIONS</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_3dattributes"><a href="#fmod_dsp_parameter_3dattributes">FMOD_DSP_PARAMETER_3DATTRIBUTES</a></h2>
|
|
<p>3D attributes data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_3DATTRIBUTES</span> <span class="p">{</span>
|
|
<span class="n">FMOD_3D_ATTRIBUTES</span> <span class="n">relative</span><span class="p">;</span>
|
|
<span class="n">FMOD_3D_ATTRIBUTES</span> <span class="n">absolute</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_3DATTRIBUTES</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_3DATTRIBUTES</span>
|
|
<span class="p">{</span>
|
|
<span class="n">_3D_ATTRIBUTES</span> <span class="n">relative</span><span class="p">;</span>
|
|
<span class="n">_3D_ATTRIBUTES</span> <span class="n">absolute</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_3DATTRIBUTES</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">relative</span><span class="p">,</span>
|
|
<span class="nx">absolute</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_3dattributes_relative">relative</dt>
|
|
<dd>Position of the sound relative to the listener. (<a class="apilink" href="core-api-common.html#fmod_3d_attributes">FMOD_3D_ATTRIBUTES</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_3dattributes_absolute">absolute</dt>
|
|
<dd>Position of the sound in world coordinates. (<a class="apilink" href="core-api-common.html#fmod_3d_attributes">FMOD_3D_ATTRIBUTES</a>)</dd>
|
|
</dl>
|
|
<p>The <a href="studio-api-system.html">FMOD::Studio::System</a> sets this parameter automatically when an <a href="studio-api-eventinstance.html">FMOD::Studio::EventInstance</a> position changes. However, if you are using the core <a href="core-api-system.html">FMOD::System</a> and not the <a href="studio-api-system.html">FMOD::Studio::System</a>, you must set this <a href="glossary.html#dsp">DSP</a> parameter explicitly.</p>
|
|
<p>Attributes must use a coordinate system with the positive Y axis being up and the positive X axis being right. The FMOD Engine converts passed-in coordinates to left-handed for the plug-in if the system was initialized with the <a class="apilink" href="core-api-system.html#fmod_init_3d_righthanded">FMOD_INIT_3D_RIGHTHANDED</a> flag.</p>
|
|
<p>When using a listener attenuation position, the direction of the <code>relative</code> attributes will be relative to the listener position and the length will be the distance to the attenuation position. </p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="studio-api-system.html#studio_system_setlistenerattributes">Studio::System::setListenerAttributes</a>, <a href="spatializing-sounds-in-the-core-api.html#controlling-a-spatializer-dsp">Controlling a Spatializer DSP</a>.</p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_3dattributes_multi"><a href="#fmod_dsp_parameter_3dattributes_multi">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</a></h2>
|
|
<p>3D attributes data structure for multiple listeners.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numlisteners</span><span class="p">;</span>
|
|
<span class="n">FMOD_3D_ATTRIBUTES</span> <span class="n">relative</span><span class="p">[</span><span class="n">FMOD_MAX_LISTENERS</span><span class="p">];</span>
|
|
<span class="kt">float</span> <span class="n">weight</span><span class="p">[</span><span class="n">FMOD_MAX_LISTENERS</span><span class="p">];</span>
|
|
<span class="n">FMOD_3D_ATTRIBUTES</span> <span class="n">absolute</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_3DATTRIBUTES_MULTI</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numlisteners</span><span class="p">;</span>
|
|
<span class="n">_3D_ATTRIBUTES</span><span class="p">[]</span> <span class="n">relative</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">weight</span><span class="p">;</span>
|
|
<span class="n">_3D_ATTRIBUTES</span> <span class="n">absolute</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">numlisteners</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_3dattributes_multi_numlisteners">numlisteners</dt>
|
|
<dd>Number of listeners.</dd>
|
|
<dt id="fmod_dsp_parameter_3dattributes_multi_relative">relative</dt>
|
|
<dd>Position of the sound relative to the listeners. (<a class="apilink" href="core-api-common.html#fmod_3d_attributes">FMOD_3D_ATTRIBUTES</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_3dattributes_multi_weight">weight</dt>
|
|
<dd>Weighting of the listeners where 0 means listener has no contribution and 1 means full contribution.</dd>
|
|
<dt id="fmod_dsp_parameter_3dattributes_multi_absolute">absolute</dt>
|
|
<dd>Position of the sound in world coordinates. (<a class="apilink" href="core-api-common.html#fmod_3d_attributes">FMOD_3D_ATTRIBUTES</a>)</dd>
|
|
</dl>
|
|
<p>The <a href="studio-api-system.html">FMOD::Studio::System</a> sets this parameter automatically when an <a href="studio-api-eventinstance.html">FMOD::Studio::EventInstance</a> position changes. However, if you are using the core API's <a href="core-api-system.html">FMOD::System</a> and not the <a href="studio-api-system.html">FMOD::Studio::System</a>, you must set this <a href="glossary.html#dsp">DSP</a> parameter explicitly.</p>
|
|
<p>Attributes must use a coordinate system with the positive Y axis being up and the positive X axis being right. The FMOD Engine converts passed in coordinates to left-handed for the plug-in if the System was initialized with the <a class="apilink" href="core-api-system.html#fmod_init_3d_righthanded">FMOD_INIT_3D_RIGHTHANDED</a> flag.</p>
|
|
<p>When using a listener attenuation position, the direction of the <code>relative</code> attributes will be relative to the listener position and the length will be the distance to the attenuation position. </p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="studio-api-system.html#studio_system_setlistenerattributes">Studio::System::setListenerAttributes</a>, <a href="spatializing-sounds-in-the-core-api.html#controlling-a-spatializer-dsp">Controlling a Spatializer DSP</a>.</p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_attenuation_range"><a href="#fmod_dsp_parameter_attenuation_range">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</a></h2>
|
|
<p>Attenuation range parameter data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</span> <span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_ATTENUATION_RANGE</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">min</span><span class="p">,</span>
|
|
<span class="nx">max</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_attenuation_range_min">min <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Minimum distance for attenuation.</dd>
|
|
<dt id="fmod_dsp_parameter_attenuation_range_max">max <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Maximum distance for attenuation.</dd>
|
|
</dl>
|
|
<p>The FMOD::Studio::System will set this parameter automatically if an FMOD::Studio::EventInstance min or max distance changes.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="enum" id="fmod_dsp_parameter_data_type"><a href="#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a></h2>
|
|
<p>Data parameter types.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="n">FMOD_DSP_PARAMETER_DATA_TYPE</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_USER</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_FFT</span> <span class="o">=</span> <span class="o">-</span><span class="mi">4</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI</span> <span class="o">=</span> <span class="o">-</span><span class="mi">5</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE</span> <span class="o">=</span> <span class="o">-</span><span class="mi">6</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE</span> <span class="o">=</span> <span class="o">-</span><span class="mi">7</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH</span> <span class="o">=</span> <span class="o">-</span><span class="mi">8</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DATA_TYPE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">enum</span> <span class="n">DSP_PARAMETER_DATA_TYPE</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_USER</span> <span class="p">=</span> <span class="m">0</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_OVERALLGAIN</span> <span class="p">=</span> <span class="p">-</span><span class="m">1</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES</span> <span class="p">=</span> <span class="p">-</span><span class="m">2</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_SIDECHAIN</span> <span class="p">=</span> <span class="p">-</span><span class="m">3</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_FFT</span> <span class="p">=</span> <span class="p">-</span><span class="m">4</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI</span> <span class="p">=</span> <span class="p">-</span><span class="m">5</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE</span> <span class="p">=</span> <span class="p">-</span><span class="m">6</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE</span> <span class="p">=</span> <span class="p">-</span><span class="m">7</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH</span> <span class="p">=</span> <span class="p">-</span><span class="m">8</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_USER</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_OVERALLGAIN</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_SIDECHAIN</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_FFT</span> <span class="o">=</span> <span class="o">-</span><span class="mi">4</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI</span> <span class="o">=</span> <span class="o">-</span><span class="mi">5</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE</span> <span class="o">=</span> <span class="o">-</span><span class="mi">6</span><span class="p">,</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE</span> <span class="o">=</span> <span class="o">-</span><span class="mi">7</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH</span> <span class="o">=</span> <span class="o">-</span><span class="mi">8</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_data_type_user">FMOD_DSP_PARAMETER_DATA_TYPE_USER</dt>
|
|
<dd>Default data type. All user data types should be 0 or above.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_overallgain">FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_overallgain">FMOD_DSP_PARAMETER_OVERALLGAIN</a> parameters. There should be a maximum of one per <a href="glossary.html#dsp">DSP</a>.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_3dattributes">FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_3dattributes">FMOD_DSP_PARAMETER_3DATTRIBUTES</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_sidechain">FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_sidechain">FMOD_DSP_PARAMETER_SIDECHAIN</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_fft">FMOD_DSP_PARAMETER_DATA_TYPE_FFT</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_fft">FMOD_DSP_PARAMETER_FFT</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_3dattributes_multi">FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_3dattributes_multi">FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_attenuation_range">FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_attenuation_range">FMOD_DSP_PARAMETER_ATTENUATION_RANGE</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_dynamic_response">FMOD_DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_dynamic_response">FMOD_DSP_PARAMETER_DYNAMIC_RESPONSE</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
<dt id="fmod_dsp_parameter_data_type_finite_length">FMOD_DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH</dt>
|
|
<dd>Data type for <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_finite_length">FMOD_DSP_PARAMETER_FINITE_LENGTH</a> parameters. There should be a maximum of one per DSP.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterdata">DSP::getParameterData</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_desc"><a href="#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></h2>
|
|
<p>Base structure for <a href="glossary.html#dsp">DSP</a> parameter descriptions.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DESC</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE</span> <span class="n">type</span><span class="p">;</span>
|
|
<span class="kt">char</span> <span class="n">name</span><span class="p">[</span><span class="mi">16</span><span class="p">];</span>
|
|
<span class="kt">char</span> <span class="n">label</span><span class="p">[</span><span class="mi">16</span><span class="p">];</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">description</span><span class="p">;</span>
|
|
<span class="k">union</span>
|
|
<span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DESC_FLOAT</span> <span class="n">floatdesc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DESC_INT</span> <span class="n">intdesc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DESC_BOOL</span> <span class="n">booldesc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_DESC_DATA</span> <span class="n">datadesc</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DESC</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DESC</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_PARAMETER_TYPE</span> <span class="n">type</span><span class="p">;</span>
|
|
<span class="kt">char</span><span class="p">[]</span> <span class="n">name</span><span class="p">;</span>
|
|
<span class="kt">char</span><span class="p">[]</span> <span class="n">label</span><span class="p">;</span>
|
|
<span class="kt">string</span> <span class="n">description</span><span class="p">;</span>
|
|
<span class="n">DSP_PARAMETER_DESC_UNION</span> <span class="n">desc</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_DESC</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">type</span><span class="p">,</span>
|
|
<span class="nx">name</span><span class="p">,</span>
|
|
<span class="nx">label</span><span class="p">,</span>
|
|
<span class="nx">description</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_desc_type">type</dt>
|
|
<dd>Parameter type. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type">FMOD_DSP_PARAMETER_TYPE</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_desc_name">name</dt>
|
|
<dd>Parameter Name.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_label">label</dt>
|
|
<dd>Unit type label.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_description">description</dt>
|
|
<dd>Description of the parameter.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_floatdesc">floatdesc</dt>
|
|
<dd>Floating point format description used when type is <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type_float">FMOD_DSP_PARAMETER_TYPE_FLOAT</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_float">FMOD_DSP_PARAMETER_DESC_FLOAT</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_desc_intdesc">intdesc</dt>
|
|
<dd>Integer format description used when type is <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type_int">FMOD_DSP_PARAMETER_TYPE_INT</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_int">FMOD_DSP_PARAMETER_DESC_INT</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_desc_booldesc">booldesc</dt>
|
|
<dd>Boolean format description used when type is <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type_bool">FMOD_DSP_PARAMETER_TYPE_BOOL</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_bool">FMOD_DSP_PARAMETER_DESC_BOOL</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_desc_datadesc">datadesc</dt>
|
|
<dd>Data format description used when type is <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_type_data">FMOD_DSP_PARAMETER_TYPE_DATA</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a>)</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterfloat">DSP::setParameterFloat</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterfloat">DSP::getParameterFloat</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterint">DSP::getParameterInt</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterbool">DSP::setParameterBool</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterbool">DSP::getParameterBool</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterdata">DSP::getParameterData</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_float">FMOD_DSP_PARAMETER_DESC_FLOAT</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_int">FMOD_DSP_PARAMETER_DESC_INT</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_bool">FMOD_DSP_PARAMETER_DESC_BOOL</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_desc_bool"><a href="#fmod_dsp_parameter_desc_bool">FMOD_DSP_PARAMETER_DESC_BOOL</a></h2>
|
|
<p>Boolean parameter description.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DESC_BOOL</span> <span class="p">{</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span><span class="o">*</span> <span class="n">valuenames</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DESC_BOOL</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DESC_BOOL</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">bool</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuenames</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_DESC_BOOL</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">defaultval</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_desc_bool_defaultval">defaultval</dt>
|
|
<dd>
|
|
<p>Default parameter value.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
<dt id="fmod_dsp_parameter_desc_bool_valuenames">valuenames <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Names for false and true, respectively (<a href="glossary.html#string-format">UTF-8 string</a>). There should be two strings.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterbool">DSP::setParameterBool</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterbool">DSP::getParameterBool</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_desc_data"><a href="#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a></h2>
|
|
<p>Data parameter description.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DESC_DATA</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">datatype</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DESC_DATA</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DESC_DATA</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">datatype</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_DESC_DATA</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">datatype</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_desc_data_datatype">datatype</dt>
|
|
<dd>Type of data.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterdata">DSP::getParameterData</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_desc_float"><a href="#fmod_dsp_parameter_desc_float">FMOD_DSP_PARAMETER_DESC_FLOAT</a></h2>
|
|
<p>Float parameter description.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DESC_FLOAT</span> <span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING</span> <span class="n">mapping</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DESC_FLOAT</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DESC_FLOAT</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING</span> <span class="n">mapping</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_DESC_FLOAT</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">min</span><span class="p">,</span>
|
|
<span class="nx">max</span><span class="p">,</span>
|
|
<span class="nx">defaultval</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_desc_float_min">min</dt>
|
|
<dd>Minimum value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_float_max">max</dt>
|
|
<dd>Maximum value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_float_defaultval">defaultval</dt>
|
|
<dd>Default value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_float_mapping">mapping</dt>
|
|
<dd>How the values are distributed across dials and automation curves. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping">FMOD_DSP_PARAMETER_FLOAT_MAPPING</a>)</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterfloat">DSP::setParameterFloat</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterfloat">DSP::getParameterFloat</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_desc_int"><a href="#fmod_dsp_parameter_desc_int">FMOD_DSP_PARAMETER_DESC_INT</a></h2>
|
|
<p>Integer parameter description.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DESC_INT</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">goestoinf</span><span class="p">;</span>
|
|
<span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span><span class="o">*</span> <span class="n">valuenames</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DESC_INT</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DESC_INT</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">min</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">max</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">defaultval</span><span class="p">;</span>
|
|
<span class="kt">bool</span> <span class="n">goestoinf</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">valuenames</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_DESC_INT</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">min</span><span class="p">,</span>
|
|
<span class="nx">max</span><span class="p">,</span>
|
|
<span class="nx">defaultval</span><span class="p">,</span>
|
|
<span class="nx">goestoinf</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_desc_int_min">min</dt>
|
|
<dd>Minimum value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_int_max">max</dt>
|
|
<dd>Maximum value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_int_defaultval">defaultval</dt>
|
|
<dd>Default value.</dd>
|
|
<dt id="fmod_dsp_parameter_desc_int_goestoinf">goestoinf</dt>
|
|
<dd>
|
|
<p>Whether the last value represents infinity.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
<dt id="fmod_dsp_parameter_desc_int_valuenames">valuenames <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>Names for each value (<a href="glossary.html#string-format">UTF-8 string</a>). There should be as many strings as there are possible values (max - min + 1).</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-system.html#system_createdsp">System::createDSP</a>, <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>, <a class="apilink" href="core-api-dsp.html#dsp_getparameterint">DSP::getParameterInt</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_dynamic_response"><a href="#fmod_dsp_parameter_dynamic_response">FMOD_DSP_PARAMETER_DYNAMIC_RESPONSE</a></h2>
|
|
<p>Dynamic response data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_DYNAMIC_RESPONSE</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">rms</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_DYNAMIC_RESPONSE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_DYNAMIC_RESPONSE</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">rms</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">DSP_PARAMETER_DYNAMIC_RESPONSE</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">numchannels</span><span class="p">,</span>
|
|
<span class="nx">rms</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_dynamic_response_numchannels">numchannels <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>The number of channels recorded in the rms array.</dd>
|
|
<dt id="fmod_dsp_parameter_dynamic_response_rms">rms <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>
|
|
<p>The RMS (Root Mean Square) averaged gain factor applied per channel for the last processed block of audio.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Linear</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type_dynamic_response">FMOD_DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_fft"><a href="#fmod_dsp_parameter_fft">FMOD_DSP_PARAMETER_FFT</a></h2>
|
|
<p>FFT parameter data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_FFT</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">length</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">spectrum</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_FFT</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_FFT</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">length</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[][]</span> <span class="n">spectrum</span><span class="p">;</span>
|
|
<span class="k">void</span> <span class="nf">getSpectrum</span><span class="p">(</span><span class="k">ref</span> <span class="kt">float</span><span class="p">[][]</span> <span class="n">buffer</span><span class="p">);</span>
|
|
<span class="k">void</span> <span class="nf">getSpectrum</span><span class="p">(</span><span class="kt">int</span> <span class="n">channel</span><span class="p">,</span> <span class="k">ref</span> <span class="kt">float</span><span class="p">[]</span> <span class="n">buffer</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_FFT</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">length</span><span class="p">,</span>
|
|
<span class="nx">numchannels</span><span class="p">,</span>
|
|
<span class="nx">spectrum</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_fft_length">length <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Number of entries in this spectrum window. Divide this by the output rate to get the hz per entry. </dd>
|
|
<dt id="fmod_dsp_parameter_fft_numchannels">numchannels <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Number of channels in spectrum.</dd>
|
|
<dt id="fmod_dsp_parameter_fft_spectrum">spectrum <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Per channel spectrum arrays. See remarks for more.</dd>
|
|
<dt id="fmod_dsp_parameter_fft_getspectrum">getSpectrum <span><a class="token" href="glossary.html#documentation-conventions" title="C#only">C#</a></span></dt>
|
|
<dd>Fill the provided buffer with the spectrum data to avoid garbage collection.</dd>
|
|
<dt id="fmod_dsp_parameter_fft_getspectrum">getSpectrum <span><a class="token" href="glossary.html#documentation-conventions" title="C#only">C#</a></span></dt>
|
|
<dd>Fill the provided buffer with the spectrum data for the specified channel to avoid garbage collection.</dd>
|
|
</dl>
|
|
<p>Notes on the spectrum data member. Values inside the float buffer are typically between 0 and 1.0.</p>
|
|
<p>Each top level array represents one PCM channel of data.</p>
|
|
<p>Address data as spectrum[channel][bin]. A bin is 1 fft window entry.</p>
|
|
<p>Only read/display half of the buffer typically for analysis as the 2nd half is usually the same data reversed due to the nature of the way FFT works.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type_fft">FMOD_DSP_PARAMETER_DATA_TYPE_FFT</a>, <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_type">FMOD_DSP_TYPE</a>, <a class="apilink" href="core-api-common-dsp-effects.html#fmod_dsp_fft">FMOD_DSP_FFT</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_finite_length"><a href="#fmod_dsp_parameter_finite_length">FMOD_DSP_PARAMETER_FINITE_LENGTH</a></h2>
|
|
<p>Length data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_FINITE_LENGTH</span>
|
|
<span class="p">{</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">finite</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_FINITE_LENGTH</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_FINITE_LENGTH</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">finite</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">DSP_PARAMETER_FINITE_LENGTH</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">finite</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_finite_length_finite">finite <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>
|
|
<p>Whether the DSP's playback length is finite.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p>This data structure is used by the Studio API to detect whether the DSP will stop by itself or continue playing forever.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type_finite_length">FMOD_DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_float_mapping"><a href="#fmod_dsp_parameter_float_mapping">FMOD_DSP_PARAMETER_FLOAT_MAPPING</a></h2>
|
|
<p>Structure to define a mapping for a <a href="glossary.html#dsp">DSP unit</a>'s float parameter.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</span> <span class="n">type</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span> <span class="n">piecewiselinearmapping</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_FLOAT_MAPPING</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING_TYPE</span> <span class="n">type</span><span class="p">;</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span> <span class="n">piecewiselinearmapping</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_FLOAT_MAPPING</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">type</span><span class="p">,</span>
|
|
<span class="nx">piecewiselinearmapping</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_float_mapping_type">type</dt>
|
|
<dd>Mapping type (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_type">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</a>)</dd>
|
|
<dt id="fmod_dsp_parameter_float_mapping_piecewiselinearmapping">piecewiselinearmapping</dt>
|
|
<dd>Piecewise linear mapping type. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_piecewise_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</a>)</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_type">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_piecewise_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_float">FMOD_DSP_PARAMETER_DESC_FLOAT</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_float_mapping_piecewise_linear"><a href="#fmod_dsp_parameter_float_mapping_piecewise_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</a></h2>
|
|
<p>Structure to define a piecewise linear mapping.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span> <span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numpoints</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">pointparamvalues</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">pointpositions</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numpoints</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">pointparamvalues</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">pointpositions</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">numpoints</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_float_mapping_piecewise_linear_numpoints">numpoints</dt>
|
|
<dd>Number of <position, value> pairs in the piecewise mapping (at least 2).</dd>
|
|
<dt id="fmod_dsp_parameter_float_mapping_piecewise_linear_pointparamvalues">pointparamvalues</dt>
|
|
<dd>Values in the parameter's units for each point</dd>
|
|
<dt id="fmod_dsp_parameter_float_mapping_piecewise_linear_pointpositions">pointpositions</dt>
|
|
<dd>Positions along the control's scale (e.g. dial angle) corresponding to each parameter value. The range of this scale is arbitrary and all positions will be relative to the minimum and maximum values (e.g. [0,1,3] is equivalent to [1,2,4] and [2,4,8]). If this array is zero, pointparamvalues will be distributed with equal spacing.</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_type">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping">FMOD_DSP_PARAMETER_FLOAT_MAPPING</a></p>
|
|
<h2 api="enum" id="fmod_dsp_parameter_float_mapping_type"><a href="#fmod_dsp_parameter_float_mapping_type">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> float parameter mappings. These determine how values are mapped across dials and automation curves.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">enum</span> <span class="n">DSP_PARAMETER_FLOAT_MAPPING_TYPE</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR</span> <span class="p">=</span> <span class="m">0</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO</span><span class="p">,</span>
|
|
<span class="n">DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_float_mapping_type_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR</dt>
|
|
<dd>Values mapped linearly across range.</dd>
|
|
<dt id="fmod_dsp_parameter_float_mapping_type_auto">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO</dt>
|
|
<dd>A mapping is automatically chosen based on range and units. See remarks.</dd>
|
|
<dt id="fmod_dsp_parameter_float_mapping_type_piecewise_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR</dt>
|
|
<dd>Values mapped in a piecewise linear fashion defined by <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_piecewise_linear">FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR</a>.</dd>
|
|
</dl>
|
|
<p><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping_type_auto">FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO</a> generates a mapping based on range and units. For example, if the units are in Hertz and the range is with-in the audio spectrum, a Bark scale will be chosen. Logarithmic scales may also be generated for ranges above zero spanning several orders of magnitude.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_float_mapping">FMOD_DSP_PARAMETER_FLOAT_MAPPING</a></p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_overallgain"><a href="#fmod_dsp_parameter_overallgain">FMOD_DSP_PARAMETER_OVERALLGAIN</a></h2>
|
|
<p>Overall gain parameter data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_OVERALLGAIN</span> <span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">linear_gain</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">linear_gain_additive</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_OVERALLGAIN</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_OVERALLGAIN</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span> <span class="n">linear_gain</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="n">linear_gain_additive</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_OVERALLGAIN</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">linear_gain</span><span class="p">,</span>
|
|
<span class="nx">linear_gain_additive</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_overallgain_linear_gain">linear_gain <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Overall linear gain of the <a href="glossary.html#effect">effect</a> on the direct <a href="glossary.html#signal">signal</a> path.</dd>
|
|
<dt id="fmod_dsp_parameter_overallgain_linear_gain_additive">linear_gain_additive <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Additive gain for parallel signal paths.</dd>
|
|
</dl>
|
|
<p>This parameter is read by the system to determine the effect's gain for voice virtualization.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a>, <a href="managing-resources-in-the-core-api.html#virtual-voice-system">Virtual Voice System</a>.</p>
|
|
<h2 api="struct" id="fmod_dsp_parameter_sidechain"><a href="#fmod_dsp_parameter_sidechain">FMOD_DSP_PARAMETER_SIDECHAIN</a></h2>
|
|
<p>Side chain parameter data structure.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_PARAMETER_SIDECHAIN</span> <span class="p">{</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">sidechainenable</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_SIDECHAIN</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_PARAMETER_SIDECHAIN</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">sidechainenable</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_PARAMETER_SIDECHAIN</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">sidechainenable</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_sidechain_sidechainenable">sidechainenable</dt>
|
|
<dd>
|
|
<p>Whether sidechains are enabled.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="enum" id="fmod_dsp_parameter_type"><a href="#fmod_dsp_parameter_type">FMOD_DSP_PARAMETER_TYPE</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> parameter types.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="n">FMOD_DSP_PARAMETER_TYPE</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE_FLOAT</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE_INT</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE_BOOL</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE_DATA</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PARAMETER_TYPE_MAX</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PARAMETER_TYPE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">enum</span> <span class="n">DSP_PARAMETER_TYPE</span>
|
|
<span class="p">{</span>
|
|
<span class="n">FLOAT</span> <span class="p">=</span> <span class="m">0</span><span class="p">,</span>
|
|
<span class="n">INT</span><span class="p">,</span>
|
|
<span class="n">BOOL</span><span class="p">,</span>
|
|
<span class="n">DATA</span><span class="p">,</span>
|
|
<span class="n">MAX</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_TYPE_FLOAT</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_TYPE_INT</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_TYPE_BOOL</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_TYPE_DATA</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">DSP_PARAMETER_TYPE_MAX</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_parameter_type_float">FMOD_DSP_PARAMETER_TYPE_FLOAT</dt>
|
|
<dd><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a> will use the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_float">FMOD_DSP_PARAMETER_DESC_FLOAT</a>. </dd>
|
|
<dt id="fmod_dsp_parameter_type_int">FMOD_DSP_PARAMETER_TYPE_INT</dt>
|
|
<dd><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a> will use the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_int">FMOD_DSP_PARAMETER_DESC_INT</a>. </dd>
|
|
<dt id="fmod_dsp_parameter_type_bool">FMOD_DSP_PARAMETER_TYPE_BOOL</dt>
|
|
<dd><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a> will use the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_bool">FMOD_DSP_PARAMETER_DESC_BOOL</a>. </dd>
|
|
<dt id="fmod_dsp_parameter_type_data">FMOD_DSP_PARAMETER_TYPE_DATA</dt>
|
|
<dd><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a> will use the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a>. </dd>
|
|
<dt id="fmod_dsp_parameter_type_max">FMOD_DSP_PARAMETER_TYPE_MAX</dt>
|
|
<dd>Maximum number of DSP parameter types. </dd>
|
|
</dl>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc">FMOD_DSP_PARAMETER_DESC</a></p>
|
|
<h2 api="callback" id="fmod_dsp_process_callback"><a href="#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a></h2>
|
|
<p>Process callback.</p>
|
|
<p>This callback receives an input <a href="glossary.html#signal">signal</a>, and allows the user to filter or process the data and write it to the output. This is an alternative to the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a> and <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_PROCESS_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="n">FMOD_DSP_BUFFER_ARRAY</span> <span class="o">*</span><span class="n">inbufferarray</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_BUFFER_ARRAY</span> <span class="o">*</span><span class="n">outbufferarray</span><span class="p">,</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">inputsidle</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PROCESS_OPERATION</span> <span class="n">op</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_PROCESS_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="n">DSP_BUFFER_ARRAY</span> <span class="n">inbufferarray</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="n">DSP_BUFFER_ARRAY</span> <span class="n">outbufferarray</span><span class="p">,</span>
|
|
<span class="kt">bool</span> <span class="n">inputsidle</span><span class="p">,</span>
|
|
<span class="n">DSP_PROCESS_OPERATION</span> <span class="n">op</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd><a href="glossary.html#dsp">DSP</a> plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>length</dt>
|
|
<dd>
|
|
<p>Length of the incoming and outgoing buffer.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>inbufferarray</dt>
|
|
<dd>Description of the incoming signal. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_buffer_array">FMOD_DSP_BUFFER_ARRAY</a>)</dd>
|
|
<dt>outbufferarray</dt>
|
|
<dd>Description of the outgoing signal. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_buffer_array">FMOD_DSP_BUFFER_ARRAY</a>)</dd>
|
|
<dt>inputsidle</dt>
|
|
<dd>
|
|
<p>This is true if no audio is being fed to this unit.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>op</dt>
|
|
<dd>Operation type. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_operation">FMOD_DSP_PROCESS_OPERATION</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>FMOD Mixer Thread. The callback is called automatically and periodically when the <a href="glossary.html#dsp-engine">DSP engine</a> updates. This callback is called back regularly after the unit has been created, inserted to the <a href="glossary.html#dsp-graph">DSP graph</a>, and set to active by the user.</li>
|
|
</ul>
|
|
<p>For a process update to be called it would have to be enabled, and this is done with <a class="apilink" href="core-api-dsp.html#dsp_setactive">DSP::setActive</a>. If <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_adddsp">ChannelControl::addDSP</a> is used the unit is automatically set to active.</p>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This callback can be used to specify the output channel format at runtime rather than create time, and also supports multiple input/output buffers.</p>
|
|
<p>This callback will be called twice per mix as it has a dual purpose. Once will be with op = <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_query">FMOD_DSP_PROCESS_QUERY</a>, and then depending on the return value of the query, if it is <a class="apilink" href="core-api-common.html#fmod_ok">FMOD_OK</a> it will call it again with <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a>.</p>
|
|
<p>Return <a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> if the <a href="glossary.html#effect">effect</a> is generating silence, so FMOD's mixer can optimize the signal path and not process it any more.</p>
|
|
<p><strong>Example:</strong></p>
|
|
<p>The following example demonstrates how to copy the input buffer to the output buffer at half volume inside a DSP process callback:</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">Process</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span> <span class="k">const</span> <span class="n">FMOD_DSP_BUFFER_ARRAY</span> <span class="o">*</span><span class="n">inbufferarray</span><span class="p">,</span> <span class="n">FMOD_DSP_BUFFER_ARRAY</span> <span class="o">*</span><span class="n">outbufferarray</span><span class="p">,</span> <span class="n">FMOD_BOOL</span> <span class="n">inputsidle</span><span class="p">,</span> <span class="n">FMOD_DSP_PROCESS_OPERATION</span> <span class="n">op</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">op</span> <span class="o">==</span> <span class="n">FMOD_DSP_PROCESS_QUERY</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">outbufferarray</span> <span class="o">&&</span> <span class="n">inbufferarray</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">outbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffernumchannels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">inbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffernumchannels</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="p">{</span>
|
|
<span class="n">FMOD_ERR_DSP_SILENCE</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">inputsidle</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="n">FMOD_ERR_DSP_DONTPROCESS</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="k">else</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span> <span class="o">=</span> <span class="n">outbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffernumchannels</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">input</span> <span class="o">=</span> <span class="n">inbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffers</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">output</span> <span class="o">=</span> <span class="n">outbufferarray</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buffers</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">sample</span> <span class="o"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">channel</span> <span class="o"><</span> <span class="n">numchannels</span><span class="p">;</span> <span class="n">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="n">numchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">=</span> <span class="n">input</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="n">numchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">*</span> <span class="mf">0.5f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="na">[AOT.MonoPInvokeCallback(typeof(FMOD.DSP_PROCESS_CALLBACK))]</span>
|
|
<span class="k">static</span> <span class="n">RESULT</span> <span class="nf">Process</span><span class="p">(</span><span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span> <span class="kt">uint</span> <span class="n">length</span><span class="p">,</span> <span class="k">ref</span> <span class="n">DSP_BUFFER_ARRAY</span> <span class="n">inbufferarray</span><span class="p">,</span> <span class="k">ref</span> <span class="n">DSP_BUFFER_ARRAY</span> <span class="n">outbufferarray</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">inputsidle</span><span class="p">,</span> <span class="n">DSP_PROCESS_OPERATION</span> <span class="n">op</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">op</span> <span class="p">==</span> <span class="n">DSP_PROCESS_OPERATION</span><span class="p">.</span><span class="n">PROCESS_QUERY</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">inbufferarray</span><span class="p">.</span><span class="n">numchannels</span> <span class="p">!=</span> <span class="n">outbufferarray</span><span class="p">.</span><span class="n">numchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">ERR_DSP_SILENCE</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">inputsidle</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">ERR_DSP_DONTPROCESS</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">op</span> <span class="p">==</span> <span class="n">DSP_PROCESS_OPERATION</span><span class="p">.</span><span class="n">PROCESS_PERFORM</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">int</span> <span class="n">numchannels</span> <span class="p">=</span> <span class="n">outbufferarray</span><span class="p">.</span><span class="n">numchannels</span><span class="p">;</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">input</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">];</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">output</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">];</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">inbufferarray</span><span class="p">.</span><span class="n">buffer</span><span class="p">,</span> <span class="n">input</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">);</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">sample</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">sample</span> <span class="p"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">channel</span> <span class="p"><</span> <span class="n">numchannels</span><span class="p">;</span> <span class="n">channel</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">numchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">=</span> <span class="n">input</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">numchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">*</span> <span class="m">0.5f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">outbufferarray</span><span class="p">.</span><span class="n">buffer</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">numchannels</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="enum" id="fmod_dsp_process_operation"><a href="#fmod_dsp_process_operation">FMOD_DSP_PROCESS_OPERATION</a></h2>
|
|
<p>Process operation type.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="n">FMOD_DSP_PROCESS_OPERATION</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PROCESS_PERFORM</span><span class="p">,</span>
|
|
<span class="n">FMOD_DSP_PROCESS_QUERY</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_PROCESS_OPERATION</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">enum</span> <span class="n">DSP_PROCESS_OPERATION</span>
|
|
<span class="p">{</span>
|
|
<span class="n">PROCESS_PERFORM</span> <span class="p">=</span> <span class="m">0</span><span class="p">,</span>
|
|
<span class="n">PROCESS_QUERY</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt id="fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</dt>
|
|
<dd>Process the incoming audio in <code>inbufferarray</code> and output to <code>outbufferarray</code>.</dd>
|
|
<dt id="fmod_dsp_process_query">FMOD_DSP_PROCESS_QUERY</dt>
|
|
<dd>The <a href="glossary.html#dsp">DSP</a> is being queried for the expected output format and whether it needs to process audio or should be bypassed. The function should return <a class="apilink" href="core-api-common.html#fmod_ok">FMOD_OK</a>, or <a class="apilink" href="core-api-common.html#fmod_err_dsp_dontprocess">FMOD_ERR_DSP_DONTPROCESS</a> or <a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> if audio can pass through unprocessed. See remarks for more. If audio is to be processed, <code>outbufferarray</code> must be filled with the expected output format, channel count and mask.</dd>
|
|
</dl>
|
|
<p>A process callback will be called twice per mix for a DSP unit. Once with the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_query">FMOD_DSP_PROCESS_QUERY</a> command, then conditionally, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a>.</p>
|
|
<p><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_query">FMOD_DSP_PROCESS_QUERY</a> is to be handled only by filling out the <code>outbufferarray</code> information, and returning a relevant return code.</p>
|
|
<p>It should not really do any logic besides checking and returning one of the following codes:</p>
|
|
<ul>
|
|
<li>
|
|
<p><a class="apilink" href="core-api-common.html#fmod_ok">FMOD_OK</a> - Meaning yes, it should execute the DSP process function with <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a></p>
|
|
</li>
|
|
<li>
|
|
<p><a class="apilink" href="core-api-common.html#fmod_err_dsp_dontprocess">FMOD_ERR_DSP_DONTPROCESS</a> - Meaning no, it should skip the process function and not call it with <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a>.</p>
|
|
</li>
|
|
<li>
|
|
<p><a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> - Meaning no, it should skip the process function and not call it with <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a>, AND, tell the <a href="glossary.html#signal">signal</a> chain to follow that it is now idle, so that no more processing happens down the chain.</p>
|
|
</li>
|
|
</ul>
|
|
<p>If audio is to be processed, <code>outbufferarray</code> must be filled with the expected output format, channel count and mask. Mask can be 0.</p>
|
|
<p><a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_perform">FMOD_DSP_PROCESS_PERFORM</a> is to be handled by reading the data from the input, processing it, and writing it to the output. Always write to the output buffer and fill it fully to avoid unpredictable audio output.</p>
|
|
<p>Always return <a class="apilink" href="core-api-common.html#fmod_ok">FMOD_OK</a>, the return value is ignored from the process stage.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_read_callback"><a href="#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> read callback.</p>
|
|
<p>This callback receives an input <a href="glossary.html#signal">signal</a> and allows the user of the plug-in to filter or process the data and write it to the output.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_READ_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">inbuffer</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">outbuffer</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="o">*</span><span class="n">outchannels</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_READ_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">inbuffer</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">outbuffer</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">int</span> <span class="n">outchannels</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_READ_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">inbuffer</span><span class="p">,</span>
|
|
<span class="nx">outbuffer</span><span class="p">,</span>
|
|
<span class="nx">length</span><span class="p">,</span>
|
|
<span class="nx">inchannels</span><span class="p">,</span>
|
|
<span class="nx">outchannels</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>inbuffer</dt>
|
|
<dd>Incoming floating point -1.0 to +1.0 ranged data. Data will be interleaved if <code>inchannels</code> is greater than 1.</dd>
|
|
<dt>outbuffer</dt>
|
|
<dd>Outgoing floating point -1.0 to +1.0 ranged data. The DSP writer must write to this pointer else there will be silence. Data must be interleaved if <code>outchannels</code> is greater than 1.</dd>
|
|
<dt>length</dt>
|
|
<dd>
|
|
<p>Length of the incoming and outgoing buffers.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>inchannels</dt>
|
|
<dd>Number of channels of interleaved PCM data in the <code>inbuffer</code> parameter. Example: 1 = mono, 2 = stereo, 6 = 5.1.</dd>
|
|
<dt>outchannels</dt>
|
|
<dd>Number of channels of interleaved PCM data in the <code>outbuffer</code> parameter. Example: 1 = mono, 2 = stereo, 6 = 5.1.</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>FMOD Mixer Thread. The callback is called automatically and periodically when the DSP engine updates. This callback is called regularly after the unit has been created, inserted into the <a href="glossary.html#dsp-graph">DSP graph</a>, and set to active by the user.</li>
|
|
</ul>
|
|
<p>For a read update to be called it would have to be enabled, and this is done with <a class="apilink" href="core-api-dsp.html#dsp_setactive">DSP::setActive</a>. If <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_adddsp">ChannelControl::addDSP</a> is used the unit is automatically set to active.</p>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>The range of -1 to 1 is a soft limit. In the case of the inbuffer it is not guaranteed to be in that range, and in the case of the outbuffer FMOD will accept values outside that range. However all values will be clamped to the range of -1 to 1 in the final mix.</p>
|
|
<p>This callback will not be called if the preceding <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a> is returning <a class="apilink" href="core-api-common.html#fmod_err_dsp_dontprocess">FMOD_ERR_DSP_DONTPROCESS</a>. Return <a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> if the <a href="glossary.html#effect">effect</a> is generating silence, so FMOD's mixer can optimize the signal path and not process it any more.</p>
|
|
<p>NOTE: Effects that do not stop processing via <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a> may keep the signal chain alive when it is not desirable to do so. <a href="glossary.html#fmod-studio">FMOD Studio</a> events may return that they are still playing when they should be stopped.</p>
|
|
<p><strong>Example:</strong></p>
|
|
<p>The following example demonstrates how to copy the input buffer to the output buffer at half volume inside a DSP read callback:</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">Read</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span> <span class="kt">float</span> <span class="o">*</span><span class="n">inbuffer</span><span class="p">,</span> <span class="kt">float</span> <span class="o">*</span><span class="n">outbuffer</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span> <span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span> <span class="kt">int</span> <span class="o">*</span><span class="n">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">sample</span> <span class="o"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">channel</span> <span class="o"><</span> <span class="n">inchannels</span><span class="p">;</span> <span class="n">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">outbuffer</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="o">*</span><span class="n">outchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">=</span> <span class="n">inbuffer</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="n">inchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">*</span> <span class="mf">0.5f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="na">[AOT.MonoPInvokeCallback(typeof(FMOD.DSP_READ_CALLBACK))]</span>
|
|
<span class="k">static</span> <span class="n">RESULT</span> <span class="nf">Read</span><span class="p">(</span><span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span> <span class="n">IntPtr</span> <span class="n">inbuffer</span><span class="p">,</span> <span class="n">IntPtr</span> <span class="n">outbuffer</span><span class="p">,</span> <span class="kt">uint</span> <span class="n">length</span><span class="p">,</span> <span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span> <span class="k">ref</span> <span class="kt">int</span> <span class="n">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">input</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">inchannels</span><span class="p">];</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">output</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">outchannels</span><span class="p">];</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">inbuffer</span><span class="p">,</span> <span class="n">input</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">inchannels</span><span class="p">);</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">sample</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">sample</span> <span class="p"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">channel</span> <span class="p"><</span> <span class="n">outchannels</span><span class="p">;</span> <span class="n">channel</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">outchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">=</span> <span class="n">input</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">outchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">*</span> <span class="m">0.5f</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">outbuffer</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">outchannels</span><span class="p">);</span>
|
|
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">Read</span><span class="p">(</span><span class="nx">dsp_state</span><span class="p">,</span> <span class="nx">inbuffer</span><span class="p">,</span> <span class="nx">outbuffer</span><span class="p">,</span> <span class="nx">length</span><span class="p">,</span> <span class="nx">inchannels</span><span class="p">,</span> <span class="nx">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">sample</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">channel</span> <span class="o"><</span> <span class="nx">outchannels</span><span class="p">;</span> <span class="nx">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kd">let</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">getValue</span><span class="p">(</span><span class="nx">inbuffer</span> <span class="o">+</span> <span class="p">(((</span><span class="nx">sample</span> <span class="o">*</span> <span class="nx">inchannels</span><span class="p">)</span> <span class="o">+</span> <span class="nx">channel</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span><span class="p">),</span> <span class="s1">'float'</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.5</span><span class="p">;</span>
|
|
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">setValue</span><span class="p">(</span><span class="nx">outbuffer</span> <span class="o">+</span> <span class="p">(((</span><span class="nx">sample</span> <span class="o">*</span> <span class="nx">outchannels</span><span class="p">)</span> <span class="o">+</span> <span class="nx">channel</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span><span class="p">),</span> <span class="nx">val</span><span class="p">,</span> <span class="s1">'float'</span><span class="p">);</span>
|
|
<span class="nx">dsp_state</span><span class="p">.</span><span class="nx">plugindata</span><span class="p">.</span><span class="nx">buffer</span><span class="p">[(</span><span class="nx">sample</span> <span class="o">*</span> <span class="nx">outchannels</span><span class="p">)</span> <span class="o">+</span> <span class="nx">channel</span><span class="p">]</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="core-api-dsp.html#dsp_setactive">DSP::setActive</a>, <a class="apilink" href="core-api-common.html#fmod_result">FMOD_RESULT</a></p>
|
|
<h2 api="callback" id="fmod_dsp_realloc_func"><a href="#fmod_dsp_realloc_func">FMOD_DSP_REALLOC_FUNC</a></h2>
|
|
<p>Function to reallocate memory using the FMOD memory system.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="kt">void</span> <span class="o">*</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_REALLOC_FUNC</span><span class="p">(</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">FMOD_MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">IntPtr</span> <span class="nf">DSP_REALLOC_FUNC</span><span class="p">(</span>
|
|
<span class="n">IntPtr</span> <span class="n">ptr</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">size</span><span class="p">,</span>
|
|
<span class="n">MEMORY_TYPE</span> <span class="n">type</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">sourcestr</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt>ptr</dt>
|
|
<dd>Memory location to reallocate.</dd>
|
|
<dt>size</dt>
|
|
<dd>
|
|
<p>Allocation size.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Bytes</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>type</dt>
|
|
<dd>Memory allocation type. (<a class="apilink" href="core-api-common.html#fmod_memory_type">FMOD_MEMORY_TYPE</a>)</dd>
|
|
<dt>sourcestr</dt>
|
|
<dd>String with the FMOD source code filename and line number in it. Only valid in logging versions of FMOD. (<a href="glossary.html#string-format">UTF-8 string</a>)</dd>
|
|
</dl>
|
|
<div class="admonition language-csharp">
|
|
<p>The 'sourcestr' argument can be used via <code>StringWrapper</code> by using <code>FMOD.StringWrapper sourceStr = new FMOD.StringWrapper(sourcestr);</code></p>
|
|
</div>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This function is a wrapper used by the system level allocator and can be called from any DSP instance. Returns a pointer to a region of reallocated memory, or 0 on a failure.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_alloc_func">FMOD_DSP_ALLOC_FUNC</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_free_func">FMOD_DSP_FREE_FUNC</a></p>
|
|
<h2 api="callback" id="fmod_dsp_release_callback"><a href="#fmod_dsp_release_callback">FMOD_DSP_RELEASE_CALLBACK</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> release callback.</p>
|
|
<p>This callback is called when the user of the plug-in releases a DSP unit instance.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_RELEASE_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_RELEASE_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_RELEASE_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread / FMOD Mixer Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_release">DSP::release</a> or internal FMOD functions.</li>
|
|
</ul>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>This callback is typically used to free any resources allocated during the course of the lifetime of the DSP instance or perform any shut down code needed to clean up the DSP unit.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_create_callback">FMOD_DSP_CREATE_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_reset_callback"><a href="#fmod_dsp_reset_callback">FMOD_DSP_RESET_CALLBACK</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> reset callback.</p>
|
|
<p>This callback function is called to allow a <a href="glossary.html#dsp-effect">DSP effect</a> to reset its internal state.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_RESET_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_RESET_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_RESET_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread / FMOD Mixer Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_reset">DSP::reset</a> or internal FMOD functions.</li>
|
|
</ul>
|
|
<p>This callback is called on all plug-ins inside an event whenever the event is started (for example by <a class="apilink" href="studio-api-eventinstance.html#studio_eventinstance_start">Studio::EventInstance::start</a>).</p>
|
|
<p>It is also useful if (for example) an <a href="glossary.html#effect">effect</a> is still holding audio data for a sound that has stopped, and is being relocated to a new sound. Resetting the unit would clear any buffers and get it ready for new sound data.</p>
|
|
<p>Note that this callback should not change any public parameters that are exposed via <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description_paramdesc">FMOD_DSP_DESCRIPTION::paramdesc</a>, but should instead reset the internal state to match the public parameter values.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_setparam_bool_callback"><a href="#fmod_dsp_setparam_bool_callback">FMOD_DSP_SETPARAM_BOOL_CALLBACK</a></h2>
|
|
<p>Set boolean parameter callback.</p>
|
|
<p>This callback is called when the user of the plug-in wants to set a boolean parameter for a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SETPARAM_BOOL_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SETPARAM_BOOL_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">bool</span> <span class="k">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SETPARAM_BOOL_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value</dt>
|
|
<dd>
|
|
<p>Parameter value.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_setparameterbool">DSP::setParameterBool</a>. Parameter setters are not thread safe and you will need to handle synchronization between parameter setters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_getparameterbool">DSP::getParameterBool</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_bool_callback">FMOD_DSP_GETPARAM_BOOL_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_setparam_data_callback"><a href="#fmod_dsp_setparam_data_callback">FMOD_DSP_SETPARAM_DATA_CALLBACK</a></h2>
|
|
<p>Set data parameter callback.</p>
|
|
<p>This callback is called when the user of the plug-in wants to set a binary data parameter for a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SETPARAM_DATA_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SETPARAM_DATA_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="n">IntPtr</span> <span class="n">data</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">length</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SETPARAM_DATA_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">data</span><span class="p">,</span>
|
|
<span class="nx">length</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>data</dt>
|
|
<dd>Parameter data. Binary data the size of <code>length</code> parameter.</dd>
|
|
<dt>length <span><a class="token" href="glossary.html#documentation-conventions" title="Optional">Opt</a></span></dt>
|
|
<dd>
|
|
<p>Size of the binary <code>data</code> parameter.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Bytes</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p>Certain data types are predefined by the system and can be specified via the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_desc_data">FMOD_DSP_PARAMETER_DESC_DATA</a>, see <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_parameter_data_type">FMOD_DSP_PARAMETER_DATA_TYPE</a></p>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_setparameterdata">DSP::setParameterData</a>. Parameter setters are not thread safe and you will need to handle synchronization between parameter setters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_getparameterdata">DSP::getParameterData</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_data_callback">FMOD_DSP_GETPARAM_DATA_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_setparam_float_callback"><a href="#fmod_dsp_setparam_float_callback">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</a></h2>
|
|
<p>Set float parameter callback.</p>
|
|
<p>This callback is called when the user wants to set a float parameter for a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">float</span> <span class="n">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SETPARAM_FLOAT_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="k">ref</span> <span class="kt">float</span> <span class="k">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SETPARAM_FLOAT_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value</dt>
|
|
<dd>Parameter value.</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_setparameterfloat">DSP::setParameterFloat</a>. Parameter setters are not thread safe and you will need to handle synchronization between parameter setters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<p>Range checking is not needed. FMOD will clamp the incoming value to the specified min/max.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_getparameterfloat">DSP::getParameterFloat</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_float_callback">FMOD_DSP_GETPARAM_FLOAT_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_setparam_int_callback"><a href="#fmod_dsp_setparam_int_callback">FMOD_DSP_SETPARAM_INT_CALLBACK</a></h2>
|
|
<p>Set integer parameter callback.</p>
|
|
<p>This callback is called when the user of the plug-in wants to set an integer parameter for a <a href="glossary.html#dsp">DSP unit</a>.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SETPARAM_INT_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SETPARAM_INT_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">index</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="k">value</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SETPARAM_INT_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">index</span><span class="p">,</span>
|
|
<span class="nx">value</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>index</dt>
|
|
<dd>Parameter index.</dd>
|
|
<dt>value</dt>
|
|
<dd>Parameter value.</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>. Parameter setters are not thread safe and you will need to handle synchronization between parameter setters and any other callbacks that access those parameters, i.e <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_process_callback">FMOD_DSP_PROCESS_CALLBACK</a>.</li>
|
|
</ul>
|
|
<p>Range checking is not needed. FMOD will clamp the incoming value to the specified min/max.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="core-api-dsp.html#dsp_setparameterint">DSP::setParameterInt</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getparam_int_callback">FMOD_DSP_GETPARAM_INT_CALLBACK</a></p>
|
|
<h2 api="callback" id="fmod_dsp_setposition_callback"><a href="#fmod_dsp_setposition_callback">FMOD_DSP_SETPOSITION_CALLBACK</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> set position callback.</p>
|
|
<p>This callback is called when the user of the plug-in wants to set a PCM position for a DSP.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SETPOSITION_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">pos</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SETPOSITION_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">pos</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SETPOSITION_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">pos</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>pos</dt>
|
|
<dd>
|
|
<p>Target position in the audio signal. (<a class="apilink" href="core-api-common.html#fmod_timeunit_pcm">FMOD_TIMEUNIT_PCM</a>).</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-channel.html#channel_setposition">Channel::setPosition</a> on a <a class="apilink" href="core-api-channel.html">Channel</a> created with <a class="apilink" href="core-api-system.html#system_playdsp">System::playDSP</a>.</li>
|
|
</ul>
|
|
<p>This callback is typically used for DSP units that behave as an audio signal with a relative position. This type of callback is only called if the DSP has been played with <a class="apilink" href="core-api-system.html#system_playdsp">System::playDSP</a>.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_shouldiprocess_callback"><a href="#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> 'should I process?' callback.</p>
|
|
<p>This callback is called to allow you to tell the FMOD mixer whether the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a> callback should be called or not. This can be used as an optimization to reduce CPU overhead.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SHOULDIPROCESS_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="n">FMOD_BOOL</span> <span class="n">inputsidle</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="n">FMOD_CHANNELMASK</span> <span class="n">inmask</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">speakermode</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SHOULDIPROCESS_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">bool</span> <span class="n">inputsidle</span><span class="p">,</span>
|
|
<span class="kt">uint</span> <span class="n">length</span><span class="p">,</span>
|
|
<span class="n">CHANNELMASK</span> <span class="n">inmask</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span>
|
|
<span class="n">SPEAKERMODE</span> <span class="n">speakermode</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SHOULDIPROCESS_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">inputsidle</span><span class="p">,</span>
|
|
<span class="nx">length</span><span class="p">,</span>
|
|
<span class="nx">inmask</span><span class="p">,</span>
|
|
<span class="nx">inchannels</span><span class="p">,</span>
|
|
<span class="nx">speakermode</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>DSP plug-in state. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>inputsidle</dt>
|
|
<dd>
|
|
<p>This is true if no audio is being fed to this unit.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Boolean</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>length</dt>
|
|
<dd>
|
|
<p>Length of the incoming and outgoing buffer.</p>
|
|
<ul>
|
|
<li><span class="label">Units:</span> Samples</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>inmask</dt>
|
|
<dd>Deprecated. (<a class="apilink" href="core-api-common.html#fmod_channelmask">FMOD_CHANNELMASK</a>)</dd>
|
|
<dt>inchannels</dt>
|
|
<dd>Number of input channels.</dd>
|
|
<dt>speakermode</dt>
|
|
<dd>Speakermode that corresponds to the channel count and channel mask. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>FMOD Mixer Thread. The callback is called automatically and periodically when the DSP engine updates.</li>
|
|
</ul>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>An example of an <a href="glossary.html#effect">effect</a> that would continue processing silence would be an <a href="effects-reference.html#echo">echo</a> or <a href="effects-reference.html#sfx-reverb">reverb effect</a> that needs to play a tail sound until it fades out to silence. At that point it could return <a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> as well.</p>
|
|
<p>Typically inmask and speakermode parameters are not important to a plug-in unless it cares about speaker positioning. If it processes any data regardless of channel format coming in, it can safely ignore these two parameters.</p>
|
|
<p>If the effect produces silence such as when it is receiving no <a href="glossary.html#signal">signal</a>, then <a class="apilink" href="core-api-common.html#fmod_err_dsp_silence">FMOD_ERR_DSP_SILENCE</a> can be returned in the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_shouldiprocess_callback">FMOD_DSP_SHOULDIPROCESS_CALLBACK</a> callback. If the effect does not modify the sound in any way with the current effect parameter settings, then <a class="apilink" href="core-api-common.html#fmod_err_dsp_dontprocess">FMOD_ERR_DSP_DONTPROCESS</a> can be returned.<br />
|
|
Either of these return values will cause FMOD's mixer to skip the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a> callback.</p>
|
|
<p><strong>NOTE</strong>: Effects that do not stop processing may keep the signal chain alive when it is not desirable. In the case of <a href="glossary.html#fmod-studio">FMOD Studio</a>, it may result in events that keep playing indefinitely.</p>
|
|
<p>The following code can be used for <a href="glossary.html#dsp-effect">DSP effects</a> that have no tail:</p>
|
|
<div class="highlight language-c"><pre><span></span><span class="k">static</span> <span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">shouldIProcess</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">inputsidle</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span> <span class="n">FMOD_CHANNELMASK</span> <span class="n">inmask</span><span class="p">,</span> <span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span> <span class="n">FMOD_SPEAKERMODE</span> <span class="n">speakermode</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">inputsidle</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="n">FMOD_ERR_DSP_SILENCE</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_read_callback">FMOD_DSP_READ_CALLBACK</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="core-api-common.html#fmod_result">FMOD_RESULT</a></p>
|
|
<h2 api="struct" id="fmod_dsp_state"><a href="#fmod_dsp_state">FMOD_DSP_STATE</a></h2>
|
|
<p><a href="glossary.html#dsp">DSP</a> plug-in structure that is passed into each callback.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_STATE</span> <span class="p">{</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">instance</span><span class="p">;</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">plugindata</span><span class="p">;</span>
|
|
<span class="n">FMOD_CHANNELMASK</span> <span class="n">channelmask</span><span class="p">;</span>
|
|
<span class="n">FMOD_SPEAKERMODE</span> <span class="n">source_speakermode</span><span class="p">;</span>
|
|
<span class="kt">float</span> <span class="o">*</span><span class="n">sidechaindata</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">sidechainchannels</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_STATE_FUNCTIONS</span> <span class="o">*</span><span class="n">functions</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">systemobject</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_STATE</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_STATE</span>
|
|
<span class="p">{</span>
|
|
<span class="n">IntPtr</span> <span class="n">instance</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">plugindata</span><span class="p">;</span>
|
|
<span class="kt">uint</span> <span class="n">channelmask</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">source_speakermode</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">sidechaindata</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">sidechainchannels</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">functions</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">systemobject</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD_DSP_STATE</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">instance</span><span class="p">,</span>
|
|
<span class="nx">plugindata</span><span class="p">,</span>
|
|
<span class="nx">channelmask</span><span class="p">,</span>
|
|
<span class="nx">source_speakermode</span><span class="p">,</span>
|
|
<span class="nx">sidechaindata</span><span class="p">,</span>
|
|
<span class="nx">sidechainchannels</span><span class="p">,</span>
|
|
<span class="nx">functions</span><span class="p">,</span>
|
|
<span class="nx">systemobject</span><span class="p">,</span>
|
|
<span class="p">};</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_state_instance">instance <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Internal instance pointer.</dd>
|
|
<dt id="fmod_dsp_state_plugindata">plugindata</dt>
|
|
<dd>Data that the plug-in writer wants to attach to this object.</dd>
|
|
<dt id="fmod_dsp_state_channelmask">channelmask <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Specifies which speakers the <a href="glossary.html#dsp-effect">DSP effect</a> is active on. (<a class="apilink" href="core-api-common.html#fmod_channelmask">FMOD_CHANNELMASK</a>)</dd>
|
|
<dt id="fmod_dsp_state_source_speakermode">source_speakermode <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Specifies which speaker mode the <a href="glossary.html#signal">signal</a> originated. (<a class="apilink" href="core-api-common.html#fmod_speakermode">FMOD_SPEAKERMODE</a>)</dd>
|
|
<dt id="fmod_dsp_state_sidechaindata">sidechaindata <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Sidechain mix result.</dd>
|
|
<dt id="fmod_dsp_state_sidechainchannels">sidechainchannels <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Number of channels in the sidechain buffer.</dd>
|
|
<dt id="dsp_state_functions" idoverride="dsp_state_functions">functions <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Struct containing functions to give plug-in developers the ability to query system state and access system level functionality and helpers. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a>)</dd>
|
|
<dt id="fmod_dsp_state_systemobject">systemobject <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>FMOD::System object index, relating to the System object that created this DSP.</dd>
|
|
</dl>
|
|
<p>'systemobject' is an integer associated with the system object that created the DSP or registered the DSP plug-in. If there is only one system object, this integer is always 0. If the DSP was created or registered by a second system object, the integer would be 1, and so on.<br />
|
|
FMOD_DSP_STATE_FUNCTIONS::getsamplerate/getblocksize/getspeakermode could return different results, so it could be relevant to plug-in developers who want to monitor which object is being used.</p>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>Unlike <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description_userdata">FMOD_DSP_DESCRIPTION::userdata</a>, <code>plugindata</code> cannot be written to by the user, and is an ideal place to store the plug-in's state. The recommended pattern is to create the <code>plugindata</code> inside the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_create_callback">FMOD_DSP_CREATE_CALLBACK</a>, free it inside the <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_release_callback">FMOD_DSP_RELEASE_CALLBACK</a>.</p>
|
|
<p>Here is an example of a simple oscillator that uses the <code>plugindata</code> to store the state required to generate a sine wave.</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="cp">#define TWO_PI (2.0f * 3.14159265358979323846f)</span>
|
|
|
|
<span class="k">typedef</span> <span class="k">struct</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">step</span><span class="p">[</span><span class="mi">16</span><span class="p">];</span>
|
|
<span class="p">}</span> <span class="n">dsp_data</span><span class="p">;</span>
|
|
|
|
<span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">Read</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span> <span class="kt">float</span> <span class="o">*</span><span class="n">inbuffer</span><span class="p">,</span> <span class="kt">float</span> <span class="o">*</span><span class="n">outbuffer</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">length</span><span class="p">,</span> <span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span> <span class="kt">int</span> <span class="o">*</span><span class="n">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">dsp_data</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">dsp_data</span> <span class="o">*</span><span class="p">)</span><span class="n">dsp_state</span><span class="o">-></span><span class="n">plugindata</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">samplerate</span><span class="p">;</span>
|
|
<span class="n">dsp_state</span><span class="o">-></span><span class="n">functions</span><span class="o">-></span><span class="n">getsamplerate</span><span class="p">(</span><span class="n">dsp_state</span><span class="p">,</span> <span class="o">&</span><span class="n">samplerate</span><span class="p">);</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">sample</span> <span class="o"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">channel</span> <span class="o"><</span> <span class="n">inchannels</span><span class="p">;</span> <span class="n">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">outbuffer</span><span class="p">[</span><span class="n">sample</span> <span class="o">*</span> <span class="o">*</span><span class="n">outchannels</span> <span class="o">+</span> <span class="n">channel</span><span class="p">]</span> <span class="o">=</span> <span class="n">sinf</span><span class="p">((</span><span class="mf">440.0f</span> <span class="o">*</span> <span class="n">TWO_PI</span> <span class="o">*</span> <span class="n">data</span><span class="o">-></span><span class="n">step</span><span class="p">[</span><span class="n">channel</span><span class="p">]</span><span class="o">++</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">samplerate</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">Create</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">dsp_data</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">dsp_data</span> <span class="o">*</span><span class="p">)</span><span class="n">calloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">dsp_data</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="n">FMOD_ERR_MEMORY</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="n">memset</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">data</span><span class="p">));</span>
|
|
<span class="n">dsp_state</span><span class="o">-></span><span class="n">plugindata</span> <span class="o">=</span> <span class="n">data</span><span class="p">;</span>
|
|
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">Release</span><span class="p">(</span><span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">dsp_state</span><span class="o">-></span><span class="n">plugindata</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">dsp_data</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">dsp_data</span> <span class="o">*</span><span class="p">)</span><span class="n">dsp_state</span><span class="o">-></span><span class="n">plugindata</span><span class="p">;</span>
|
|
<span class="n">free</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">FMOD_OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">class</span> <span class="nc">dsp_data</span>
|
|
<span class="p">{</span>
|
|
<span class="k">public</span> <span class="kt">uint</span><span class="p">[]</span> <span class="n">step</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="na">[AOT.MonoPInvokeCallback(typeof(FMOD.DSP_READ_CALLBACK))]</span>
|
|
<span class="k">static</span> <span class="n">RESULT</span> <span class="nf">CaptureDSPReadCallback</span><span class="p">(</span><span class="k">ref</span> <span class="n">FMOD</span><span class="p">.</span><span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span> <span class="n">IntPtr</span> <span class="n">inbuffer</span><span class="p">,</span> <span class="n">IntPtr</span> <span class="n">outbuffer</span><span class="p">,</span> <span class="kt">uint</span> <span class="n">length</span><span class="p">,</span> <span class="kt">int</span> <span class="n">inchannels</span><span class="p">,</span> <span class="k">ref</span> <span class="kt">int</span> <span class="n">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">input</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">inchannels</span><span class="p">];</span>
|
|
<span class="kt">float</span><span class="p">[]</span> <span class="n">output</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">length</span> <span class="p">*</span> <span class="n">outchannels</span><span class="p">];</span>
|
|
|
|
<span class="n">GCHandle</span> <span class="n">dataHandle</span> <span class="p">=</span> <span class="n">GCHandle</span><span class="p">.</span><span class="n">FromIntPtr</span><span class="p">(</span><span class="n">dsp_state</span><span class="p">.</span><span class="n">plugindata</span><span class="p">);</span>
|
|
<span class="n">dsp_data</span> <span class="n">data</span> <span class="p">=</span> <span class="n">dataHandle</span><span class="p">.</span><span class="n">Target</span> <span class="k">as</span> <span class="n">dsp_data</span><span class="p">;</span>
|
|
|
|
<span class="kt">int</span> <span class="n">samplerate</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
|
|
<span class="n">dsp_state</span><span class="p">.</span><span class="n">functions</span><span class="p">.</span><span class="n">getsamplerate</span><span class="p">(</span><span class="k">ref</span> <span class="n">dsp_state</span><span class="p">,</span> <span class="k">ref</span> <span class="n">samplerate</span><span class="p">);</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">sample</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">sample</span> <span class="p"><</span> <span class="n">length</span><span class="p">;</span> <span class="n">sample</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">channel</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">channel</span> <span class="p"><</span> <span class="n">outchannels</span><span class="p">;</span> <span class="n">channel</span><span class="p">++)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">output</span><span class="p">[</span><span class="n">sample</span> <span class="p">*</span> <span class="n">outchannels</span> <span class="p">+</span> <span class="n">channel</span><span class="p">]</span> <span class="p">=</span> <span class="n">MathF</span><span class="p">.</span><span class="n">Sin</span><span class="p">((</span><span class="m">440.0f</span> <span class="p">*</span> <span class="n">MathF</span><span class="p">.</span><span class="n">PI</span> <span class="p">*</span> <span class="m">2</span> <span class="p">*</span> <span class="n">data</span><span class="p">.</span><span class="n">step</span><span class="p">[</span><span class="n">channel</span><span class="p">]++)</span> <span class="p">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">samplerate</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">Marshal</span><span class="p">.</span><span class="n">Copy</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">outbuffer</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">length</span> <span class="p">*</span> <span class="n">outchannels</span><span class="p">);</span>
|
|
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="na">[AOT.MonoPInvokeCallback(typeof(FMOD.DSP_CREATE_CALLBACK))]</span>
|
|
<span class="k">static</span> <span class="n">RESULT</span> <span class="nf">CaptureDSPCreateCallback</span><span class="p">(</span><span class="k">ref</span> <span class="n">FMOD</span><span class="p">.</span><span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">dsp_data</span> <span class="n">data</span> <span class="p">=</span> <span class="k">new</span> <span class="n">dsp_data</span><span class="p">();</span>
|
|
<span class="n">data</span><span class="p">.</span><span class="n">step</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">uint</span><span class="p">[</span><span class="m">16</span><span class="p">];</span>
|
|
<span class="n">dsp_state</span><span class="p">.</span><span class="n">plugindata</span> <span class="p">=</span> <span class="n">GCHandle</span><span class="p">.</span><span class="n">ToIntPtr</span><span class="p">(</span><span class="n">GCHandle</span><span class="p">.</span><span class="n">Alloc</span><span class="p">(</span><span class="n">data</span><span class="p">));</span>
|
|
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="na">[AOT.MonoPInvokeCallback(typeof(FMOD.DSP_RELEASE_CALLBACK))]</span>
|
|
<span class="k">static</span> <span class="n">RESULT</span> <span class="nf">CaptureDSPReleaseCallback</span><span class="p">(</span><span class="k">ref</span> <span class="n">FMOD</span><span class="p">.</span><span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="n">GCHandle</span><span class="p">.</span><span class="n">FromIntPtr</span><span class="p">(</span><span class="n">dsp_state</span><span class="p">.</span><span class="n">plugindata</span><span class="p">).</span><span class="n">Free</span><span class="p">();</span>
|
|
|
|
<span class="k">return</span> <span class="n">RESULT</span><span class="p">.</span><span class="n">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">Read</span><span class="p">(</span><span class="nx">dsp_state</span><span class="p">,</span> <span class="nx">inbuffer</span><span class="p">,</span> <span class="nx">outbuffer</span><span class="p">,</span> <span class="nx">length</span><span class="p">,</span> <span class="nx">inchannels</span><span class="p">,</span> <span class="nx">outchannels</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kd">let</span> <span class="nx">outval</span> <span class="o">=</span> <span class="p">{};</span>
|
|
<span class="nx">result</span> <span class="o">=</span> <span class="nx">dsp_state</span><span class="p">.</span><span class="nx">functions</span><span class="p">.</span><span class="nx">getsamplerate</span><span class="p">(</span><span class="nx">dsp_state</span><span class="p">,</span> <span class="nx">outval</span><span class="p">);</span>
|
|
<span class="nx">CHECK_RESULT</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
|
|
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">sample</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">sample</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">sample</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">channel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">channel</span> <span class="o"><</span> <span class="nx">outchannels</span><span class="p">;</span> <span class="nx">channel</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="kd">let</span> <span class="nx">val</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">((</span><span class="mf">440.0</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span> <span class="o">*</span> <span class="nx">dsp_state</span><span class="p">.</span><span class="nx">plugindata</span><span class="p">.</span><span class="nx">step</span><span class="p">[</span><span class="nx">channel</span><span class="p">]</span><span class="o">++</span><span class="p">)</span> <span class="o">/</span> <span class="nx">outval</span><span class="p">.</span><span class="nx">val</span><span class="p">);</span>
|
|
<span class="nx">FMOD</span><span class="p">.</span><span class="nx">setValue</span><span class="p">(</span><span class="nx">outbuffer</span> <span class="o">+</span> <span class="p">(((</span><span class="nx">sample</span> <span class="o">*</span> <span class="nx">outchannels</span><span class="p">)</span> <span class="o">+</span> <span class="nx">channel</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span><span class="p">),</span> <span class="nx">val</span><span class="p">,</span> <span class="s1">'float'</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="kd">function</span> <span class="nx">Create</span><span class="p">(</span><span class="nx">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">dsp_state</span><span class="p">.</span><span class="nx">plugindata</span> <span class="o">=</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">step</span><span class="o">:</span> <span class="p">[]</span>
|
|
<span class="p">};</span>
|
|
<span class="k">for</span><span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="mi">16</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">dsp_state</span><span class="p">.</span><span class="nx">plugindata</span><span class="p">.</span><span class="nx">step</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="kd">function</span> <span class="nx">Release</span><span class="p">(</span><span class="nx">dsp_state</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="c1">// No need to clean up memory in js</span>
|
|
<span class="k">return</span> <span class="nx">FMOD</span><span class="p">.</span><span class="nx">OK</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a></p>
|
|
<h2 api="struct" id="fmod_dsp_state_dft_functions"><a href="#fmod_dsp_state_dft_functions">FMOD_DSP_STATE_DFT_FUNCTIONS</a></h2>
|
|
<p>Struct containing DFT functions to enable a plug-in to perform optimized time-frequency domain conversion.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_STATE_DFT_FUNCTIONS</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_DFT_FFTREAL_FUNC</span> <span class="n">fftreal</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_DFT_IFFTREAL_FUNC</span> <span class="n">inversefftreal</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_STATE_DFT_FUNCTIONS</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_STATE_DFT_FUNCTIONS</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_DFT_FFTREAL_FUNC</span> <span class="n">fftreal</span><span class="p">;</span>
|
|
<span class="n">DSP_DFT_IFFTREAL_FUNC</span> <span class="n">inversefftreal</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt id="fmod_dsp_state_dft_functions_fftreal">fftreal <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function for performing an FFT on a real <a href="glossary.html#signal">signal</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_fftreal_func">FMOD_DSP_DFT_FFTREAL_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_dft_functions_inversefftreal">inversefftreal <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function for performing an inverse FFT to get a real signal. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_dft_ifftreal_func">FMOD_DSP_DFT_IFFTREAL_FUNC</a>)</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>All function pointers will remain valid for the lifetime of the system.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a>, <a href="effects-reference.html#fft">FFT</a></p>
|
|
<h2 api="struct" id="fmod_dsp_state_functions"><a href="#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a></h2>
|
|
<p>Struct containing functions to give plug-in developers the ability to query system state and access system level functionality and helpers.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_STATE_FUNCTIONS</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_ALLOC_FUNC</span> <span class="n">alloc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_REALLOC_FUNC</span> <span class="n">realloc</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_FREE_FUNC</span> <span class="n">free</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETSAMPLERATE_FUNC</span> <span class="n">getsamplerate</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETBLOCKSIZE_FUNC</span> <span class="n">getblocksize</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_STATE_DFT_FUNCTIONS</span> <span class="o">*</span><span class="n">dft</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_STATE_PAN_FUNCTIONS</span> <span class="o">*</span><span class="n">pan</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETSPEAKERMODE_FUNC</span> <span class="n">getspeakermode</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETCLOCK_FUNC</span> <span class="n">getclock</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETLISTENERATTRIBUTES_FUNC</span> <span class="n">getlistenerattributes</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_LOG_FUNC</span> <span class="n">log</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_GETUSERDATA_FUNC</span> <span class="n">getuserdata</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_STATE_FUNCTIONS</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_STATE_FUNCTIONS</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_ALLOC_FUNC</span> <span class="n">alloc</span><span class="p">;</span>
|
|
<span class="n">DSP_REALLOC_FUNC</span> <span class="n">realloc</span><span class="p">;</span>
|
|
<span class="n">DSP_FREE_FUNC</span> <span class="n">free</span><span class="p">;</span>
|
|
<span class="n">DSP_GETSAMPLERATE_FUNC</span> <span class="n">getsamplerate</span><span class="p">;</span>
|
|
<span class="n">DSP_GETBLOCKSIZE_FUNC</span> <span class="n">getblocksize</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">dft</span><span class="p">;</span>
|
|
<span class="n">IntPtr</span> <span class="n">pan</span><span class="p">;</span>
|
|
<span class="n">DSP_GETSPEAKERMODE_FUNC</span> <span class="n">getspeakermode</span><span class="p">;</span>
|
|
<span class="n">DSP_GETCLOCK_FUNC</span> <span class="n">getclock</span><span class="p">;</span>
|
|
<span class="n">DSP_GETLISTENERATTRIBUTES_FUNC</span> <span class="n">getlistenerattributes</span><span class="p">;</span>
|
|
<span class="n">DSP_LOG_FUNC</span> <span class="n">log</span><span class="p">;</span>
|
|
<span class="n">DSP_GETUSERDATA_FUNC</span> <span class="n">getuserdata</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">DSP_STATE_FUNCTIONS</span>
|
|
<span class="p">{</span>
|
|
<span class="nx">getsamplerate</span><span class="p">,</span>
|
|
<span class="nx">getblocksize</span><span class="p">,</span>
|
|
<span class="nx">getspeakermode</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt id="fmod_dsp_state_functions_alloc">alloc <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to allocate memory using the FMOD memory system. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_alloc_func">FMOD_DSP_ALLOC_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_realloc">realloc <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to reallocate memory using the FMOD memory system. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_realloc_func">FMOD_DSP_REALLOC_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_free">free <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to free memory allocated with FMOD_DSP_ALLOC_FUNC. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_free_func">FMOD_DSP_FREE_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getsamplerate">getsamplerate <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to query the system sample rate. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getsamplerate_func">FMOD_DSP_GETSAMPLERATE_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getblocksize">getblocksize <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to query the system block size. <a href="glossary.html#dsp">DSPs</a> are requested to process blocks of varying length up to this size. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getblocksize_func">FMOD_DSP_GETBLOCKSIZE_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_dft">dft <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Struct containing DFT functions to enable a plug-in to perform optimized time-frequency domain conversion. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_dft_functions">FMOD_DSP_STATE_DFT_FUNCTIONS</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_pan">pan <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Struct containing panning helper functions for spatialization plug-ins. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_pan_functions">FMOD_DSP_STATE_PAN_FUNCTIONS</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getspeakermode">getspeakermode <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to query the system speaker modes. One is the mixer's default speaker mode, the other is the output mode the system is downmixing or upmixing to. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getspeakermode_func">FMOD_DSP_GETSPEAKERMODE_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getclock">getclock <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to get the clock of the current DSP, as well as the subset of the input buffer that contains the <a href="glossary.html#signal">signal</a>. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getclock_func">FMOD_DSP_GETCLOCK_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getlistenerattributes">getlistenerattributes <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Callback for getting the absolute listener attributes set via the API (returned as left-handed coordinates). (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getlistenerattributes_func">FMOD_DSP_GETLISTENERATTRIBUTES_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_log">log <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to write to the FMOD logging system. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_log_func">FMOD_DSP_LOG_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_functions_getuserdata">getuserdata <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to get the user data attached to this DSP. See FMOD_DSP_DESCRIPTION::userdata. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_getuserdata_func">FMOD_DSP_GETUSERDATA_FUNC</a>)</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>All function pointers will remain valid for the lifetime of the system.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_dft_functions">FMOD_DSP_STATE_DFT_FUNCTIONS</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_pan_functions">FMOD_DSP_STATE_PAN_FUNCTIONS</a></p>
|
|
<h2 api="struct" id="fmod_dsp_state_pan_functions"><a href="#fmod_dsp_state_pan_functions">FMOD_DSP_STATE_PAN_FUNCTIONS</a></h2>
|
|
<p>Struct containing panning helper functions for spatialization plug-ins.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="k">typedef</span> <span class="k">struct</span> <span class="n">FMOD_DSP_STATE_PAN_FUNCTIONS</span> <span class="p">{</span>
|
|
<span class="n">FMOD_DSP_PAN_SUMMONOMATRIX_FUNC</span> <span class="n">summonomatrix</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC</span> <span class="n">sumstereomatrix</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC</span> <span class="n">sumsurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</span> <span class="n">summonotosurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</span> <span class="n">sumstereotosurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC</span> <span class="n">getrolloffgain</span><span class="p">;</span>
|
|
<span class="p">}</span> <span class="n">FMOD_DSP_STATE_PAN_FUNCTIONS</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">struct</span> <span class="nc">DSP_STATE_PAN_FUNCTIONS</span>
|
|
<span class="p">{</span>
|
|
<span class="n">DSP_PAN_SUMMONOMATRIX_FUNC</span> <span class="n">summonomatrix</span><span class="p">;</span>
|
|
<span class="n">DSP_PAN_SUMSTEREOMATRIX_FUNC</span> <span class="n">sumstereomatrix</span><span class="p">;</span>
|
|
<span class="n">DSP_PAN_SUMSURROUNDMATRIX_FUNC</span> <span class="n">sumsurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</span> <span class="n">summonotosurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</span> <span class="n">sumstereotosurroundmatrix</span><span class="p">;</span>
|
|
<span class="n">DSP_PAN_GETROLLOFFGAIN_FUNC</span> <span class="n">getrolloffgain</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-javascript">
|
|
<p>Not supported for JavaScript.</p>
|
|
</div>
|
|
<dl>
|
|
<dt id="fmod_dsp_state_pan_functions_summonomatrix">summonomatrix <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate a mono mix matrix scaled by the gain value. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_summonomatrix_func">FMOD_DSP_PAN_SUMMONOMATRIX_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_pan_functions_sumstereomatrix">sumstereomatrix <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate a stereo mix matrix with given pan and gain values. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumstereomatrix_func">FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_pan_functions_sumsurroundmatrix">sumsurroundmatrix <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate a surround mix matrix with the given positional information. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumsurroundmatrix_func">FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_pan_functions_summonotosurroundmatrix">summonotosurroundmatrix <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate a surround mix matrix for mono input signals. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_summonotosurroundmatrix_func">FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_pan_functions_sumstereotosurroundmatrix">sumstereotosurroundmatrix <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate a surround mix matrix for stereo input signals. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_sumstereotosurroundmatrix_func">FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC</a>)</dd>
|
|
<dt id="fmod_dsp_state_pan_functions_getrolloffgain">getrolloffgain <span><a class="token" href="glossary.html#documentation-conventions" title="Read-only">R/O</a></span></dt>
|
|
<dd>Function to calculate distance attenuation. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_getrolloffgain_func">FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC</a>)</dd>
|
|
</dl>
|
|
<p><strong>Implementation Detail:</strong></p>
|
|
<p>All function pointers will remain valid for the lifetime of the system.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state_functions">FMOD_DSP_STATE_FUNCTIONS</a>, <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_pan_surround_flags">FMOD_DSP_PAN_SURROUND_FLAGS</a>, <a class="apilink" href="core-api-channelcontrol.html#channelcontrol_setmixmatrix">ChannelControl::setMixMatrix</a></p>
|
|
<h2 api="callback" id="fmod_dsp_system_deregister_callback"><a href="#fmod_dsp_system_deregister_callback">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</a></h2>
|
|
<p>System level <a href="glossary.html#dsp">DSP</a> type deregister callback.</p>
|
|
<p>The callback is called as a one time deregistration of a DSP plug-in <em>type</em>, rather than of an individual DSP instance.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SYSTEM_DEREGISTER_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>A partially-valid DSP plug-in state object with a null instance pointer. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-system.html#system_unloadplugin">System::unloadPlugin</a>, <a class="apilink" href="core-api-system.html#system_close">System::close</a>, or <a class="apilink" href="core-api-system.html#system_release">System::release</a>.</li>
|
|
</ul>
|
|
<p>This callback is called after all instances of the plug-in type have been released.</p>
|
|
<p>The callback is not associated with any DSP instance, so the instance member of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a> will be 0 / NULL. Only 'systemobject' and 'callbacks' are valid for use.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_system_mix_callback"><a href="#fmod_dsp_system_mix_callback">FMOD_DSP_SYSTEM_MIX_CALLBACK</a></h2>
|
|
<p>System level DSP type mix callback.</p>
|
|
<p>The function can be used as a global pre/mid/post mix function for this <em>type</em> of <a href="glossary.html#dsp">DSP</a>, rather than of an individual DSP instance.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SYSTEM_MIX_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">stage</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SYSTEM_MIX_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span><span class="p">,</span>
|
|
<span class="kt">int</span> <span class="n">stage</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SYSTEM_MIX_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span><span class="p">,</span>
|
|
<span class="nx">stage</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>A partially-valid DSP plug-in state object with a null instance pointer. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
<dt>stage</dt>
|
|
<dd>0 = premix, or before the mixer has executed. 1 = postmix, or after the mix has been executed. 2 = midmix, after clocks calculation before the main mix has occurred.</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>FMOD Mixer Thread. The callback is called automatically and periodically when the DSP engine updates.</li>
|
|
</ul>
|
|
<p>The callback is not associated with any DSP instance, so the instance member of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a> will be 0 / NULL. Only 'systemobject' and 'callbacks' are valid for use.<br />
|
|
The callback is triggered automatically by the mixer and is not triggered by any API function.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="callback" id="fmod_dsp_system_register_callback"><a href="#fmod_dsp_system_register_callback">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</a></h2>
|
|
<p>System level DSP type registration callback.</p>
|
|
<p>The callback is called as a one time initialization to set up the DSP plug-in <em>type</em>, rather than of an individual <a href="glossary.html#dsp">DSP</a> instance.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="n">FMOD_RESULT</span> <span class="n">F_CALL</span> <span class="nf">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</span><span class="p">(</span>
|
|
<span class="n">FMOD_DSP_STATE</span> <span class="o">*</span><span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-csharp"><pre><span></span><span class="k">delegate</span> <span class="n">RESULT</span> <span class="nf">DSP_SYSTEM_REGISTER_CALLBACK</span>
|
|
<span class="p">(</span>
|
|
<span class="k">ref</span> <span class="n">DSP_STATE</span> <span class="n">dsp_state</span>
|
|
<span class="p">);</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="kd">function</span> <span class="nx">FMOD_DSP_SYSTEM_REGISTER_CALLBACK</span><span class="p">(</span>
|
|
<span class="nx">dsp_state</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
<dl>
|
|
<dt>dsp_state</dt>
|
|
<dd>A partially-valid DSP plug-in state object with a null instance pointer. (<a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a>)</dd>
|
|
</dl>
|
|
<p><strong>Invoked by:</strong></p>
|
|
<ul>
|
|
<li>User Thread. Triggered by user calling <a class="apilink" href="core-api-system.html#system_loadplugin">System::loadPlugin</a>, or <a class="apilink" href="core-api-system.html#system_registerdsp">System::registerDSP</a>.</li>
|
|
</ul>
|
|
<p>This callback is called before any instances of the plug-in type have been created.</p>
|
|
<p>The callback is not associated with any DSP instance, so the instance member of <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_state">FMOD_DSP_STATE</a> will be 0 / NULL. Only 'systemobject' and 'callbacks' are valid for use.</p>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p>
|
|
<h2 api="define" id="fmod_plugin_sdk_version"><a href="#fmod_plugin_sdk_version">FMOD_PLUGIN_SDK_VERSION</a></h2>
|
|
<p>The plug-in SDK version.</p>
|
|
<p>
|
|
<div class="language-selector">
|
|
<div class="language-tab" data-language="language-c">C</div>
|
|
<div class="language-tab" data-language="language-cpp">C++</div>
|
|
<div class="language-tab" data-language="language-csharp">C#</div>
|
|
<div class="language-tab" data-language="language-javascript">JS</div>
|
|
</div>
|
|
</p>
|
|
<div class="highlight language-c-cpp"><pre><span></span><span class="cp">#define FMOD_PLUGIN_SDK_VERSION 110</span>
|
|
</pre></div>
|
|
|
|
<div class="highlight language-javascript"><pre><span></span><span class="nx">FMOD</span><span class="p">.</span><span class="nx">PLUGIN_SDK_VERSION</span> <span class="o">=</span> <span class="mi">110</span>
|
|
</pre></div>
|
|
|
|
<div class="admonition language-csharp">
|
|
<p>Currently not supported for C#.</p>
|
|
</div>
|
|
<p><strong>See Also:</strong> <a class="apilink" href="plugin-api-dsp.html#fmod_dsp_description">FMOD_DSP_DESCRIPTION</a></p></div>
|
|
|
|
<p class="manual-footer">FMOD Engine User Manual 2.03.13 (2026-03-31). © 2026 Firelight Technologies Pty Ltd.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|