arduino-audio-tools/namespaces.html

661 lines
273 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>arduino-audio-tools: Namespace List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">arduino-audio-tools
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Namespace List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceaudio__tools.html" target="_self">audio_tools</a></td><td class="desc">Generic Implementation of sound input and output for desktop environments using portaudio </td></tr>
<tr id="row_0_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a2_d_p_config.html" target="_self">A2DPConfig</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_a2_d_p_stream.html" title="Stream support for A2DP using https://github.com/pschatzmann/ESP32-A2DP: begin(TX_MODE) opens a a2dp_...">A2DPStream</a> </td></tr>
<tr id="row_0_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a2_d_p_stream.html" target="_self">A2DPStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> support for A2DP using <a href="https://github.com/pschatzmann/ESP32-A2DP:">https://github.com/pschatzmann/ESP32-A2DP:</a> begin(TX_MODE) opens a a2dp_source and begin(RX_MODE) a a2dp_sink. The data is in int16_t with 2 channels at 44100 hertz. We support only one instance of the class! Please note that this is a conveniance class that supports the stream api, however this is rather inefficient, beause quite a bit buffer needs to be allocated. It is recommended to use the API with the callbacks. Examples can be found in the examples-basic-api directory </td></tr>
<tr id="row_0_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_a_c_decoder_f_a_a_d.html" target="_self">AACDecoderFAAD</a></td><td class="desc">AAC Decoder using faad: <a href="https://github.com/pschatzmann/arduino-libfaad">https://github.com/pschatzmann/arduino-libfaad</a> This needs a stack of around 60000 and you need to make sure that memory is allocated on PSRAM. See <a href="https://www.pschatzmann.ch/home/2023/09/12/arduino-audio-tools-faat-aac-decoder/">https://www.pschatzmann.ch/home/2023/09/12/arduino-audio-tools-faat-aac-decoder/</a> </td></tr>
<tr id="row_0_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_a_c_decoder_f_d_k.html" target="_self">AACDecoderFDK</a></td><td class="desc">Audio Decoder which decodes AAC into a PCM stream This is basically just a wrapper using <a href="https://github.com/pschatzmann/arduino-fdk-aac">https://github.com/pschatzmann/arduino-fdk-aac</a> which uses <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> and provides the handlig of <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> changes </td></tr>
<tr id="row_0_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_a_c_decoder_helix.html" target="_self">AACDecoderHelix</a></td><td class="desc">AAC Decoder using libhelix: <a href="https://github.com/pschatzmann/arduino-libhelix">https://github.com/pschatzmann/arduino-libhelix</a> This is basically just a simple wrapper to provide <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> and <a class="el" href="classaudio__tools_1_1_audio_info_support.html" title="Supports changes to the sampling rate, bits and channels.">AudioInfoSupport</a> </td></tr>
<tr id="row_0_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_a_c_encoder_f_d_k.html" target="_self">AACEncoderFDK</a></td><td class="desc">Encodes PCM data to the AAC format and writes the result to a stream This is basically just a wrapper using <a href="https://github.com/pschatzmann/arduino-fdk-aac">https://github.com/pschatzmann/arduino-fdk-aac</a> </td></tr>
<tr id="row_0_6_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_abstract_meta_data.html" target="_self">AbstractMetaData</a></td><td class="desc">Common Metadata methods </td></tr>
<tr id="row_0_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_abstract_parameter.html" target="_self">AbstractParameter</a></td><td class="desc">Base class for all parameters </td></tr>
<tr id="row_0_8_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_abstract_synthesizer_channel.html" target="_self">AbstractSynthesizerChannel</a></td><td class="desc">Defines the sound generation for one channel. A channel is used to process an indivudual key so that we can generate multiple notes at the same time </td></tr>
<tr id="row_0_9_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_abstract_u_r_l_stream.html" target="_self">AbstractURLStream</a></td><td class="desc">Abstract Base class for all <a class="el" href="classaudio__tools_1_1_u_r_l_stream.html" title="Represents the content of a URL as Stream. We use the WiFi.h API.">URLStream</a> implementations </td></tr>
<tr id="row_0_10_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_adapter_audio_output_to_audio_stream.html" target="_self">AdapterAudioOutputToAudioStream</a></td><td class="desc">Wrapper which converts a <a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> to a <a class="el" href="classaudio__tools_1_1_audio_output.html" title="Abstract Audio Ouptut class.">AudioOutput</a> </td></tr>
<tr id="row_0_11_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_adapter_audio_stream_to_audio_output.html" target="_self">AdapterAudioStreamToAudioOutput</a></td><td class="desc">Wrapper which converts a <a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> to a <a class="el" href="classaudio__tools_1_1_audio_output.html" title="Abstract Audio Ouptut class.">AudioOutput</a> </td></tr>
<tr id="row_0_12_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_adapter_print_to_audio_output.html" target="_self">AdapterPrintToAudioOutput</a></td><td class="desc">Wrapper which converts a <a class="el" href="classaudio__tools_1_1_print.html">Print</a> to a <a class="el" href="classaudio__tools_1_1_audio_output.html" title="Abstract Audio Ouptut class.">AudioOutput</a> </td></tr>
<tr id="row_0_13_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_p_c_m_decoder.html" target="_self">ADPCMDecoder</a></td><td class="desc">Decoder for ADPCM. Depends on <a href="https://github.com/pschatzmann/adpcm">https://github.com/pschatzmann/adpcm</a> </td></tr>
<tr id="row_0_14_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_p_c_m_decoder_x_q.html" target="_self">ADPCMDecoderXQ</a></td><td class="desc">Decoder for ADPCM-XQ. Depends on <a href="https://github.com/pschatzmann/arduino-adpcm-xq">https://github.com/pschatzmann/arduino-adpcm-xq</a> </td></tr>
<tr id="row_0_15_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_p_c_m_encoder.html" target="_self">ADPCMEncoder</a></td><td class="desc">Encoder for ADPCM - Depends on <a href="https://github.com/pschatzmann/adpcm">https://github.com/pschatzmann/adpcm</a> </td></tr>
<tr id="row_0_16_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_p_c_m_encoder_x_q.html" target="_self">ADPCMEncoderXQ</a></td><td class="desc">Encoder for ADPCM-XQ - Depends on <a href="https://github.com/pschatzmann/arduino-adpcm-xq">https://github.com/pschatzmann/arduino-adpcm-xq</a> </td></tr>
<tr id="row_0_17_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_s_r.html" target="_self">ADSR</a></td><td class="desc">Generates <a class="el" href="classaudio__tools_1_1_a_d_s_r.html" title="Generates ADSR values between 0.0 and 1.0.">ADSR</a> values between 0.0 and 1.0 </td></tr>
<tr id="row_0_18_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_s_r_gain.html" target="_self">ADSRGain</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_a_d_s_r.html" title="Generates ADSR values between 0.0 and 1.0.">ADSR</a> Envelope: Attack, Decay, Sustain and Release. Attack is the time taken for initial run-up oeffect_tf level from nil to peak, beginning when the key is pressed. Decay is the time taken for the subsequent run down from the attack level to the designated sustainLevel level. Sustain is the level during the main sequence of the sound's duration, until the key is released. Release is the time taken for the level to decay from the sustainLevel level to zero after the key is released.[4] </td></tr>
<tr id="row_0_19_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_d_t_s_decoder.html" target="_self">ADTSDecoder</a></td><td class="desc">Audio Data Transport <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> (ADTS) is a format similar to Audio Data Interchange Format (ADIF), used by MPEG TS or Shoutcast to stream audio defined in MPEG-2 Part 7, usually AAC. This parser extracts all valid ADTS frames from the data stream ignoring other data </td></tr>
<tr id="row_0_20_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_a_d_t_s_parser.html" target="_self">ADTSParser</a></td><td class="desc"></td></tr>
<tr id="row_0_21_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_allocator.html" target="_self">Allocator</a></td><td class="desc">Memory allocateator which uses malloc </td></tr>
<tr id="row_0_22_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_allocator_ext.html" target="_self">AllocatorExt</a></td><td class="desc">Memory allocateator which uses ps_malloc (on the ESP32) and if this fails it resorts to malloc </td></tr>
<tr id="row_0_23_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_alloc_size.html" target="_self">AllocSize</a></td><td class="desc"></td></tr>
<tr id="row_0_24_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_audio_arduino.html" target="_self">AnalogAudioArduino</a></td><td class="desc">Analog Data IO using a timer and the Arduino analogRead() method and writing using analogWrite(); </td></tr>
<tr id="row_0_25_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_audio_stream.html" target="_self">AnalogAudioStream</a></td><td class="desc">ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support reading of audio only using analog input with a timer </td></tr>
<tr id="row_0_26_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_config_e_s_p32.html" target="_self">AnalogConfigESP32</a></td><td class="desc">ESP32 specific configuration for i2s input via adc. The default input pin is GPIO34. We always use int16_t values. The default output pins are GPIO25 and GPIO26! </td></tr>
<tr id="row_0_27_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_config_e_s_p32_v1.html" target="_self">AnalogConfigESP32V1</a></td><td class="desc">ESP32 specific configuration for i2s input via adc using the adc_continuous API </td></tr>
<tr id="row_0_28_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_config_std.html" target="_self">AnalogConfigStd</a></td><td class="desc">Generic ADC and DAC configuration </td></tr>
<tr id="row_0_29_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_arduino.html" target="_self">AnalogDriverArduino</a></td><td class="desc">Please use the <a class="el" href="classaudio__tools_1_1_analog_audio_stream.html" title="ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support ...">AnalogAudioStream</a>: Reading Analog Data using a timer and the Arduino analogRead() method and writing using analogWrite(); </td></tr>
<tr id="row_0_30_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_base.html" target="_self">AnalogDriverBase</a></td><td class="desc"></td></tr>
<tr id="row_0_31_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_e_s_p32.html" target="_self">AnalogDriverESP32</a></td><td class="desc">Please use <a class="el" href="classaudio__tools_1_1_analog_audio_stream.html" title="ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support ...">AnalogAudioStream</a>: A very fast ADC and DAC using the ESP32 I2S interface </td></tr>
<tr id="row_0_32_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_32_" class="arrow" onclick="toggleFolder('0_32_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_e_s_p32_v1.html" target="_self">AnalogDriverESP32V1</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_analog_audio_stream.html" title="ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support ...">AnalogAudioStream</a>: A very fast DAC using DMA using the new dac_continuous API </td></tr>
<tr id="row_0_32_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_e_s_p32_v1_1_1_f_i_f_o.html" target="_self">FIFO</a></td><td class="desc">Custom <a class="el" href="classaudio__tools_1_1_analog_driver_e_s_p32_v1_1_1_f_i_f_o.html" title="Custom FIFO class.">FIFO</a> class </td></tr>
<tr id="row_0_32_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_e_s_p32_v1_1_1_i_o16_bit.html" target="_self">IO16Bit</a></td><td class="desc"></td></tr>
<tr id="row_0_33_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_analog_driver_m_b_e_d.html" target="_self">AnalogDriverMBED</a></td><td class="desc">Please use <a class="el" href="classaudio__tools_1_1_analog_audio_stream.html" title="ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support ...">AnalogAudioStream</a>: A ADC and DAC API for the Arduino Giga </td></tr>
<tr id="row_0_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_appropriate_sum_type.html" target="_self">AppropriateSumType</a></td><td class="desc">We reduce the number of samples in a datastream by summing (binning) or averaging. This will result in the same number of channels but binSize times less samples. If Average is true the sum is divided by binSize </td></tr>
<tr id="row_0_35_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_appropriate_sum_type_3_01int16__t_01_4.html" target="_self">AppropriateSumType&lt; int16_t &gt;</a></td><td class="desc"></td></tr>
<tr id="row_0_36_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_appropriate_sum_type_3_01int24__t_01_4.html" target="_self">AppropriateSumType&lt; int24_t &gt;</a></td><td class="desc"></td></tr>
<tr id="row_0_37_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_appropriate_sum_type_3_01int32__t_01_4.html" target="_self">AppropriateSumType&lt; int32_t &gt;</a></td><td class="desc"></td></tr>
<tr id="row_0_38_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_appropriate_sum_type_3_01int8__t_01_4.html" target="_self">AppropriateSumType&lt; int8_t &gt;</a></td><td class="desc"></td></tr>
<tr id="row_0_39_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_p_t_x_decoder.html" target="_self">APTXDecoder</a></td><td class="desc">Decoder for OpenAptx. Depends on <a href="https://github.com/pschatzmann/libopenaptx">https://github.com/pschatzmann/libopenaptx</a> </td></tr>
<tr id="row_0_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_p_t_x_encoder.html" target="_self">APTXEncoder</a></td><td class="desc">Encoder for OpenAptx - Depends on <a href="https://github.com/pschatzmann/libopenaptx">https://github.com/pschatzmann/libopenaptx</a> </td></tr>
<tr id="row_0_41_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_41_" class="arrow" onclick="toggleFolder('0_41_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_actions.html" target="_self">AudioActions</a></td><td class="desc">A simple class to assign functions to gpio pins e.g. to implement a simple navigation control or volume control with buttons </td></tr>
<tr id="row_0_41_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_actions_1_1_action.html" target="_self">Action</a></td><td class="desc"></td></tr>
<tr id="row_0_42_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_board_stream.html" target="_self">AudioBoardStream</a></td><td class="desc">New functionality which replaces the <a class="el" href="classaudio__tools_1_1_audio_kit_stream.html" title="AudioKit Stream which uses the https://github.com/pschatzmann/arduino-audiokit library.">AudioKitStream</a> that is based on the legacy AudioKit library. This functionality uses the new arduino-audio-driver library! It is the same as <a class="el" href="classaudio__tools_1_1_i2_s_codec_stream.html" title="I2S Stream which also sets up a codec chip and i2s.">I2SCodecStream</a> extended by some <a class="el" href="classaudio__tools_1_1_audio_actions.html" title="A simple class to assign functions to gpio pins e.g. to implement a simple navigation control or volu...">AudioActions</a> and some method calls to determine defined pin values. See <a href="https://github.com/pschatzmann/arduino-audio-driver">https://github.com/pschatzmann/arduino-audio-driver</a> </td></tr>
<tr id="row_0_43_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_client_r_t_s_p.html" target="_self">AudioClientRTSP</a></td><td class="desc">A simple RTSPClient using <a href="https://github.com/pschatzmann/arduino-live555">https://github.com/pschatzmann/arduino-live555</a> </td></tr>
<tr id="row_0_44_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_cmsis_f_f_t.html" target="_self">AudioCmsisFFT</a></td><td class="desc">AudioFFT for ARM processors that provided Cmsis DSP </td></tr>
<tr id="row_0_45_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_confirm_data_to_receive.html" target="_self">AudioConfirmDataToReceive</a></td><td class="desc">Protocol Record for Request </td></tr>
<tr id="row_0_46_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_data_begin.html" target="_self">AudioDataBegin</a></td><td class="desc">Protocal Record To Start </td></tr>
<tr id="row_0_47_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_data_end.html" target="_self">AudioDataEnd</a></td><td class="desc">Protocol Record for End </td></tr>
<tr id="row_0_48_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_decoder.html" target="_self">AudioDecoder</a></td><td class="desc">Docoding of encoded audio into PCM data </td></tr>
<tr id="row_0_49_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_decoder_ext.html" target="_self">AudioDecoderExt</a></td><td class="desc"></td></tr>
<tr id="row_0_50_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_effect.html" target="_self">AudioEffect</a></td><td class="desc">Abstract Base class for Sound Effects </td></tr>
<tr id="row_0_51_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_effect_common.html" target="_self">AudioEffectCommon</a></td><td class="desc"></td></tr>
<tr id="row_0_52_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_effects.html" target="_self">AudioEffects</a></td><td class="desc">OBSOLETE <a class="el" href="classaudio__tools_1_1_audio_effects.html" title="OBSOLETE AudioEffects: the template class describes the input audio to which the effects are applied:...">AudioEffects</a>: the template class describes the input audio to which the effects are applied: e.g. <a class="el" href="classaudio__tools_1_1_sine_wave_generator.html" title="Generates a Sound with the help of sin() function. If you plan to change the amplitude or frequency (...">SineWaveGenerator</a>, <a class="el" href="classaudio__tools_1_1_square_wave_generator.html" title="Generates a square wave sound.">SquareWaveGenerator</a>, <a class="el" href="classaudio__tools_1_1_generator_from_stream.html" title="An Adapter Class which lets you use any Stream as a Generator.">GeneratorFromStream</a> etc. We support only one channel of int16_t data! </td></tr>
<tr id="row_0_53_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_effect_stream.html" target="_self">AudioEffectStream</a></td><td class="desc">EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus &gt;= 201703L. Otherwise <a class="el" href="classaudio__tools_1_1_audio_effect_stream.html" title="EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus &gt;= 2...">AudioEffectStream</a> results in using <a class="el" href="classaudio__tools_1_1_audio_effect_stream.html" title="EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus &gt;= 2...">AudioEffectStream</a> = AudioEffectStreamT&lt;effect_t&gt;; </td></tr>
<tr id="row_0_54_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_effect_stream_t.html" target="_self">AudioEffectStreamT</a></td><td class="desc">EffectsStreamT: the template class describes an input or output stream to which one or multiple effects are applied. The number of channels are used to merge the samples of one frame into one sample before outputting the result as a frame (by repeating the result sample for each channel). Currently only int16_t values are supported, so I recommend to use the <b><a class="el" href="classaudio__tools_1_1_audio_effect_stream.html" title="EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus &gt;= 2...">AudioEffectStream</a></b> class which is defined as using <a class="el" href="classaudio__tools_1_1_audio_effect_stream.html" title="EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus &gt;= 2...">AudioEffectStream</a> = AudioEffectStreamT&lt;effect_t&gt;; </td></tr>
<tr id="row_0_55_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_encoder.html" target="_self">AudioEncoder</a></td><td class="desc">Encoding of PCM data </td></tr>
<tr id="row_0_56_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_encoder_ext.html" target="_self">AudioEncoderExt</a></td><td class="desc"></td></tr>
<tr id="row_0_57_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_e_s_p32_f_f_t.html" target="_self">AudioESP32FFT</a></td><td class="desc">AudioFFT using RealFFT </td></tr>
<tr id="row_0_58_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_e_s_p32_u_l_p.html" target="_self">AudioESP32ULP</a></td><td class="desc">Outputs to ESP32 DAC through the ULP (Ultra&gt; Low Power coprocessor), freeing I2S for other uses. Connect left channel on pin 25 Connect right channel on pin 26 </td></tr>
<tr id="row_0_59_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_espressif_f_f_t.html" target="_self">AudioEspressifFFT</a></td><td class="desc">AudioFFT using FFTReal. The only specific functionality is the access to the dataArray </td></tr>
<tr id="row_0_60_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_f_f_t_base.html" target="_self">AudioFFTBase</a></td><td class="desc">Executes FFT using audio data. The Driver which is passed in the constructor selects a specifc FFT implementation </td></tr>
<tr id="row_0_61_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_f_f_t_config.html" target="_self">AudioFFTConfig</a></td><td class="desc">Configuration for AudioFFT. If there are more then 1 channel the channel_used is defining which channel is used to perform the fft on </td></tr>
<tr id="row_0_62_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_f_f_t_result.html" target="_self">AudioFFTResult</a></td><td class="desc">Result of the FFT </td></tr>
<tr id="row_0_63_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_header.html" target="_self">AudioHeader</a></td><td class="desc">Common Header for all records </td></tr>
<tr id="row_0_64_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_info.html" target="_self">AudioInfo</a></td><td class="desc">Basic Audio information which drives e.g. I2S </td></tr>
<tr id="row_0_65_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_info_l_a_m_e.html" target="_self">AudioInfoLAME</a></td><td class="desc">LAME parameters </td></tr>
<tr id="row_0_66_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_info_source.html" target="_self">AudioInfoSource</a></td><td class="desc">Supports the subscription to audio change notifications </td></tr>
<tr id="row_0_67_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_info_support.html" target="_self">AudioInfoSupport</a></td><td class="desc">Supports changes to the sampling rate, bits and channels </td></tr>
<tr id="row_0_68_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_kiss_f_f_t.html" target="_self">AudioKissFFT</a></td><td class="desc">AudioFFT using FFTReal. The only specific functionality is the access to the dataArray </td></tr>
<tr id="row_0_69_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_kit_stream.html" target="_self">AudioKitStream</a></td><td class="desc">AudioKit <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which uses the <a href="https://github.com/pschatzmann/arduino-audiokit">https://github.com/pschatzmann/arduino-audiokit</a> library </td></tr>
<tr id="row_0_70_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_kit_stream_config.html" target="_self">AudioKitStreamConfig</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_audio_kit_stream.html" title="AudioKit Stream which uses the https://github.com/pschatzmann/arduino-audiokit library.">AudioKitStream</a>: we use as subclass of I2SConfig </td></tr>
<tr id="row_0_71_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_m_p34_d_t05.html" target="_self">AudioMP34DT05</a></td><td class="desc">MP34DT05 Microphone of Nano BLE Sense. We provide a proper <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> implementation. See <a href="https://github.com/arduino/ArduinoCore-nRF528x-mbedos">https://github.com/arduino/ArduinoCore-nRF528x-mbedos</a> </td></tr>
<tr id="row_0_72_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_m_p34_d_t05_config.html" target="_self">AudioMP34DT05Config</a></td><td class="desc">Config for MP34DT05 Microphone. Supported sample rates 16000, 41667, Supported bits_per_sample only 16 </td></tr>
<tr id="row_0_73_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_output.html" target="_self">AudioOutput</a></td><td class="desc">Abstract Audio Ouptut class </td></tr>
<tr id="row_0_74_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_output_adapter.html" target="_self">AudioOutputAdapter</a></td><td class="desc">Base class for Output Adpapters </td></tr>
<tr id="row_0_75_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_output_with_callback.html" target="_self">AudioOutputWithCallback</a></td><td class="desc">ESP8266Audio <a class="el" href="classaudio__tools_1_1_audio_output.html" title="Abstract Audio Ouptut class.">AudioOutput</a> class which stores the data in a temporary buffer. The buffer can be consumed e.g. by a callback function by calling <a class="el" href="classaudio__tools_1_1_buffered_stream.html#ad0852e3297f3743332e629b9924c9375" title="reads a byte - to be avoided">read()</a>; Dependencies: ESP8266Audio Library Dependencies: ESP32-A2DP Library </td></tr>
<tr id="row_0_76_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_player.html" target="_self">AudioPlayer</a></td><td class="desc">Implements a simple audio player which supports the following commands: </td></tr>
<tr id="row_0_77_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_real_f_f_t.html" target="_self">AudioRealFFT</a></td><td class="desc">AudioFFT using RealFFT </td></tr>
<tr id="row_0_78_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_send_data.html" target="_self">AudioSendData</a></td><td class="desc">Protocol Record for Data </td></tr>
<tr id="row_0_79_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_server_ex.html" target="_self">AudioServerEx</a></td><td class="desc">A powerfull Web server which is based on <a href="https://github.com/pschatzmann/TinyHttp">https://github.com/pschatzmann/TinyHttp</a>. It supports multiple concurrent clients. You can e.g. use it to write mp3 data and make it available in multiple clients </td></tr>
<tr id="row_0_80_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_audio_server_ex_config.html" target="_self">AudioServerExConfig</a></td><td class="desc">Config information for <a class="el" href="classaudio__tools_1_1_audio_server_ex.html" title="A powerfull Web server which is based on https://github.com/pschatzmann/TinyHttp. It supports multipl...">AudioServerEx</a> </td></tr>
<tr id="row_0_81_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source.html" target="_self">AudioSource</a></td><td class="desc">Abstract Audio Data Source for the <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> which is used by the Audio Players </td></tr>
<tr id="row_0_82_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_callback.html" target="_self">AudioSourceCallback</a></td><td class="desc">Callback Audio Data Source which is used by the Audio Players </td></tr>
<tr id="row_0_83_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_dynamic_u_r_l.html" target="_self">AudioSourceDynamicURL</a></td><td class="desc">Audio Source which provides the data via the network from an URL. The URLs are stored in an <a class="el" href="classaudio__tools_1_1_vector.html" title="Vector implementation which provides the most important methods as defined by std::vector....">Vector</a> of dynamically allocated strings </td></tr>
<tr id="row_0_84_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_idx_s_d.html" target="_self">AudioSourceIdxSD</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card to the following pins: </td></tr>
<tr id="row_0_85_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_idx_s_d_f_a_t.html" target="_self">AudioSourceIdxSDFAT</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD implementation For UTF8 Support change SdFatConfig.h #define USE_UTF8_LONG_NAMES 1 </td></tr>
<tr id="row_0_86_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_idx_s_d_m_m_c.html" target="_self">AudioSourceIdxSDMMC</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD_MMC implementation Connect the SD card to the following pins: </td></tr>
<tr id="row_0_87_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_little_f_s.html" target="_self">AudioSourceLittleFS</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an the LittleFS file system </td></tr>
<tr id="row_0_88_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_s_d.html" target="_self">AudioSourceSD</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card to the following pins: </td></tr>
<tr id="row_0_89_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_s_d_f_a_t.html" target="_self">AudioSourceSDFAT</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card. For UTF8 Support change SdFatConfig.h #define USE_UTF8_LONG_NAMES 1 </td></tr>
<tr id="row_0_90_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_s_d_m_m_c.html" target="_self">AudioSourceSDMMC</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an SD card as data source. This class is based on the Arduino SD_MMC implementation Connect the SD card to the following pins: </td></tr>
<tr id="row_0_91_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_s_p_i_f_f_s.html" target="_self">AudioSourceSPIFFS</a></td><td class="desc">ESP32 <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> for <a class="el" href="classaudio__tools_1_1_audio_player.html" title="Implements a simple audio player which supports the following commands:">AudioPlayer</a> using an the SPIFFS file system </td></tr>
<tr id="row_0_92_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_s_t_d.html" target="_self">AudioSourceSTD</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> using the standard C++ api </td></tr>
<tr id="row_0_93_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_source_u_r_l.html" target="_self">AudioSourceURL</a></td><td class="desc">Audio Source which provides the data via the network from an URL </td></tr>
<tr id="row_0_94_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_stream.html" target="_self">AudioStream</a></td><td class="desc">Base class for all Audio Streams. It support the boolean operator to test if the object is ready with data </td></tr>
<tr id="row_0_95_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_stream_wrapper.html" target="_self">AudioStreamWrapper</a></td><td class="desc">To be used to support implementations where the readBytes is not virtual </td></tr>
<tr id="row_0_96_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_sync_reader.html" target="_self">AudioSyncReader</a></td><td class="desc">Receving Audio Data over the wire and requesting for more data when done to synchronize the processing with the sender. The audio data is processed by the <a class="el" href="classaudio__tools_1_1_encoded_audio_stream.html" title="A more natural Stream class to process encoded data (aac, wav, mp3...) which also supports the decodi...">EncodedAudioStream</a>; If you have multiple readers, only one receiver should be used as confirmer! </td></tr>
<tr id="row_0_97_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_sync_writer.html" target="_self">AudioSyncWriter</a></td><td class="desc">Audio Writer which is synchronizing the amount of data that can be processed with the AudioReceiver </td></tr>
<tr id="row_0_98_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_time.html" target="_self">AudioTime</a></td><td class="desc">Tools for calculating timer values </td></tr>
<tr id="row_0_99_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_w_a_v_server_ex.html" target="_self">AudioWAVServerEx</a></td><td class="desc">A powerfull WAV Web server which is based on <a href="https://github.com/pschatzmann/TinyHttp">https://github.com/pschatzmann/TinyHttp</a>. It supports multiple concurrent clients </td></tr>
<tr id="row_0_100_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_writer.html" target="_self">AudioWriter</a></td><td class="desc">E.g. used by Encoders and Decoders </td></tr>
<tr id="row_0_101_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_audio_writer_to_audio_output.html" target="_self">AudioWriterToAudioOutput</a></td><td class="desc">Adapter class which lets an <a class="el" href="classaudio__tools_1_1_audio_writer.html" title="E.g. used by Encoders and Decoders.">AudioWriter</a> behave like a <a class="el" href="classaudio__tools_1_1_print.html">Print</a> </td></tr>
<tr id="row_0_102_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_a_v_i_decoder.html" target="_self">AVIDecoder</a></td><td class="desc">AVI Container Decoder which can be fed with small chunks of data. The minimum length must be bigger then the header size! The file structure is documented at <a href="https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference">https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference</a> </td></tr>
<tr id="row_0_103_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_a_v_i_main_header.html" target="_self">AVIMainHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_104_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_a_v_i_stream_header.html" target="_self">AVIStreamHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_105_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_band_pass_filter.html" target="_self">BandPassFilter</a></td><td class="desc">Biquad DF2 Band Pass <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_106_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_base_buffer.html" target="_self">BaseBuffer</a></td><td class="desc">Shared functionality of all buffers </td></tr>
<tr id="row_0_107_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_base_converter.html" target="_self">BaseConverter</a></td><td class="desc">Abstract Base class for Converters A converter is processing the data in the indicated array </td></tr>
<tr id="row_0_108_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_base_stream.html" target="_self">BaseStream</a></td><td class="desc">Base class for all Streams. It relies on write(const uint8_t *buffer, size_t size) and readBytes(uint8_t *buffer, size_t length) </td></tr>
<tr id="row_0_109_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_bin.html" target="_self">Bin</a></td><td class="desc">Provides reduced sampling rates through binning </td></tr>
<tr id="row_0_110_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_binary_container_decoder.html" target="_self">BinaryContainerDecoder</a></td><td class="desc">Decodes the provided data from the DAT and CFG segments </td></tr>
<tr id="row_0_111_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_binary_container_encoder.html" target="_self">BinaryContainerEncoder</a></td><td class="desc">Wraps the encoded data into Config, Data, and <a class="el" href="class_meta.html" title="minimial implementtion of Meta which just ignores the data">Meta</a> segments so that we can recover the audio configuration and orignial segments if this is relevant. We assume that a full segment is written with each call of <a class="el" href="classaudio__tools_1_1_binary_container_encoder.html#afd7270e10d851383ff7b53c1241f6ba1" title="Add data segment. On first write we also add a AudioInfo header.">write()</a>; The segments are separated with a new line character </td></tr>
<tr id="row_0_112_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_bin_t.html" target="_self">BinT</a></td><td class="desc"></td></tr>
<tr id="row_0_113_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_bi_quad_d_f1.html" target="_self">BiQuadDF1</a></td><td class="desc">Biquad DF1 <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_114_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_bi_quad_d_f2.html" target="_self">BiQuadDF2</a></td><td class="desc">Biquad DF2 <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_115_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_bitmap_info_header.html" target="_self">BitmapInfoHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_116_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_blackman.html" target="_self">Blackman</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_blackman.html" title="Blackman FFT Window function.">Blackman</a> FFT Window function </td></tr>
<tr id="row_0_117_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_blackman_harris.html" target="_self">BlackmanHarris</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_blackman_harris.html" title="BlackmanHarris FFT Window function.">BlackmanHarris</a> FFT Window function </td></tr>
<tr id="row_0_118_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_blackman_nuttall.html" target="_self">BlackmanNuttall</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_blackman_nuttall.html" title="BlackmanNuttall FFT Window function.">BlackmanNuttall</a> FFT Window function </td></tr>
<tr id="row_0_119_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_boost.html" target="_self">Boost</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_boost.html" title="Boost AudioEffect.">Boost</a> <a class="el" href="classaudio__tools_1_1_audio_effect.html" title="Abstract Base class for Sound Effects.">AudioEffect</a> </td></tr>
<tr id="row_0_120_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_buffered_array.html" target="_self">BufferedArray</a></td><td class="desc">Class which is usfull ot provide incremental data access e.g. for EdgeImpulse which request data with an offset and length starting from 0 up to the buffer length, restarting at 0 again </td></tr>
<tr id="row_0_121_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_buffered_stream.html" target="_self">BufferedStream</a></td><td class="desc">The Arduino <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> supports operations on single characters. This is usually not the best way to push audio information, but we will support it anyway - by using a buffer. On reads: if the buffer is empty it gets refilled </td></tr>
<tr id="row_0_122_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_buffered_task_stream.html" target="_self">BufferedTaskStream</a></td><td class="desc">A FreeRTOS task is filling the buffer from the indicated stream. Only to be used on the ESP32 </td></tr>
<tr id="row_0_123_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_buffered_window.html" target="_self">BufferedWindow</a></td><td class="desc">Buffered window function, so that we do not need to re-calculate the values </td></tr>
<tr id="row_0_124_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_buffer_r_t_o_s.html" target="_self">BufferRTOS</a></td><td class="desc">Buffer implementation which is using a FreeRTOS StreamBuffer. The default allocator uses psram is available </td></tr>
<tr id="row_0_125_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_cached_volume_control.html" target="_self">CachedVolumeControl</a></td><td class="desc">In order to optimize the processing time we cache the last input &amp; factor and recalculate the new factor only if the input has changed </td></tr>
<tr id="row_0_126_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_callback_converter_t.html" target="_self">CallbackConverterT</a></td><td class="desc">You can provide a lambda expression to conver the data </td></tr>
<tr id="row_0_127_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_callback_stream.html" target="_self">CallbackStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_callback_stream.html" title="CallbackStream: A Stream that allows to register callback methods for accessing and providing data....">CallbackStream</a>: A <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> that allows to register callback methods for accessing and providing data. The callbacks can be lambda expressions </td></tr>
<tr id="row_0_128_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_callback_volume_control.html" target="_self">CallbackVolumeControl</a></td><td class="desc">Provide the volume function as callback method: This is easy to use e.g together with a lamda function! </td></tr>
<tr id="row_0_129_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_cat_stream.html" target="_self">CatStream</a></td><td class="desc">Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and readd them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be not good if you use e.g. a <a class="el" href="classaudio__tools_1_1_u_r_l_stream.html" title="Represents the content of a URL as Stream. We use the WiFi.h API.">URLStream</a> </td></tr>
<tr id="row_0_130_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_avg.html" target="_self">ChannelAvg</a></td><td class="desc"></td></tr>
<tr id="row_0_131_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_avg_t.html" target="_self">ChannelAvgT</a></td><td class="desc">We average pairs of channels in a datastream. E.g. if we have 4 channels we end up with 2 channels. The channels will be (channel_1 + channel_2)/2 (channel_3 - channel_4)/2. This is equivalent of stereo to mono conversion but will also work for quadric, sexic or octic audio. This will not work if you provide single channel data! </td></tr>
<tr id="row_0_132_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_bin_diff.html" target="_self">ChannelBinDiff</a></td><td class="desc">Provides combination of binning and subtracting channels </td></tr>
<tr id="row_0_133_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_bin_diff_t.html" target="_self">ChannelBinDiffT</a></td><td class="desc">We first bin the channels then we calculate the difference between pairs of channels in a datastream. E.g. For binning, if we bin 4 samples in each channel we will have 4 times less samples per channel E.g. For subtracting if we have 4 channels we end up with 2 channels. The channels will be channel_1 - channel_2 channel_3 - channel_4 This is the same as combining binning and subtracting channels. This will not work if you provide single channel data! </td></tr>
<tr id="row_0_134_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_converter.html" target="_self">ChannelConverter</a></td><td class="desc">Increasing or decreasing the number of channels </td></tr>
<tr id="row_0_135_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_diff.html" target="_self">ChannelDiff</a></td><td class="desc"></td></tr>
<tr id="row_0_136_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_diff_t.html" target="_self">ChannelDiffT</a></td><td class="desc">We calculate the difference between pairs of channels in a datastream. E.g. if we have 4 channels we end up with 2 channels. The channels will be channel_1 - channel_2 channel_3 - channel_4 This is similar to background subtraction between two channels but will also work for quadric, sexic or octic audio. This will not work if you provide single channel data! </td></tr>
<tr id="row_0_137_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_enhancer.html" target="_self">ChannelEnhancer</a></td><td class="desc">Increases the channel count </td></tr>
<tr id="row_0_138_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_format_converter_stream.html" target="_self">ChannelFormatConverterStream</a></td><td class="desc">Channel converter which does not use a template </td></tr>
<tr id="row_0_139_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_format_converter_stream_t.html" target="_self">ChannelFormatConverterStreamT</a></td><td class="desc">Converter for reducing or increasing the number of Channels </td></tr>
<tr id="row_0_140_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_reducer.html" target="_self">ChannelReducer</a></td><td class="desc">We combine a datastream which consists of multiple channels into less channels. E.g. 2 to 1 The last target channel will contain the combined values of the exceeding source channels </td></tr>
<tr id="row_0_141_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_reducer_t.html" target="_self">ChannelReducerT</a></td><td class="desc">We combine a datastream which consists of multiple channels into less channels. E.g. 2 to 1 The last target channel will contain the combined values of the exceeding source channels </td></tr>
<tr id="row_0_142_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_142_" class="arrow" onclick="toggleFolder('0_142_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channel_split_output.html" target="_self">ChannelSplitOutput</a></td><td class="desc">Simple functionality to extract mono streams from a multichannel (e.g. stereo) signal </td></tr>
<tr id="row_0_142_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_channel_split_output_1_1_channel_selection_output_def.html" target="_self">ChannelSelectionOutputDef</a></td><td class="desc"></td></tr>
<tr id="row_0_143_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_143_" class="arrow" onclick="toggleFolder('0_143_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_channels_select_output.html" target="_self">ChannelsSelectOutput</a></td><td class="desc">Flexible functionality to extract one or more channels from a multichannel signal. Warning: the destinatios added with addOutput are not automatically notified about audio changes </td></tr>
<tr id="row_0_143_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_channels_select_output_1_1_channel_selection_output_def.html" target="_self">ChannelSelectionOutputDef</a></td><td class="desc"></td></tr>
<tr id="row_0_144_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_chart_t.html" target="_self">ChartT</a></td><td class="desc">Displays audio in a Jupyter as chart Just wrapps a stream to provide the chart data </td></tr>
<tr id="row_0_145_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_client.html" target="_self">Client</a></td><td class="desc"></td></tr>
<tr id="row_0_146_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_codec2_decoder.html" target="_self">Codec2Decoder</a></td><td class="desc">Decoder for Codec2. Depends on <a href="https://github.com/pschatzmann/arduino-libcodec2">https://github.com/pschatzmann/arduino-libcodec2</a> </td></tr>
<tr id="row_0_147_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_codec2_encoder.html" target="_self">Codec2Encoder</a></td><td class="desc">Encoder for Codec2 - Depends on <a href="https://github.com/pschatzmann/arduino-libcodec2">https://github.com/pschatzmann/arduino-libcodec2</a> </td></tr>
<tr id="row_0_148_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_codec_n_o_p.html" target="_self">CodecNOP</a></td><td class="desc">Dummy no implmentation Codec. This is used so that we can initialize some pointers to decoders and encoders to make sure that they do not point to null </td></tr>
<tr id="row_0_149_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_common_header.html" target="_self">CommonHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_150_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_compressor.html" target="_self">Compressor</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_compressor.html" title="Compressor inspired by https://github.com/YetAnotherElectronicsChannel/STM32_DSP_COMPRESSOR/blob/mast...">Compressor</a> inspired by <a href="https://github.com/YetAnotherElectronicsChannel/STM32_DSP_COMPRESSOR/blob/master/code/Src/main.c">https://github.com/YetAnotherElectronicsChannel/STM32_DSP_COMPRESSOR/blob/master/code/Src/main.c</a> </td></tr>
<tr id="row_0_151_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_config_equilizer3_bands.html" target="_self">ConfigEquilizer3Bands</a></td><td class="desc">Configuration for 3 Band Equilizer: Set channels,bits_per_sample,sample_rate. Set and update gain_low, gain_medium and gain_high to value between 0 and 1.0 </td></tr>
<tr id="row_0_152_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_container_decoder.html" target="_self">ContainerDecoder</a></td><td class="desc">Parent class for all container formats </td></tr>
<tr id="row_0_153_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_container_m_p4.html" target="_self">ContainerMP4</a></td><td class="desc">Minimum flexible parser for MPEG4 data (which is based on the Quicktime format). Small atoms will be make available via a callback method. The big (audio) content is written to the <a class="el" href="classaudio__tools_1_1_print.html">Print</a> object which was specified in the constructor. Depends on <a href="https://github.com/pschatzmann/arduino-libhelix!">https://github.com/pschatzmann/arduino-libhelix!</a> </td></tr>
<tr id="row_0_154_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_container_target.html" target="_self">ContainerTarget</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_container_target.html" title="ContainerTarget: forwards requests to both the output and the encoder/decoder and sets up the output ...">ContainerTarget</a>: forwards requests to both the output and the encoder/decoder and sets up the output chain for Containers. We also manage the proper sequence of the output classes </td></tr>
<tr id="row_0_155_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_container_target_print.html" target="_self">ContainerTargetPrint</a></td><td class="desc"></td></tr>
<tr id="row_0_156_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter1_channel.html" target="_self">Converter1Channel</a></td><td class="desc">Converter for 1 Channel which applies the indicated <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a> </td></tr>
<tr id="row_0_157_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_auto_center.html" target="_self">ConverterAutoCenter</a></td><td class="desc">Makes sure that the avg of the signal is set to 0 </td></tr>
<tr id="row_0_158_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_auto_center_t.html" target="_self">ConverterAutoCenterT</a></td><td class="desc">Makes sure that the avg of the signal is set to 0 </td></tr>
<tr id="row_0_159_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_fill_left_and_right.html" target="_self">ConverterFillLeftAndRight</a></td><td class="desc">Make sure that both channels contain any data </td></tr>
<tr id="row_0_160_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_n_channels.html" target="_self">ConverterNChannels</a></td><td class="desc">Converter for n Channels which applies the indicated <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a> </td></tr>
<tr id="row_0_161_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_scaler.html" target="_self">ConverterScaler</a></td><td class="desc">Multiplies the values with the indicated factor adds the offset and clips at maxValue. To mute use a factor of 0.0! </td></tr>
<tr id="row_0_162_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_stream.html" target="_self">ConverterStream</a></td><td class="desc">Both the data of the read or write operations will be converted with the help of the indicated converter </td></tr>
<tr id="row_0_163_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_switch_left_and_right.html" target="_self">ConverterSwitchLeftAndRight</a></td><td class="desc">Switches the left and right channel </td></tr>
<tr id="row_0_164_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_converter_to_internal_d_a_c_format.html" target="_self">ConverterToInternalDACFormat</a></td><td class="desc">Special case for internal DAC output, the incomming PCM buffer needs to be converted from signed 16bit to unsigned </td></tr>
<tr id="row_0_165_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_copy_channels.html" target="_self">CopyChannels</a></td><td class="desc">Copy channel Cx value of type T shifted by S bits to all Cn channels </td></tr>
<tr id="row_0_166_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_copy_decoder.html" target="_self">CopyDecoder</a></td><td class="desc">Dummy Decoder which just copies the provided data to the output </td></tr>
<tr id="row_0_167_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_copy_encoder.html" target="_self">CopyEncoder</a></td><td class="desc">Dummy Encoder which just copies the provided data to the output </td></tr>
<tr id="row_0_168_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_csv_output.html" target="_self">CsvOutput</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> Wrapper which can be used to print the values as readable ASCII to the screen to be analyzed in the Serial Plotter The frames are separated by a new line. The channels in one frame are separated by a , </td></tr>
<tr id="row_0_169_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_data_node.html" target="_self">DataNode</a></td><td class="desc"></td></tr>
<tr id="row_0_170_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_debouncer.html" target="_self">Debouncer</a></td><td class="desc">Helper class to debounce user input from a push button </td></tr>
<tr id="row_0_171_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decimate.html" target="_self">Decimate</a></td><td class="desc">Provides a reduced sampling rate by taking a sample at every factor location (ingoring factor-1 samples) </td></tr>
<tr id="row_0_172_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decimate_t.html" target="_self">DecimateT</a></td><td class="desc">Provides reduced sampling rates </td></tr>
<tr id="row_0_173_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_adapter.html" target="_self">DecoderAdapter</a></td><td class="desc">Adapter class which allows the <a class="el" href="classaudio__tools_1_1_audio_decoder.html" title="Docoding of encoded audio into PCM data.">AudioDecoder</a> API on a <a class="el" href="classaudio__tools_1_1_streaming_decoder.html" title="A Streaming Decoder where we provide both the input and output as streams.">StreamingDecoder</a> </td></tr>
<tr id="row_0_174_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_base64.html" target="_self">DecoderBase64</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_decoder_base64.html" title="DecoderBase64 - Converts a Base64 encoded Stream into the original data stream. Decoding only gives a...">DecoderBase64</a> - Converts a Base64 encoded <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> into the original data stream. Decoding only gives a valid result if we start at a limit of 4 bytes. We therefore use by default a newline to determine a valid start boundary </td></tr>
<tr id="row_0_175_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_basic.html" target="_self">DecoderBasic</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_decoder_basic.html" title="DecoderBasic - supports mime type audio/basic Requires https://github.com/pschatzmann/arduino-libg7xx...">DecoderBasic</a> - supports mime type audio/basic Requires <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> The content of the "audio/basic" subtype is single channel audio encoded using 8bit ISDN mu-law [PCM] at a sample rate of 8000 Hz </td></tr>
<tr id="row_0_176_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_float.html" target="_self">DecoderFloat</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_decoder_float.html" title="DecoderFloat - Converts Stream of floats into 2 byte integers.">DecoderFloat</a> - Converts <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> of floats into 2 byte integers </td></tr>
<tr id="row_0_177_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_helix.html" target="_self">DecoderHelix</a></td><td class="desc">MP3 and AAC Decoder using libhelix: <a href="https://github.com/pschatzmann/arduino-libhelix">https://github.com/pschatzmann/arduino-libhelix</a>. We dynamically create a MP3 or AAC decoder dependent on the provided audio format </td></tr>
<tr id="row_0_178_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_l16.html" target="_self">DecoderL16</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_decoder_l16.html" title="DecoderL16 - Converts an 16 Bit Stream into 16Bits network byte order.">DecoderL16</a> - Converts an 16 Bit <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> into 16Bits network byte order </td></tr>
<tr id="row_0_179_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_decoder_l8.html" target="_self">DecoderL8</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_decoder_l8.html" title="DecoderL8 - Converts an 8 Bit Stream into 16Bits Most microcontrollers can not output 8 bit data dire...">DecoderL8</a> - Converts an 8 Bit <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> into 16Bits Most microcontrollers can not output 8 bit data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This decoder translates 8bit data into 16bit data. By default the encoded data is represented as uint8_t, so the values are from 0 to 255 </td></tr>
<tr id="row_0_180_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_default_synthesizer_channel.html" target="_self">DefaultSynthesizerChannel</a></td><td class="desc">Default implementation for a Channel. You can provide the Sound Generator as parameter to the effects: e.g. <a class="el" href="classaudio__tools_1_1_default_synthesizer_channel.html" title="Default implementation for a Channel. You can provide the Sound Generator as parameter to the effects...">DefaultSynthesizerChannel</a>&lt;<a class="el" href="classaudio__tools_1_1_audio_effects.html" title="OBSOLETE AudioEffects: the template class describes the input audio to which the effects are applied:...">AudioEffects</a>&lt;SineWaveGenerator&lt;int16_t&gt;&gt;&gt; *channel = new <a class="el" href="classaudio__tools_1_1_default_synthesizer_channel.html" title="Default implementation for a Channel. You can provide the Sound Generator as parameter to the effects...">DefaultSynthesizerChannel</a>&lt;<a class="el" href="classaudio__tools_1_1_audio_effects.html" title="OBSOLETE AudioEffects: the template class describes the input audio to which the effects are applied:...">AudioEffects</a>&lt;SineWaveGenerator&lt;int16_t&gt;&gt;&gt;(); </td></tr>
<tr id="row_0_181_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_delay.html" target="_self">Delay</a></td><td class="desc">Delay/Echo <a class="el" href="classaudio__tools_1_1_audio_effect.html" title="Abstract Base class for Sound Effects.">AudioEffect</a>. See <a href="https://wiki.analog.com/resources/tools-software/sharc-audio-module/baremetal/delay-effect-tutorial">https://wiki.analog.com/resources/tools-software/sharc-audio-module/baremetal/delay-effect-tutorial</a> Howver the dry value and wet value were replace by the depth parameter </td></tr>
<tr id="row_0_182_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_delay_effect_base.html" target="_self">DelayEffectBase</a></td><td class="desc">A Base class for delay based digital effects. Provides the basic methods that are shared amongst Flanger, <a class="el" href="classaudio__tools_1_1_delay.html" title="Delay/Echo AudioEffect. See https://wiki.analog.com/resources/tools-software/sharc-audio-module/barem...">Delay</a>, Chorus and Phaser </td></tr>
<tr id="row_0_183_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_distortion.html" target="_self">Distortion</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_distortion.html" title="Distortion AudioEffect.">Distortion</a> <a class="el" href="classaudio__tools_1_1_audio_effect.html" title="Abstract Base class for Sound Effects.">AudioEffect</a> </td></tr>
<tr id="row_0_184_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_driver_p_w_m_base.html" target="_self">DriverPWMBase</a></td><td class="desc">Base Class for all PWM drivers </td></tr>
<tr id="row_0_185_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_dynamic_memory_stream.html" target="_self">DynamicMemoryStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_memory_stream.html" title="A simple Stream implementation which is backed by allocated memory.">MemoryStream</a> which is written and read using the internal RAM. For each write the data is allocated on the heap </td></tr>
<tr id="row_0_186_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_effect_suite_base.html" target="_self">EffectSuiteBase</a></td><td class="desc">Base Class for Effects </td></tr>
<tr id="row_0_187_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoded_audio_output.html" target="_self">EncodedAudioOutput</a></td><td class="desc">A more natural <a class="el" href="classaudio__tools_1_1_print.html">Print</a> class to process encoded data (aac, wav, mp3...). Just define the output and the decoder and write the encoded data </td></tr>
<tr id="row_0_188_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoded_audio_stream.html" target="_self">EncodedAudioStream</a></td><td class="desc">A more natural <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> class to process encoded data (aac, wav, mp3...) which also supports the decoding by calling readBytes() </td></tr>
<tr id="row_0_189_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoder_base64.html" target="_self">EncoderBase64</a></td><td class="desc">EncoderBase64s - Encodes the input data into a Base64 string. By default each audio frame is followed by a new line, so that we can easily resynchronize the reading of a data stream. The generation of the new line can be configured with the <a class="el" href="classaudio__tools_1_1_encoder_base64.html#afa16faf4d738a7e4a387325e9f9e5048" title="We add a new line after each write.">setNewLine()</a> method </td></tr>
<tr id="row_0_190_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoder_basic.html" target="_self">EncoderBasic</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_encoder_basic.html" title="EncoderBasic - supports mime type audio/basic. The content of the &quot;audio/basic&quot; subtype is single cha...">EncoderBasic</a> - supports mime type audio/basic. The content of the "audio/basic" subtype is single channel audio encoded using 8bit ISDN mu-law [PCM] at a sample rate of 8000 Hz. Requires <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_191_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoder_float.html" target="_self">EncoderFloat</a></td><td class="desc">EncoderFloats - Encodes 16 bit PCM data stream to floats data </td></tr>
<tr id="row_0_192_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoder_l16.html" target="_self">EncoderL16</a></td><td class="desc">EncoderL16s - Condenses 16 bit PCM data stream to 8 bits data. Most microcontrollers can not process 8 bit audio data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This encoder translates 16bit data into 8bit data </td></tr>
<tr id="row_0_193_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_encoder_l8.html" target="_self">EncoderL8</a></td><td class="desc">EncoderL8s - Condenses 16 bit PCM data stream to 8 bits data. Most microcontrollers can not process 8 bit audio data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This encoder translates 16bit data into 8bit data. By default the encoded data is represented as uint8_t, so the values are from 0 to 255 </td></tr>
<tr id="row_0_194_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_envelope_filter.html" target="_self">EnvelopeFilter</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_envelope_filter.html" title="EnvelopeFilter.">EnvelopeFilter</a> </td></tr>
<tr id="row_0_195_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_195_" class="arrow" onclick="toggleFolder('0_195_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_equilizer3_bands.html" target="_self">Equilizer3Bands</a></td><td class="desc">3 Band Equilizer inspired from <a href="https://www.musicdsp.org/en/latest/Filters/236-3-band-equaliser.html">https://www.musicdsp.org/en/latest/Filters/236-3-band-equaliser.html</a> </td></tr>
<tr id="row_0_195_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_equilizer3_bands_1_1_e_q_s_t_a_t_e.html" target="_self">EQSTATE</a></td><td class="desc"></td></tr>
<tr id="row_0_196_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_e_s_p3288_audio_output.html" target="_self">ESP3288AudioOutput</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> Adapter for ESP8288-Audio <a class="el" href="classaudio__tools_1_1_audio_output.html" title="Abstract Audio Ouptut class.">AudioOutput</a> </td></tr>
<tr id="row_0_197_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_e_s_p_now_stream.html" target="_self">ESPNowStream</a></td><td class="desc">ESPNow as Arduino <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> </td></tr>
<tr id="row_0_198_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_e_s_p_now_stream_config.html" target="_self">ESPNowStreamConfig</a></td><td class="desc">Configuration for ESP-NOW protocolö.W </td></tr>
<tr id="row_0_199_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_exponential_volume_control.html" target="_self">ExponentialVolumeControl</a></td><td class="desc">Simple exponentional volume control using the formula pow(2.0, input) - 1.0; </td></tr>
<tr id="row_0_200_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_fade.html" target="_self">Fade</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_fade.html" title="Fade In and Fade out in order to prevent popping sound when the audio is started or stopped....">Fade</a> In and <a class="el" href="classaudio__tools_1_1_fade.html" title="Fade In and Fade out in order to prevent popping sound when the audio is started or stopped....">Fade</a> out in order to prevent popping sound when the audio is started or stopped. The fade in/out is performed over the length of the buffer </td></tr>
<tr id="row_0_201_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_fade_converter.html" target="_self">FadeConverter</a></td><td class="desc">Converter which does a fade out or fade in </td></tr>
<tr id="row_0_202_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_fade_stream.html" target="_self">FadeStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which can be used to manage fade in and fade out. Before you read or write data you need to call <a class="el" href="classaudio__tools_1_1_fade_stream.html#ad1fdd56031f1195cb221ab855fb6a102" title="Defines the input AudioInfo.">setAudioInfo()</a> to provide the bits_per_sample and channels </td></tr>
<tr id="row_0_203_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_fast_sine_generator.html" target="_self">FastSineGenerator</a></td><td class="desc">Sine wave which is based on a fast approximation function </td></tr>
<tr id="row_0_204_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_faust_stream.html" target="_self">FaustStream</a></td><td class="desc">Integration into Faust DSP see <a href="https://faust.grame.fr/">https://faust.grame.fr/</a> To generate code from faust, select src and cpp </td></tr>
<tr id="row_0_205_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_f_f_t_bin.html" target="_self">FFTBin</a></td><td class="desc">And individual FFT <a class="el" href="classaudio__tools_1_1_bin.html" title="Provides reduced sampling rates through binning.">Bin</a> </td></tr>
<tr id="row_0_206_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_display.html" target="_self">FFTDisplay</a></td><td class="desc"></td></tr>
<tr id="row_0_207_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver.html" target="_self">FFTDriver</a></td><td class="desc">Abstract Class which defines the basic FFT functionality </td></tr>
<tr id="row_0_208_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver_cmsis_f_f_t.html" target="_self">FFTDriverCmsisFFT</a></td><td class="desc">Driver for Cmsis-FFT see <a href="https://arm-software.github.io/CMSIS_5/DSP">https://arm-software.github.io/CMSIS_5/DSP</a> </td></tr>
<tr id="row_0_209_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver_e_s_p32_f_f_t.html" target="_self">FFTDriverESP32FFT</a></td><td class="desc">Driver for ESP32-FFT <a href="https://github.com/pschatzmann/esp32-fft">https://github.com/pschatzmann/esp32-fft</a> <br />
</td></tr>
<tr id="row_0_210_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver_espressif_f_f_t.html" target="_self">FFTDriverEspressifFFT</a></td><td class="desc">Fft Driver for espressif dsp library: <a href="https://espressif-docs.readthedocs-hosted.com/projects/esp-dsp/en/latest/esp-dsp-apis.html">https://espressif-docs.readthedocs-hosted.com/projects/esp-dsp/en/latest/esp-dsp-apis.html</a> </td></tr>
<tr id="row_0_211_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver_kiss_f_f_t.html" target="_self">FFTDriverKissFFT</a></td><td class="desc">Driver for RealFFT </td></tr>
<tr id="row_0_212_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_f_t_driver_real_f_f_t.html" target="_self">FFTDriverRealFFT</a></td><td class="desc">Driver for RealFFT </td></tr>
<tr id="row_0_213_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_file.html" target="_self">File</a></td><td class="desc">Arduino <a class="el" href="classaudio__tools_1_1_file.html" title="Arduino File support using std::fstream.">File</a> support using std::fstream </td></tr>
<tr id="row_0_214_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_file_loop.html" target="_self">FileLoop</a></td><td class="desc">A simple class which implements a automatic looping file. The file needs to be of the class <a class="el" href="classaudio__tools_1_1_file.html" title="Arduino File support using std::fstream.">File</a> from FS.h. The number of loops can be defined by calling <a class="el" href="classaudio__tools_1_1_file_loop_t.html#a127bfce671f2e8a92304cc87473f3e7e">setLoopCount()</a>. You can also optinally limit the total looping file size by calling <a class="el" href="classaudio__tools_1_1_file_loop_t.html#a6a8807196a10843ecf743d358394cb29" title="optionally defines the requested playing size in bytes">setSize()</a>; </td></tr>
<tr id="row_0_215_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_file_loop_t.html" target="_self">FileLoopT</a></td><td class="desc">A simple class which implements a automatic looping file. In order to support different file implementation the file class is a template parameter. The number of loops can be defined by calling <a class="el" href="classaudio__tools_1_1_file_loop_t.html#a127bfce671f2e8a92304cc87473f3e7e">setLoopCount()</a>. You can also optinally limit the total looping file size by calling <a class="el" href="classaudio__tools_1_1_file_loop_t.html#a6a8807196a10843ecf743d358394cb29" title="optionally defines the requested playing size in bytes">setSize()</a>; </td></tr>
<tr id="row_0_216_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_file_output.html" target="_self">FileOutput</a></td><td class="desc">Simple layer for <a class="el" href="classaudio__tools_1_1_print.html">Print</a> object to write to a c++ file </td></tr>
<tr id="row_0_217_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_filter.html" target="_self">Filter</a></td><td class="desc">Abstract filter interface definition; </td></tr>
<tr id="row_0_218_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_filter_chain.html" target="_self">FilterChain</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_filter_chain.html" title="FilterChain - A Cascade of multiple filters.">FilterChain</a> - A Cascade of multiple filters </td></tr>
<tr id="row_0_219_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_filtered_delay.html" target="_self">FilteredDelay</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_delay.html" title="Delay/Echo AudioEffect. See https://wiki.analog.com/resources/tools-software/sharc-audio-module/barem...">Delay</a> effect that filters the repeat delay </td></tr>
<tr id="row_0_220_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_filtered_stream.html" target="_self">FilteredStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> to which we can apply Filters for each channel. The filter might change the result size! </td></tr>
<tr id="row_0_221_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_filter_effect_base.html" target="_self">FilterEffectBase</a></td><td class="desc">A Base class for filter based effects including methods for simple high, low and band pass filtering </td></tr>
<tr id="row_0_222_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_i_r.html" target="_self">FIR</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_f_i_r.html" title="FIR Filter Converted from https://github.com/sebnil/FIR-filter-Arduino-Library/tree/master/src You ca...">FIR</a> <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a> Converted from <a href="https://github.com/sebnil/FIR-filter-Arduino-Library/tree/master/src">https://github.com/sebnil/FIR-filter-Arduino-Library/tree/master/src</a> You can use <a href="https://www.arc.id.au/FilterDesign.html">https://www.arc.id.au/FilterDesign.html</a> to design the filter </td></tr>
<tr id="row_0_223_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_l_a_c_decoder.html" target="_self">FLACDecoder</a></td><td class="desc">Decoder for FLAC. Depends on <a href="https://github.com/pschatzmann/arduino-libflac">https://github.com/pschatzmann/arduino-libflac</a>. We support an efficient streaming API and an very memory intensitiv standard interface. So you should prefer the streaming interface where you call <a class="el" href="classaudio__tools_1_1_streaming_decoder.html#a33190106b1d5de89d6af68ad5924f7be" title="Defines the output Stream.">setOutput()</a> before the begin and <a class="el" href="classaudio__tools_1_1_f_l_a_c_decoder.html#a68b01f6d74485da20c323b9c68d906fd" title="Stream Interface: Process a single frame - only relevant when input stream has been defined.">copy()</a> in the loop. Validated with <a href="http://www.2l.no/hires/">http://www.2l.no/hires/</a> </td></tr>
<tr id="row_0_224_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_l_a_c_encoder.html" target="_self">FLACEncoder</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_f_l_a_c_encoder.html" title="FLACEncoder.">FLACEncoder</a> </td></tr>
<tr id="row_0_225_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_flat_top.html" target="_self">FlatTop</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_flat_top.html" title="FlatTop FFT Window function.">FlatTop</a> FFT Window function </td></tr>
<tr id="row_0_226_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1float16.html" target="_self">float16</a></td><td class="desc">Stores float values with 2 bytes </td></tr>
<tr id="row_0_227_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1float32.html" target="_self">float32</a></td><td class="desc">Stores float values as uint32_t so that we can use memory allocated with MALLOC_CAP_32BIT </td></tr>
<tr id="row_0_228_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_format_converter_stream.html" target="_self">FormatConverterStream</a></td><td class="desc">Converter which converts bits_per_sample, channels and the sample_rate. The conversion is supported both on the input and output side </td></tr>
<tr id="row_0_229_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_f_s.html" target="_self">FS</a></td><td class="desc">Eumlate <a class="el" href="classaudio__tools_1_1_f_s.html" title="Eumlate FS using C++ or Posix functions.">FS</a> using C++ or Posix functions </td></tr>
<tr id="row_0_230_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_fuzz.html" target="_self">Fuzz</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_fuzz.html" title="Fuzz AudioEffect.">Fuzz</a> <a class="el" href="classaudio__tools_1_1_audio_effect.html" title="Abstract Base class for Sound Effects.">AudioEffect</a> </td></tr>
<tr id="row_0_231_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711___a_l_a_w_decoder.html" target="_self">G711_ALAWDecoder</a></td><td class="desc">64 kbit/s g711 ALOW Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_232_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711___a_l_a_w_encoder.html" target="_self">G711_ALAWEncoder</a></td><td class="desc">64 kbit/s g711 ALOW Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_233_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711___u_l_a_w_decoder.html" target="_self">G711_ULAWDecoder</a></td><td class="desc">64 kbit/s g711 ULOW Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_234_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711___u_l_a_w_encoder.html" target="_self">G711_ULAWEncoder</a></td><td class="desc">64 kbit/s g711 ULOW Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_235_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711_decoder.html" target="_self">G711Decoder</a></td><td class="desc">64 kbit/s g711 ULOW Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> Supported decoder parameters: alaw2linear, ulaw2linear </td></tr>
<tr id="row_0_236_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g711_encoder.html" target="_self">G711Encoder</a></td><td class="desc">64 kbit/s g711 ULOW Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> Supported encoder parameters: linear2alaw2, linear2ulaw </td></tr>
<tr id="row_0_237_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g721_decoder.html" target="_self">G721Decoder</a></td><td class="desc">32Kbps G721 Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_238_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g721_encoder.html" target="_self">G721Encoder</a></td><td class="desc">32Kbps G721 Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_239_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g722_decoder.html" target="_self">G722Decoder</a></td><td class="desc">Decoder for G.722. Depends on <a href="https://github.com/pschatzmann/arduino-libg722">https://github.com/pschatzmann/arduino-libg722</a> </td></tr>
<tr id="row_0_240_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g722_encoder.html" target="_self">G722Encoder</a></td><td class="desc">Encoder for G.722 - Depends on <a href="https://github.com/pschatzmann/arduino-libg722">https://github.com/pschatzmann/arduino-libg722</a>. Inspired by g722enc.c </td></tr>
<tr id="row_0_241_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g723__24_decoder.html" target="_self">G723_24Decoder</a></td><td class="desc">24Kbps G723 Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_242_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g723__24_encoder.html" target="_self">G723_24Encoder</a></td><td class="desc">24Kbps G723 Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_243_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g723__40_decoder.html" target="_self">G723_40Decoder</a></td><td class="desc">40Kbps G723 Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_244_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g723__40_encoder.html" target="_self">G723_40Encoder</a></td><td class="desc">40Kbps G723 Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_245_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g7xx_decoder.html" target="_self">G7xxDecoder</a></td><td class="desc">G723_24, g721, g723_40 Decoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_246_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g7xx_encoder.html" target="_self">G7xxEncoder</a></td><td class="desc">G723_24, g721, g723_40 Encoder based on <a href="https://github.com/pschatzmann/arduino-libg7xx">https://github.com/pschatzmann/arduino-libg7xx</a> </td></tr>
<tr id="row_0_247_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_generated_sound_stream.html" target="_self">GeneratedSoundStream</a></td><td class="desc">Source for reading generated tones. Please note </td></tr>
<tr id="row_0_248_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_generator_fixed_value.html" target="_self">GeneratorFixedValue</a></td><td class="desc">Just returns a constant value </td></tr>
<tr id="row_0_249_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_generator_from_array.html" target="_self">GeneratorFromArray</a></td><td class="desc">We generate the samples from an array which is provided in the constructor </td></tr>
<tr id="row_0_250_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_generator_from_stream.html" target="_self">GeneratorFromStream</a></td><td class="desc">An Adapter Class which lets you use any <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> as a Generator </td></tr>
<tr id="row_0_251_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_generator_mixer.html" target="_self">GeneratorMixer</a></td><td class="desc">Generator which combines (mixes) multiple sound generators into one output </td></tr>
<tr id="row_0_252_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g_s_m_decoder.html" target="_self">GSMDecoder</a></td><td class="desc">Decoder for GSM. Depends on <a href="https://github.com/pschatzmann/arduino-libgsm">https://github.com/pschatzmann/arduino-libgsm</a>. Inspired by gsmdec.c </td></tr>
<tr id="row_0_253_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_g_s_m_encoder.html" target="_self">GSMEncoder</a></td><td class="desc">Encoder for GSM - Depends on <a href="https://github.com/pschatzmann/arduino-libgsm">https://github.com/pschatzmann/arduino-libgsm</a>. Inspired by gsmenc.c </td></tr>
<tr id="row_0_254_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_hamming.html" target="_self">Hamming</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_hamming.html" title="Hamming FFT Window function.">Hamming</a> FFT Window function </td></tr>
<tr id="row_0_255_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_hamming_f_e_c.html" target="_self">HammingFEC</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_hamming.html" title="Hamming FFT Window function.">Hamming</a> forware error correction. Inspired by <a href="https://github.com/nasserkessas/hamming-codes">https://github.com/nasserkessas/hamming-codes</a> </td></tr>
<tr id="row_0_256_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_hann.html" target="_self">Hann</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_hann.html" title="Hann FFT Window function.">Hann</a> FFT Window function </td></tr>
<tr id="row_0_257_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_hardware_serial.html" target="_self">HardwareSerial</a></td><td class="desc"></td></tr>
<tr id="row_0_258_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_hex_dump_output.html" target="_self">HexDumpOutput</a></td><td class="desc">Creates a Hex Dump </td></tr>
<tr id="row_0_259_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_high_pass_filter.html" target="_self">HighPassFilter</a></td><td class="desc">Biquad DF2 High Pass <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_260_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_high_shelf_filter.html" target="_self">HighShelfFilter</a></td><td class="desc">Biquad DF2 High Shelf <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_261_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_h_l_s_parser.html" target="_self">HLSParser</a></td><td class="desc">Simple Parser for HLS data. We select the entry with min bandwidth </td></tr>
<tr id="row_0_262_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_h_l_s_stream.html" target="_self">HLSStream</a></td><td class="desc">HTTP Live Streaming using HLS: The result is a MPEG-TS data stream that must be decoded e.g. with a DecoderMTS </td></tr>
<tr id="row_0_263_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_chunk_reader.html" target="_self">HttpChunkReader</a></td><td class="desc">Http might reply with chunks. So we need to dechunk the data. see <a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">https://en.wikipedia.org/wiki/Chunked_transfer_encoding</a> </td></tr>
<tr id="row_0_264_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_header.html" target="_self">HttpHeader</a></td><td class="desc">In a http request and reply we need to process header information. With this API we can define and query the header information. The individual header lines are stored in a vector. This is the common functionality for the <a class="el" href="classaudio__tools_1_1_http_request.html" title="Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient,...">HttpRequest</a> and <a class="el" href="classaudio__tools_1_1_http_reply_header.html" title="Reading and Writing of Http Replys.">HttpReplyHeader</a> subclasses </td></tr>
<tr id="row_0_265_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_http_header_line.html" target="_self">HttpHeaderLine</a></td><td class="desc">A individual key - value header line </td></tr>
<tr id="row_0_266_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_line_reader.html" target="_self">HttpLineReader</a></td><td class="desc">We read a single line. A terminating 0 is added to the string to make it compliant for c string functions </td></tr>
<tr id="row_0_267_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_reply_header.html" target="_self">HttpReplyHeader</a></td><td class="desc">Reading and Writing of Http Replys </td></tr>
<tr id="row_0_268_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_request.html" target="_self">HttpRequest</a></td><td class="desc">Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient, but I did not manage to extract the mime type from streaming get requests </td></tr>
<tr id="row_0_269_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_http_request_header.html" target="_self">HttpRequestHeader</a></td><td class="desc">Reading and writing of Http Requests </td></tr>
<tr id="row_0_270_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i2_s_codec_config.html" target="_self">I2SCodecConfig</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_i2_s_codec_stream.html" title="I2S Stream which also sets up a codec chip and i2s.">I2SCodecStream</a> </td></tr>
<tr id="row_0_271_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_codec_stream.html" target="_self">I2SCodecStream</a></td><td class="desc">I2S <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which also sets up a codec chip and i2s </td></tr>
<tr id="row_0_272_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html" target="_self">I2SConfigESP32</a></td><td class="desc">Configuration for ESP32 legacy i2s </td></tr>
<tr id="row_0_273_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_config_e_s_p32_v1.html" target="_self">I2SConfigESP32V1</a></td><td class="desc">Configuration for ESP32 i2s for IDF &gt; 5.0 </td></tr>
<tr id="row_0_274_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_config_std.html" target="_self">I2SConfigStd</a></td><td class="desc">Configuration for i2s </td></tr>
<tr id="row_0_275_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_driver_e_s_p32.html" target="_self">I2SDriverESP32</a></td><td class="desc">Basic I2S API - for the ESP32. If we receive 1 channel, we expand the result to 2 channels </td></tr>
<tr id="row_0_276_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_276_" class="arrow" onclick="toggleFolder('0_276_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_driver_e_s_p32_v1.html" target="_self">I2SDriverESP32V1</a></td><td class="desc">Basic I2S API for the ESP32 (using the new API). <a href="https://docs.espressif.com/projects/esp-idf/en/v5.0.1/esp32/api-reference/peripherals/i2s.html#i2s-communication-mode">https://docs.espressif.com/projects/esp-idf/en/v5.0.1/esp32/api-reference/peripherals/i2s.html#i2s-communication-mode</a> </td></tr>
<tr id="row_0_276_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i2_s_driver_e_s_p32_v1_1_1_driver_common.html" target="_self">DriverCommon</a></td><td class="desc"></td></tr>
<tr id="row_0_276_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i2_s_driver_e_s_p32_v1_1_1_driver_i2_s.html" target="_self">DriverI2S</a></td><td class="desc"></td></tr>
<tr id="row_0_277_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_driver_e_s_p8266.html" target="_self">I2SDriverESP8266</a></td><td class="desc">Basic I2S API - for the ESP8266 Only 16 bits are supported ! </td></tr>
<tr id="row_0_278_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_driver_nano_b_l_e.html" target="_self">I2SDriverNanoBLE</a></td><td class="desc">Basic I2S API - for the Arduino Nano BLE Sense See <a href="https://content.arduino.cc/assets/Nano_BLE_MCU-nRF52840_PS_v1.1.pdf">https://content.arduino.cc/assets/Nano_BLE_MCU-nRF52840_PS_v1.1.pdf</a> Douplex mode (RXTX_MODE) is currently not supported, but it should be quite easy to implement </td></tr>
<tr id="row_0_279_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_driver_s_a_m_d.html" target="_self">I2SDriverSAMD</a></td><td class="desc">Basic I2S API - for the SAMD </td></tr>
<tr id="row_0_280_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i2_s_stream.html" target="_self">I2SStream</a></td><td class="desc">We support the <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> interface for the I2S access. In addition we allow a separate mute pin which might also be used to drive a LED.. </td></tr>
<tr id="row_0_281_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_c_y_stream.html" target="_self">ICYStream</a></td><td class="desc">Icecast/Shoutcast Audio <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which splits the data into metadata and audio data. The Audio data is provided via the regular stream functions. The metadata is handled with the help of the <a class="el" href="classaudio__tools_1_1_meta_data_i_c_y.html" title="Icecast/Shoutcast Metadata Handling. Metadata class which splits the data into audio and metadata....">MetaDataICY</a> state machine and provided via a callback method </td></tr>
<tr id="row_0_282_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_c_y_stream_buffered.html" target="_self">ICYStreamBuffered</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_i_c_y_stream.html" title="Icecast/Shoutcast Audio Stream which splits the data into metadata and audio data....">ICYStream</a> implementation for the ESP32 based on a FreeRTOS task This is a Icecast/Shoutcast Audio <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which splits the data into metadata and audio data. The Audio data is provided via the regular stream functions. The metadata is handled with the help of the <a class="el" href="classaudio__tools_1_1_meta_data_i_c_y.html" title="Icecast/Shoutcast Metadata Handling. Metadata class which splits the data into audio and metadata....">MetaDataICY</a> state machine and provided via a callback method </td></tr>
<tr id="row_0_283_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_c_y_url_setup.html" target="_self">ICYUrlSetup</a></td><td class="desc">Resolve icy-metaint from <a class="el" href="classaudio__tools_1_1_http_request.html" title="Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient,...">HttpRequest</a> and execute metadata callbacks </td></tr>
<tr id="row_0_284_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_d3v1.html" target="_self">ID3v1</a></td><td class="desc"></td></tr>
<tr id="row_0_285_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_d3v1_enhanced.html" target="_self">ID3v1Enhanced</a></td><td class="desc"></td></tr>
<tr id="row_0_286_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_d3v2.html" target="_self">ID3v2</a></td><td class="desc"></td></tr>
<tr id="row_0_287_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_d3v2_frame.html" target="_self">ID3v2Frame</a></td><td class="desc"></td></tr>
<tr id="row_0_288_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_d3v2_frame_string.html" target="_self">ID3v2FrameString</a></td><td class="desc"></td></tr>
<tr id="row_0_289_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_i_r.html" target="_self">IIR</a></td><td class="desc">IIRFilter Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/IIRFilter.h">https://github.com/tttapa/Filters/blob/master/src/IIRFilter.h</a> </td></tr>
<tr id="row_0_290_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_l_b_c_decoder.html" target="_self">ILBCDecoder</a></td><td class="desc">Decoder for iLBC. Depends on <a href="https://github.com/pschatzmann/libilbc">https://github.com/pschatzmann/libilbc</a> </td></tr>
<tr id="row_0_291_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_i_l_b_c_encoder.html" target="_self">ILBCEncoder</a></td><td class="desc">Encoder for iLBC - Depends on <a href="https://github.com/pschatzmann/libopenilbc">https://github.com/pschatzmann/libopenilbc</a> </td></tr>
<tr id="row_0_292_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_i_m_a_state.html" target="_self">IMAState</a></td><td class="desc"></td></tr>
<tr id="row_0_293_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_input_merge.html" target="_self">InputMerge</a></td><td class="desc">Merges multiple input channels. The input must be mono! So if you provide 2 mono channels you get a stereo signal as result with the left channel from channel 0 and the right from channel 1 </td></tr>
<tr id="row_0_294_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_input_mixer.html" target="_self">InputMixer</a></td><td class="desc">MixerStream is mixing the input from Multiple Input Streams. All streams must have the same audo format (sample rate, channels, bits per sample) </td></tr>
<tr id="row_0_295_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1int24__3bytes__t.html" target="_self">int24_3bytes_t</a></td><td class="desc">24bit integer which is used for I2S sound processing. The values are really using 3 bytes. It works only on little endian machines! </td></tr>
<tr id="row_0_296_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1int24__4bytes__t.html" target="_self">int24_4bytes_t</a></td><td class="desc">24bit integer which is used for I2S sound processing. The values are represented as int32_t, but only 3 bytes are used. If you assign values which are too big, they are clipped </td></tr>
<tr id="row_0_297_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_jpeg_open_c_v.html" target="_self">JpegOpenCV</a></td><td class="desc">Display image with opencv to be used on the desktop </td></tr>
<tr id="row_0_298_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_jpeg_t_f_t.html" target="_self">JpegTFT</a></td><td class="desc">Display jpeg image using <a href="https://github.com/Bodmer/TFT_eSPI">https://github.com/Bodmer/TFT_eSPI</a> and <a href="https://github.com/Bodmer/JPEGDecoder">https://github.com/Bodmer/JPEGDecoder</a> </td></tr>
<tr id="row_0_299_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_jupyter_audio_t.html" target="_self">JupyterAudioT</a></td><td class="desc">Output to Jupyter. We write the data just to a file from where we can load the data again for different representations </td></tr>
<tr id="row_0_300_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_last_sample_fader.html" target="_self">LastSampleFader</a></td><td class="desc">If we end audio and the last sample is not close to 0 we can hear a popping noise. This functionality brings the last value slowly to 0. Typless implementation </td></tr>
<tr id="row_0_301_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_last_sample_fader_t.html" target="_self">LastSampleFaderT</a></td><td class="desc">If we end audio and the last sample is not close to 0 we can hear a popping noise. This functionality brings the last value slowly to 0 </td></tr>
<tr id="row_0_302_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_l_c3_decoder.html" target="_self">LC3Decoder</a></td><td class="desc">Decoder for LC3. Depends on <a href="https://github.com/pschatzmann/arduino-liblc3">https://github.com/pschatzmann/arduino-liblc3</a> </td></tr>
<tr id="row_0_303_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_l_c3_encoder.html" target="_self">LC3Encoder</a></td><td class="desc">Encoder for LC3 - Depends on <a href="https://github.com/pschatzmann/arduino-liblc3">https://github.com/pschatzmann/arduino-liblc3</a> </td></tr>
<tr id="row_0_304_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_l_e_d_output.html" target="_self">LEDOutput</a></td><td class="desc">LED output using the FastLED library </td></tr>
<tr id="row_0_305_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_l_e_d_output_config.html" target="_self">LEDOutputConfig</a></td><td class="desc"></td></tr>
<tr id="row_0_306_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_l_e_d_output_uno_r4.html" target="_self">LEDOutputUnoR4</a></td><td class="desc">LED output using the R4 LED matrix library </td></tr>
<tr id="row_0_307_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_l_e_d_output_uno_r4_config.html" target="_self">LEDOutputUnoR4Config</a></td><td class="desc"></td></tr>
<tr id="row_0_308_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_linear_volume_control.html" target="_self">LinearVolumeControl</a></td><td class="desc">The simplest possible implementation of a <a class="el" href="classaudio__tools_1_1_volume_control.html" title="Abstract class for handling of the linear input volume to determine the multiplication factor which s...">VolumeControl</a>: The input = output which describes a linear curve. You would use this implementation if you physically connect an audio pot! </td></tr>
<tr id="row_0_309_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_309_" class="arrow" onclick="toggleFolder('0_309_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_list.html" target="_self">List</a></td><td class="desc">Double linked list </td></tr>
<tr id="row_0_309_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_list_1_1_iterator.html" target="_self">Iterator</a></td><td class="desc"></td></tr>
<tr id="row_0_309_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_list_1_1_node.html" target="_self">Node</a></td><td class="desc"></td></tr>
<tr id="row_0_310_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_lock.html" target="_self">Lock</a></td><td class="desc">A simple RIA locking class for the ESP32 using _lock_t </td></tr>
<tr id="row_0_311_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_lock_guard.html" target="_self">LockGuard</a></td><td class="desc">RAII implementaion using a <a class="el" href="classaudio__tools_1_1_mutex.html" title="Mutex implemntation using FreeRTOS.">Mutex</a>: Only a few microcontrollers provide lock guards, so I decided to roll my own solution where we can just use a dummy <a class="el" href="classaudio__tools_1_1_mutex.html" title="Mutex implemntation using FreeRTOS.">Mutex</a> implementation that does nothing for the cases where this is not needed </td></tr>
<tr id="row_0_312_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_logarithmic_volume_control.html" target="_self">LogarithmicVolumeControl</a></td><td class="desc">Parametric Logarithmic volume control. Using the formula pow(b,input) * a - a, where b is b = pow(((1/ym)-1), 2) and a is a = 1.0 / (b - 1.0). The parameter ym is determining the steepness. See <a href="https://electronics.stackexchange.com/questions/304692/formula-for-logarithmic-audio-taper-pot">https://electronics.stackexchange.com/questions/304692/formula-for-logarithmic-audio-taper-pot</a> </td></tr>
<tr id="row_0_313_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_low_pass_filter.html" target="_self">LowPassFilter</a></td><td class="desc">Biquad DF2 Low Pass <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_314_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_low_shelf_filter.html" target="_self">LowShelfFilter</a></td><td class="desc">Biquad DF2 Low Shelf <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_315_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_maximilian.html" target="_self">Maximilian</a></td><td class="desc">AudioTools integration with <a class="el" href="classaudio__tools_1_1_maximilian.html" title="AudioTools integration with Maximilian.">Maximilian</a> </td></tr>
<tr id="row_0_316_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_measuring_stream.html" target="_self">MeasuringStream</a></td><td class="desc">Class which measures the thruput </td></tr>
<tr id="row_0_317_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_317_" class="arrow" onclick="toggleFolder('0_317_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_median_filter.html" target="_self">MedianFilter</a></td><td class="desc">An embedded friendly, fast one-dimensional median filter algorithm implementation in C and C++ Useful for spike and noise removal from analog signals or other DSP Also known as "salt-and-pepper noise" or "impulse noise" filter </td></tr>
<tr id="row_0_317_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_median_filter_1_1_median_filter__t.html" target="_self">MedianFilter_t</a></td><td class="desc"></td></tr>
<tr id="row_0_317_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_median_filter_1_1_median_node__t.html" target="_self">MedianNode_t</a></td><td class="desc"></td></tr>
<tr id="row_0_318_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_memory_manager.html" target="_self">MemoryManager</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_memory_manager.html" title="MemoryManager which activates the use of external SPIRAM memory. When external memory is in use,...">MemoryManager</a> which activates the use of external SPIRAM memory. When external memory is in use, the allocation strategy is to initially try to satisfy smaller allocation requests with internal memory and larger requests with external memory. This sets the limit between the two, as well as generally enabling allocation in external memory </td></tr>
<tr id="row_0_319_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_memory_output.html" target="_self">MemoryOutput</a></td><td class="desc">Writes to a preallocated memory </td></tr>
<tr id="row_0_320_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_memory_stream.html" target="_self">MemoryStream</a></td><td class="desc">A simple <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> implementation which is backed by allocated memory </td></tr>
<tr id="row_0_321_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_321_" class="arrow" onclick="toggleFolder('0_321_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_filter.html" target="_self">MetaDataFilter</a></td><td class="desc">Class which filters out <a class="el" href="structaudio__tools_1_1_i_d3v1.html">ID3v1</a> and <a class="el" href="structaudio__tools_1_1_meta_data_filter_1_1_i_d3v2.html" title="ID3 verion 2 TAG Header (10 bytes)">ID3v2</a> Metadata and provides only the audio data to the decoder </td></tr>
<tr id="row_0_321_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_meta_data_filter_1_1_i_d3v2.html" target="_self">ID3v2</a></td><td class="desc">ID3 verion 2 TAG Header (10 bytes) </td></tr>
<tr id="row_0_322_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_i_c_y.html" target="_self">MetaDataICY</a></td><td class="desc">Icecast/Shoutcast Metadata Handling. Metadata class which splits the data into audio and metadata. The result is provided via callback methods. see <a href="https://www.codeproject.com/Articles/11308/SHOUTcast-Stream-Ripper">https://www.codeproject.com/Articles/11308/SHOUTcast-Stream-Ripper</a> </td></tr>
<tr id="row_0_323_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_i_d3.html" target="_self">MetaDataID3</a></td><td class="desc">Simple ID3 <a class="el" href="class_meta.html" title="minimial implementtion of Meta which just ignores the data">Meta</a> Data Parser which supports ID3 V1 and V2 and implements the <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> interface. You just need to set the callback(s) to receive the result and copy the audio data to this stream </td></tr>
<tr id="row_0_324_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_i_d3_base.html" target="_self">MetaDataID3Base</a></td><td class="desc">ID3 <a class="el" href="class_meta.html" title="minimial implementtion of Meta which just ignores the data">Meta</a> Data Common Functionality </td></tr>
<tr id="row_0_325_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_i_d3_v1.html" target="_self">MetaDataID3V1</a></td><td class="desc">Simple ID3 <a class="el" href="class_meta.html" title="minimial implementtion of Meta which just ignores the data">Meta</a> Data API which supports ID3 V1 </td></tr>
<tr id="row_0_326_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_i_d3_v2.html" target="_self">MetaDataID3V2</a></td><td class="desc">Simple ID3 <a class="el" href="class_meta.html" title="minimial implementtion of Meta which just ignores the data">Meta</a> Data API which supports ID3 V2: We only support the "TALB", "TOPE", "TIT2", "TCON" tags </td></tr>
<tr id="row_0_327_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_meta_data_output.html" target="_self">MetaDataOutput</a></td><td class="desc">ID3 and Icecast/Shoutcast metadata output support. Just write the audio data to an object of this class and receive the metadata via the callback </td></tr>
<tr id="row_0_328_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_mini_audio_config.html" target="_self">MiniAudioConfig</a></td><td class="desc">Configuration for MiniAudio </td></tr>
<tr id="row_0_329_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_mini_audio_stream.html" target="_self">MiniAudioStream</a></td><td class="desc">MiniAudio: <a href="https://miniaud.io/">https://miniaud.io/</a> </td></tr>
<tr id="row_0_330_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_modifying_output.html" target="_self">ModifyingOutput</a></td><td class="desc">Abstract class: Objects can be put into a pipleline </td></tr>
<tr id="row_0_331_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_modifying_stream.html" target="_self">ModifyingStream</a></td><td class="desc">Abstract class: Objects can be put into a pipleline </td></tr>
<tr id="row_0_332_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_modulation_base_class.html" target="_self">ModulationBaseClass</a></td><td class="desc">Class provides a wave table that can be populated with a number of preallocated waveforms. These can be used to generate audio in themselves or to modulate The parameters of another effect. Class initialised with sample rate </td></tr>
<tr id="row_0_333_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_mozzi_config.html" target="_self">MozziConfig</a></td><td class="desc"></td></tr>
<tr id="row_0_334_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_mozzi_stream.html" target="_self">MozziStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> that provides audio information that was generated using the Mozzi API using the updateControl() and updateAudio() methods </td></tr>
<tr id="row_0_335_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_p3_decoder_helix.html" target="_self">MP3DecoderHelix</a></td><td class="desc">MP3 Decoder using libhelix: <a href="https://github.com/pschatzmann/arduino-libhelix">https://github.com/pschatzmann/arduino-libhelix</a> This is basically just a simple wrapper to provide <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> and <a class="el" href="classaudio__tools_1_1_audio_info_support.html" title="Supports changes to the sampling rate, bits and channels.">AudioInfoSupport</a> </td></tr>
<tr id="row_0_336_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_p3_decoder_m_a_d.html" target="_self">MP3DecoderMAD</a></td><td class="desc">MP3 Decoder using <a href="https://github.com/pschatzmann/arduino-libmad">https://github.com/pschatzmann/arduino-libmad</a> </td></tr>
<tr id="row_0_337_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_p3_decoder_mini.html" target="_self">MP3DecoderMini</a></td><td class="desc">MP3 Decoder using <a href="https://github.com/pschatzmann/minimp3">https://github.com/pschatzmann/minimp3</a>. This decoder does not provide any good results and it is not suited to decode any audio above 32000 on an ESP32. So the sample rate is limited by the MINIMP3_MAX_SAMPLE_RATE variable </td></tr>
<tr id="row_0_338_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_p3_encoder_l_a_m_e.html" target="_self">MP3EncoderLAME</a></td><td class="desc">Encodes PCM data to the MP3 format and writes the result to a stream This is basically just a wrapper using <a href="https://github.com/pschatzmann/arduino-liblame">https://github.com/pschatzmann/arduino-liblame</a> </td></tr>
<tr id="row_0_339_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_m_p4_atom.html" target="_self">MP4Atom</a></td><td class="desc">Represents a single MPEG4 atom </td></tr>
<tr id="row_0_340_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_p4_parse_buffer.html" target="_self">MP4ParseBuffer</a></td><td class="desc"></td></tr>
<tr id="row_0_341_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_341_" class="arrow" onclick="toggleFolder('0_341_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_m_t_s_decoder.html" target="_self">MTSDecoder</a></td><td class="desc">MPEG-TS (MTS) decoder. Extracts the AAC audio data from a MPEG-TS (MTS) data stream. You can define the relevant stream types via the API. The parsing logic was taken from: <a href="https://github.com/Yokohama-Miyazawa/M5HLSPlayer/blob/main/src/AudioGeneratorTS.cpp">https://github.com/Yokohama-Miyazawa/M5HLSPlayer/blob/main/src/AudioGeneratorTS.cpp</a> Status: experimental! </td></tr>
<tr id="row_0_341_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_m_t_s_decoder_1_1pid__array.html" target="_self">pid_array</a></td><td class="desc"></td></tr>
<tr id="row_0_342_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_multi_converter.html" target="_self">MultiConverter</a></td><td class="desc">Combines multiple converters </td></tr>
<tr id="row_0_343_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_multi_output.html" target="_self">MultiOutput</a></td><td class="desc">Replicates the output to multiple destinations </td></tr>
<tr id="row_0_344_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_musical_notes.html" target="_self">MusicalNotes</a></td><td class="desc">Determination of the frequency of a music note </td></tr>
<tr id="row_0_345_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_mutex.html" target="_self">Mutex</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_mutex.html" title="Mutex implemntation using FreeRTOS.">Mutex</a> implemntation using FreeRTOS </td></tr>
<tr id="row_0_346_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_mutex_base.html" target="_self">MutexBase</a></td><td class="desc">Empty <a class="el" href="classaudio__tools_1_1_mutex.html" title="Mutex implemntation using FreeRTOS.">Mutex</a> implementation which does nothing </td></tr>
<tr id="row_0_347_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_nano___b_l_e__freq__info.html" target="_self">Nano_BLE_freq_info</a></td><td class="desc">Mapping Frequency constants to available frequencies </td></tr>
<tr id="row_0_348_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_nano___b_l_e__ratio__info.html" target="_self">Nano_BLE_ratio_info</a></td><td class="desc">Mapping from Ratio Constants to frequency ratios </td></tr>
<tr id="row_0_349_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_n_buffer.html" target="_self">NBuffer</a></td><td class="desc">A lock free N buffer. If count=2 we create a DoubleBuffer, if count=3 a TripleBuffer etc </td></tr>
<tr id="row_0_350_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_no_filter.html" target="_self">NoFilter</a></td><td class="desc">No change to the input </td></tr>
<tr id="row_0_351_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_n_o_p_converter.html" target="_self">NOPConverter</a></td><td class="desc">Dummy converter which does nothing </td></tr>
<tr id="row_0_352_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_notch_filter.html" target="_self">NotchFilter</a></td><td class="desc">Biquad DF2 Notch <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>. When dealing with high-order <a class="el" href="classaudio__tools_1_1_i_i_r.html" title="IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter....">IIR</a> filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from <a href="https://github.com/tttapa/Filters/blob/master/src/BiQuad.h">https://github.com/tttapa/Filters/blob/master/src/BiQuad.h</a> Use float or double (and not a integer type) as type parameter </td></tr>
<tr id="row_0_353_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_null_stream.html" target="_self">NullStream</a></td><td class="desc">The Arduino <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which provides silence and simulates a null device when used as audio target or audio source </td></tr>
<tr id="row_0_354_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_number_converter.html" target="_self">NumberConverter</a></td><td class="desc">Converts from a source to a target number with a different type </td></tr>
<tr id="row_0_355_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_number_format_converter_stream.html" target="_self">NumberFormatConverterStream</a></td><td class="desc">Converter which converts between bits_per_sample and 16 bits. The templated <a class="el" href="classaudio__tools_1_1_number_format_converter_stream_t.html" title="Converter which converts from source bits_per_sample to target bits_per_sample.">NumberFormatConverterStreamT</a> class is used based on the information provided by the bits_per_sample in the configuration </td></tr>
<tr id="row_0_356_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_number_format_converter_stream_t.html" target="_self">NumberFormatConverterStreamT</a></td><td class="desc">Converter which converts from source bits_per_sample to target bits_per_sample </td></tr>
<tr id="row_0_357_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_number_reader.html" target="_self">NumberReader</a></td><td class="desc">Reads n numbers from an Arduino <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> </td></tr>
<tr id="row_0_358_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_nuttall.html" target="_self">Nuttall</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_nuttall.html" title="Nuttall FFT Window function.">Nuttall</a> FFT Window function </td></tr>
<tr id="row_0_359_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ogg_container_decoder.html" target="_self">OggContainerDecoder</a></td><td class="desc">Decoder for Ogg Container. Decodes a packet from an Ogg container. The Ogg begin segment contains the <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> structure. You can subclass and overwrite the beginOfSegment() method to implement your own headers Dependency: <a href="https://github.com/pschatzmann/arduino-libopus">https://github.com/pschatzmann/arduino-libopus</a> </td></tr>
<tr id="row_0_360_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ogg_container_encoder.html" target="_self">OggContainerEncoder</a></td><td class="desc">Encoder for Ogg Container. Encodes a packet for an Ogg container. The Ogg begin segment contains the <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> structure. You can subclass ond overwrite the writeHeader() method to implement your own header logic. When an optional encoder is specified in the constructor we package the encoded data. Dependency: <a href="https://github.com/pschatzmann/arduino-libopus">https://github.com/pschatzmann/arduino-libopus</a> </td></tr>
<tr id="row_0_361_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ogg_container_output.html" target="_self">OggContainerOutput</a></td><td class="desc">Output class for the <a class="el" href="classaudio__tools_1_1_ogg_container_encoder.html" title="Encoder for Ogg Container. Encodes a packet for an Ogg container. The Ogg begin segment contains the ...">OggContainerEncoder</a>. Each write is ending up as container entry </td></tr>
<tr id="row_0_362_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_opus_audio_decoder.html" target="_self">OpusAudioDecoder</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_opus_audio_decoder.html" title="OpusAudioDecoder: Depends on https://github.com/pschatzmann/arduino-libopus.git.">OpusAudioDecoder</a>: Depends on <a href="https://github.com/pschatzmann/arduino-libopus.git">https://github.com/pschatzmann/arduino-libopus.git</a> </td></tr>
<tr id="row_0_363_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_opus_audio_encoder.html" target="_self">OpusAudioEncoder</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_opus_audio_encoder.html" title="OpusAudioEncoder: Dependens on https://github.com/pschatzmann/arduino-libopus.git.">OpusAudioEncoder</a>: Dependens on <a href="https://github.com/pschatzmann/arduino-libopus.git">https://github.com/pschatzmann/arduino-libopus.git</a> </td></tr>
<tr id="row_0_364_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_opus_encoder_settings.html" target="_self">OpusEncoderSettings</a></td><td class="desc">Setting for Opus Encoder where the following values are valid: -1 indicates that the default value should be used and that this codec is not setting the value </td></tr>
<tr id="row_0_365_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_opus_ogg_decoder.html" target="_self">OpusOggDecoder</a></td><td class="desc">Opus Decoder which uses the Ogg Container. See <a href="https://datatracker.ietf.org/doc/html/rfc7845">https://datatracker.ietf.org/doc/html/rfc7845</a>. The audio data is transmitted in frames and the header information contains the sampler rate, channels and other critical info. Dependency: <a href="https://github.com/pschatzmann/arduino-libopus">https://github.com/pschatzmann/arduino-libopus</a> </td></tr>
<tr id="row_0_366_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_opus_ogg_encoder.html" target="_self">OpusOggEncoder</a></td><td class="desc">Opus Encoder which uses the Ogg Container: see <a href="https://datatracker.ietf.org/doc/html/rfc7845">https://datatracker.ietf.org/doc/html/rfc7845</a> Dependency: <a href="https://github.com/pschatzmann/arduino-libopus">https://github.com/pschatzmann/arduino-libopus</a> </td></tr>
<tr id="row_0_367_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_opus_ogg_writer.html" target="_self">OpusOggWriter</a></td><td class="desc"></td></tr>
<tr id="row_0_368_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_opus_settings.html" target="_self">OpusSettings</a></td><td class="desc">Setting for Opus Decoder </td></tr>
<tr id="row_0_369_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_output_mixer.html" target="_self">OutputMixer</a></td><td class="desc">Mixing of multiple outputs to one final output </td></tr>
<tr id="row_0_370_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_parameter.html" target="_self">Parameter</a></td><td class="desc">A constant value </td></tr>
<tr id="row_0_371_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_parse_buffer.html" target="_self">ParseBuffer</a></td><td class="desc">We try to keep the necessary buffer for parsing as small as possible, The data() method provides the start of the actual data and with consume we remove the processed data from the buffer to make space again </td></tr>
<tr id="row_0_372_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_parse_object.html" target="_self">ParseObject</a></td><td class="desc"></td></tr>
<tr id="row_0_373_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_i_d_controller.html" target="_self">PIDController</a></td><td class="desc">A simple header only PID Controller </td></tr>
<tr id="row_0_374_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_pin_info_e_s_p32.html" target="_self">PinInfoESP32</a></td><td class="desc">Information for a PIN </td></tr>
<tr id="row_0_375_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_pink_noise_generator.html" target="_self">PinkNoiseGenerator</a></td><td class="desc">Generates pink noise </td></tr>
<tr id="row_0_376_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_376_" class="arrow" onclick="toggleFolder('0_376_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_pipeline.html" target="_self">Pipeline</a></td><td class="desc">We can build a input or an output chain: an input chain starts with <a class="el" href="classaudio__tools_1_1_pipeline.html#a8292a3cbdb5ef17ecda23b9898e95f20" title="Defines the input for an input pipeline: must be first call before add()">setInput()</a>; followed by <a class="el" href="classaudio__tools_1_1_pipeline.html#a9e411ff8beb1e3b7b4bf3a4d1645c035" title="adds a component">add()</a> an output chain consinsts of <a class="el" href="classaudio__tools_1_1_pipeline.html#a9e411ff8beb1e3b7b4bf3a4d1645c035" title="adds a component">add()</a> and ends with <a class="el" href="classaudio__tools_1_1_pipeline.html#a69ca5b1320815cd4499b3749c53135d9" title="Defines the output for an output pipeline: must be last call after add()">setOutput()</a>; </td></tr>
<tr id="row_0_376_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_pipeline_1_1_modifying_stream_adapter.html" target="_self">ModifyingStreamAdapter</a></td><td class="desc">Support for <a class="el" href="classaudio__tools_1_1_modifying_output.html" title="Abstract class: Objects can be put into a pipleline.">ModifyingOutput</a> </td></tr>
<tr id="row_0_377_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_pitch_shift.html" target="_self">PitchShift</a></td><td class="desc">Shifts the pitch by the indicated step size: e.g. 2 doubles the pitch </td></tr>
<tr id="row_0_378_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_pitch_shift_info.html" target="_self">PitchShiftInfo</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_pitch_shift_output.html" title="Pitch Shift: Shifts the frequency up or down w/o impacting the length! We reduce the channels to 1 to...">PitchShiftOutput</a>: set the pitch_shift to define the shift </td></tr>
<tr id="row_0_379_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_pitch_shift_output.html" target="_self">PitchShiftOutput</a></td><td class="desc">Pitch Shift: Shifts the frequency up or down w/o impacting the length! We reduce the channels to 1 to calculate the pitch shift and provides the pitch shifted result in the correct number of channels. The pitch shifting is done with the help of a buffer that can have potentially multiple implementations </td></tr>
<tr id="row_0_380_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_popping_sound_remover.html" target="_self">PoppingSoundRemover</a></td><td class="desc">Big value gaps (at the beginning and the end of a recording) can lead to some popping sounds. We will try to set the values to 0 until the first transition thru 0 of the audio curve </td></tr>
<tr id="row_0_381_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_port_audio_config.html" target="_self">PortAudioConfig</a></td><td class="desc">PortAudio information </td></tr>
<tr id="row_0_382_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_port_audio_stream.html" target="_self">PortAudioStream</a></td><td class="desc">Arduino Audio <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> using PortAudio </td></tr>
<tr id="row_0_383_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_print.html" target="_self">Print</a></td><td class="desc"></td></tr>
<tr id="row_0_384_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_progress_stream.html" target="_self">ProgressStream</a></td><td class="desc">Generic calss to measure the the total bytes which were processed in order to calculate the progress as a percentage of the total size </td></tr>
<tr id="row_0_385_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_progress_stream_info.html" target="_self">ProgressStreamInfo</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_progress_stream.html" title="Generic calss to measure the the total bytes which were processed in order to calculate the progress ...">ProgressStream</a> </td></tr>
<tr id="row_0_386_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_pure_data_stream.html" target="_self">PureDataStream</a></td><td class="desc">Input and output of Pure Data PD using code generated by the hvcc compiler. The audio format is defined by the sample rate in the Heavy constructor, the number of channels in the ADC and DAC and the bits_per_sample of 16. Therefore the audio format can not be changed dynamically. I recommend to make sure that the input format and output format is consistent, otherwise you need to change the format in PD </td></tr>
<tr id="row_0_387_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_audio_output.html" target="_self">PWMAudioOutput</a></td><td class="desc">Common functionality for PWM output. Please use the <a class="el" href="classaudio__tools_1_1_p_w_m_audio_output.html" title="Common functionality for PWM output. Please use the PWMAudioOutput typedef instead which references t...">PWMAudioOutput</a> typedef instead which references the implementation </td></tr>
<tr id="row_0_388_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_p_w_m_config.html" target="_self">PWMConfig</a></td><td class="desc">Configuration data for PWM audio output </td></tr>
<tr id="row_0_389_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_driver_a_v_r.html" target="_self">PWMDriverAVR</a></td><td class="desc">Experimental: Audio output to PWM pins for the AVR. The AVR supports only up to 2 channels </td></tr>
<tr id="row_0_390_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_driver_e_s_p32.html" target="_self">PWMDriverESP32</a></td><td class="desc">Audio output to PWM pins for the ESP32. The ESP32 supports up to 16 channels </td></tr>
<tr id="row_0_391_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_driver_m_b_e_d.html" target="_self">PWMDriverMBED</a></td><td class="desc">Audio output to PWM pins for MBED based Arduino implementations </td></tr>
<tr id="row_0_392_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_driver_renesas.html" target="_self">PWMDriverRenesas</a></td><td class="desc">Audio output to PWM pins for Renesas based Arduino implementations </td></tr>
<tr id="row_0_393_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_p_w_m_driver_s_t_m32.html" target="_self">PWMDriverSTM32</a></td><td class="desc">Audio output to PWM pins for STM32. We use one timer to generate the sample rate and one timer for the PWM signal </td></tr>
<tr id="row_0_394_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_queue.html" target="_self">Queue</a></td><td class="desc">FIFO <a class="el" href="classaudio__tools_1_1_queue.html" title="FIFO Queue which is based on a List.">Queue</a> which is based on a <a class="el" href="classaudio__tools_1_1_list.html" title="Double linked list.">List</a> </td></tr>
<tr id="row_0_395_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_395_" class="arrow" onclick="toggleFolder('0_395_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_queue_lock_free.html" target="_self">QueueLockFree</a></td><td class="desc">A simple single producer, single consumer lock free queue </td></tr>
<tr id="row_0_395_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_queue_lock_free_1_1_node.html" target="_self">Node</a></td><td class="desc"></td></tr>
<tr id="row_0_396_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_queue_r_t_o_s.html" target="_self">QueueRTOS</a></td><td class="desc">FIFO <a class="el" href="classaudio__tools_1_1_queue.html" title="FIFO Queue which is based on a List.">Queue</a> whch is based on the FreeRTOS queue API. The default allocator will allocate the memory from psram if available </td></tr>
<tr id="row_0_397_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_queue_stream.html" target="_self">QueueStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> class which stores the data in a temporary queue buffer. The queue can be consumed e.g. by a callback function by calling readBytes(); </td></tr>
<tr id="row_0_398_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r2_r_config.html" target="_self">R2RConfig</a></td><td class="desc">R2R configuration </td></tr>
<tr id="row_0_399_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r2_r_driver.html" target="_self">R2RDriver</a></td><td class="desc">R2R driver which uses the Arduino API to setup and write to the digital pins </td></tr>
<tr id="row_0_400_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r2_r_driver_base.html" target="_self">R2RDriverBase</a></td><td class="desc">R2R driver base class </td></tr>
<tr id="row_0_401_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r2_r_output.html" target="_self">R2ROutput</a></td><td class="desc">Output to R-2R DAC. You need to define the used digital pins in the configuration. Any number of bits is supported on max 2 channels. For a 4 bit single channel, you need to define 4 digital pins. see <a href="https://www.electronics-tutorials.ws/combination/r-2r-dac.html">https://www.electronics-tutorials.ws/combination/r-2r-dac.html</a> The default driver implementation uses Arduino digitalWrite(). You can provide your own optimized driver </td></tr>
<tr id="row_0_402_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_readio_head_stream.html" target="_self">ReadioHeadStream</a></td><td class="desc">Arduino <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> which is using the RadioHead library to send and receive data. We use the river API directly </td></tr>
<tr id="row_0_403_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_r_e_c_t.html" target="_self">RECT</a></td><td class="desc"></td></tr>
<tr id="row_0_404_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_rectange.html" target="_self">Rectange</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_rectange.html" title="Rectange FFT Window function.">Rectange</a> FFT Window function </td></tr>
<tr id="row_0_405_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_reed_solomon_f_e_c.html" target="_self">ReedSolomonFEC</a></td><td class="desc">Forward error correction using Reed-Solomon: write is encoding and readBytes does the decoding </td></tr>
<tr id="row_0_406_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_reformat_base_stream.html" target="_self">ReformatBaseStream</a></td><td class="desc">Base class for chained converting streams </td></tr>
<tr id="row_0_407_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_resample_config.html" target="_self">ResampleConfig</a></td><td class="desc">Optional Configuration object. The critical information is the channels and the step_size. All other information is not used </td></tr>
<tr id="row_0_408_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_resample_stream.html" target="_self">ResampleStream</a></td><td class="desc">Dynamic Resampling. We can use a variable factor to speed up or slow down the playback </td></tr>
<tr id="row_0_409_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ring_buffer.html" target="_self">RingBuffer</a></td><td class="desc">Implements a typed Ringbuffer </td></tr>
<tr id="row_0_410_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ring_buffer_file.html" target="_self">RingBufferFile</a></td><td class="desc">An <a class="el" href="classaudio__tools_1_1_file.html" title="Arduino File support using std::fstream.">File</a> backed Ring Buffer that we can use to receive streaming audio. We expect an open p_file as parameter </td></tr>
<tr id="row_0_411_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_ring_buffer_stream.html" target="_self">RingBufferStream</a></td><td class="desc">An <a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> backed by a Ringbuffer. We can write to the end and read from the beginning of the stream </td></tr>
<tr id="row_0_412_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_abt_x.html" target="_self">RTSPFormatAbtX</a></td><td class="desc">AbtX format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> </td></tr>
<tr id="row_0_413_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_audio_tools.html" target="_self">RTSPFormatAudioTools</a></td><td class="desc">RTSPFormat which supports the <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> class </td></tr>
<tr id="row_0_414_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_g711.html" target="_self">RTSPFormatG711</a></td><td class="desc">G711 μ-Law format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> Packet intervall: 20, frame size: any </td></tr>
<tr id="row_0_415_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_g_s_m.html" target="_self">RTSPFormatGSM</a></td><td class="desc">GSM format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> </td></tr>
<tr id="row_0_416_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_opus.html" target="_self">RTSPFormatOpus</a></td><td class="desc">Opus format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> </td></tr>
<tr id="row_0_417_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_p_c_m.html" target="_self">RTSPFormatPCM</a></td><td class="desc">PCM format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> </td></tr>
<tr id="row_0_418_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_format_p_c_m8.html" target="_self">RTSPFormatPCM8</a></td><td class="desc">L8 format for RTSP <a href="https://en.wikipedia.org/wiki/RTP_payload_formats">https://en.wikipedia.org/wiki/RTP_payload_formats</a> </td></tr>
<tr id="row_0_419_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_output.html" target="_self">RTSPOutput</a></td><td class="desc">We can write PCM data to the <a class="el" href="classaudio__tools_1_1_r_t_s_p_output.html" title="We can write PCM data to the RTSPOutput. This is encoded by the indicated encoder (e....">RTSPOutput</a>. This is encoded by the indicated encoder (e.g. <a class="el" href="classaudio__tools_1_1_s_b_c_encoder.html" title="Encoder for SBC - Depends on https://github.com/pschatzmann/arduino-libsbc. Inspired by sbcenc....">SBCEncoder</a>) and can be consumed by a RTSPServer. You have to make sure that the codec supports the provided audio format: e.g. GSM support only 8000 samples per second with one channel. Depends on the <a href="https://github.com/pschatzmann/Micro-RTSP-Audio/">https://github.com/pschatzmann/Micro-RTSP-Audio/</a> library </td></tr>
<tr id="row_0_420_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_output_p_c_m_info.html" target="_self">RTSPOutputPCMInfo</a></td><td class="desc">PCMInfo subclass which provides the audio information from the related <a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> Depends on the <a href="https://github.com/pschatzmann/Micro-RTSP-Audio/">https://github.com/pschatzmann/Micro-RTSP-Audio/</a> library </td></tr>
<tr id="row_0_421_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_p_c_m_audio_info.html" target="_self">RTSPPCMAudioInfo</a></td><td class="desc">PCMInfo subclass which provides the audio information from the <a class="el" href="structaudio__tools_1_1_audio_info.html" title="Basic Audio information which drives e.g. I2S.">AudioInfo</a> parameter </td></tr>
<tr id="row_0_422_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_source_from_audio_stream.html" target="_self">RTSPSourceFromAudioStream</a></td><td class="desc">Simple Facade which can turn <a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> into a IAudioSource. This way we can e.g. use an <a class="el" href="classaudio__tools_1_1_i2_s_stream.html" title="We support the Stream interface for the I2S access. In addition we allow a separate mute pin which mi...">I2SStream</a> as source to stream data Depends on the <a href="https://github.com/pschatzmann/Micro-RTSP-Audio/">https://github.com/pschatzmann/Micro-RTSP-Audio/</a> library </td></tr>
<tr id="row_0_423_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_r_t_s_p_source_stream.html" target="_self">RTSPSourceStream</a></td><td class="desc">Simple Facade which can turn any <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> into a IAudioSource. This way we can e.g. use an <a class="el" href="classaudio__tools_1_1_i2_s_stream.html" title="We support the Stream interface for the I2S access. In addition we allow a separate mute pin which mi...">I2SStream</a> as source to stream data Depends on the <a href="https://github.com/pschatzmann/Micro-RTSP-Audio/">https://github.com/pschatzmann/Micro-RTSP-Audio/</a> library </td></tr>
<tr id="row_0_424_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_b_c_decoder.html" target="_self">SBCDecoder</a></td><td class="desc">Decoder for SBC. Depends on <a href="https://github.com/pschatzmann/arduino-libsbc">https://github.com/pschatzmann/arduino-libsbc</a>. Inspired by sbcdec.c </td></tr>
<tr id="row_0_425_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_b_c_encoder.html" target="_self">SBCEncoder</a></td><td class="desc">Encoder for SBC - Depends on <a href="https://github.com/pschatzmann/arduino-libsbc">https://github.com/pschatzmann/arduino-libsbc</a>. Inspired by sbcenc.c </td></tr>
<tr id="row_0_426_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_scaled_parameter.html" target="_self">ScaledParameter</a></td><td class="desc">Scales a dynamic parameter to the indicated range </td></tr>
<tr id="row_0_427_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_d_direct.html" target="_self">SDDirect</a></td><td class="desc">We access the files directy with an index. The index is determined by a recurseve tree walk thru the directory. Unfortunatly the SDTFAT library has it's own API which is incompatible with the SD API </td></tr>
<tr id="row_0_428_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_d_index.html" target="_self">SDIndex</a></td><td class="desc">We store all the relevant file names in an sequential index file. Form there we can access them via an index </td></tr>
<tr id="row_0_429_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_silence_generator.html" target="_self">SilenceGenerator</a></td><td class="desc">Provides a fixed value (e.g. 0) as sound data. This can be used e.g. to test the output functionality which should optimally just output silence and no artifacts </td></tr>
<tr id="row_0_430_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_silence_removal_converter.html" target="_self">SilenceRemovalConverter</a></td><td class="desc">Removes any silence from the buffer that is longer then n samples with a amplitude below the indicated threshhold. If you process multiple channels you need to multiply the channels with the number of samples to indicate n </td></tr>
<tr id="row_0_431_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_simple_chorus.html" target="_self">SimpleChorus</a></td><td class="desc">Simple Chorus effect with a single delay voice and mono output Chorus is effective between 15 and 20 miliseconds delay of original audio. Requires the sample rate when initialising </td></tr>
<tr id="row_0_432_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_simple_container_config.html" target="_self">SimpleContainerConfig</a></td><td class="desc"></td></tr>
<tr id="row_0_433_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_simple_container_data_header.html" target="_self">SimpleContainerDataHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_434_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_simple_container_meta_data_header.html" target="_self">SimpleContainerMetaDataHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_435_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_simple_delay.html" target="_self">SimpleDelay</a></td><td class="desc">Simple <a class="el" href="classaudio__tools_1_1_delay.html" title="Delay/Echo AudioEffect. See https://wiki.analog.com/resources/tools-software/sharc-audio-module/barem...">Delay</a> effect consiting of a single tap delay with Effect Gain and feed back controls Constructor requires internal delay in samples </td></tr>
<tr id="row_0_436_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_simple_flanger.html" target="_self">SimpleFlanger</a></td><td class="desc">Simple Flanger Effect Consistig of a single voice flanger The flanger has an effective range between 0 and 15 miliseconds in this case dleay buffer should be set to sampleRate*3/200 Constructor requires internal delay in samples </td></tr>
<tr id="row_0_437_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_simple_l_p_f.html" target="_self">SimpleLPF</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_simple_l_p_f.html" title="SimpleLPF.">SimpleLPF</a> </td></tr>
<tr id="row_0_438_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_simulated_audio_pot.html" target="_self">SimulatedAudioPot</a></td><td class="desc">Simple simulated audio pot volume control inspired by <a href="https://eepower.com/resistor-guide/resistor-types/potentiometer-taper/#">https://eepower.com/resistor-guide/resistor-types/potentiometer-taper/#</a> We split up the input/output curve into 2 linear pieces with a slow and a fast raising part. The slow raising part goes from (0,0) to (x,y). The fast raising part goes from (x,y) to (1,1) </td></tr>
<tr id="row_0_439_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_sine_from_table.html" target="_self">SineFromTable</a></td><td class="desc">A sine generator based on a table. The table is created using degrees where one full wave is 360 degrees </td></tr>
<tr id="row_0_440_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_sine_wave_generator.html" target="_self">SineWaveGenerator</a></td><td class="desc">Generates a Sound with the help of sin() function. If you plan to change the amplitude or frequency (incrementally), I suggest to use <a class="el" href="classaudio__tools_1_1_sine_from_table.html" title="A sine generator based on a table. The table is created using degrees where one full wave is 360 degr...">SineFromTable</a> instead </td></tr>
<tr id="row_0_441_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_single_buffer.html" target="_self">SingleBuffer</a></td><td class="desc">A simple Buffer implementation which just uses a (dynamically sized) array </td></tr>
<tr id="row_0_442_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_slice.html" target="_self">Slice</a></td><td class="desc">Helps to split up a big memory array into smaller slices. There are no additinal heap allocations! Example: if we have an array with 9 entries (1,2,3,4,5,6,7,8,9): slices(5) gives 2. slice(5,0) returns size 5 with 1,2,3,4,5 and slice(5,1) returns size 4 with 6,7,8,9! </td></tr>
<tr id="row_0_443_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_smooth_transition.html" target="_self">SmoothTransition</a></td><td class="desc">Changes the samples at the beginning or at the end to slowly ramp up the volume </td></tr>
<tr id="row_0_444_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_o_s_filter.html" target="_self">SOSFilter</a></td><td class="desc">Second Order <a class="el" href="classaudio__tools_1_1_filter.html" title="Abstract filter interface definition;.">Filter</a>: Instead of manually cascading BiQuad filters, you can use a Second Order Sections filter (SOS). converted from <a href="https://github.com/tttapa/Filters/blob/master/src/SOSFilter.h">https://github.com/tttapa/Filters/blob/master/src/SOSFilter.h</a> Use float or float (and not a integer type) as type parameter </td></tr>
<tr id="row_0_445_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_sound_generator.html" target="_self">SoundGenerator</a></td><td class="desc">Base class to define the abstract interface for the sound generating classes </td></tr>
<tr id="row_0_446_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_sound_generator_modulation.html" target="_self">SoundGeneratorModulation</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_sound_generator.html" title="Base class to define the abstract interface for the sound generating classes.">SoundGenerator</a> using the <a class="el" href="classaudio__tools_1_1_modulation_base_class.html" title="Class provides a wave table that can be populated with a number of preallocated waveforms....">ModulationBaseClass</a> to generate the samples </td></tr>
<tr id="row_0_447_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_s_p_d_i_f_config.html" target="_self">SPDIFConfig</a></td><td class="desc">SPDIF configuration </td></tr>
<tr id="row_0_448_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_p_d_i_f_output.html" target="_self">SPDIFOutput</a></td><td class="desc">Output as 16 bit stereo SPDIF on the I2S data output pin </td></tr>
<tr id="row_0_449_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_square_wave_generator.html" target="_self">SquareWaveGenerator</a></td><td class="desc">Generates a square wave sound </td></tr>
<tr id="row_0_450_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_stack.html" target="_self">Stack</a></td><td class="desc">LIFO <a class="el" href="classaudio__tools_1_1_stack.html" title="LIFO Stack which is based on a List.">Stack</a> which is based on a <a class="el" href="classaudio__tools_1_1_list.html" title="Double linked list.">List</a> </td></tr>
<tr id="row_0_451_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_stdio_stream.html" target="_self">StdioStream</a></td><td class="desc"></td></tr>
<tr id="row_0_452_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_chorus.html" target="_self">STKChorus</a></td><td class="desc">Chorus Effect </td></tr>
<tr id="row_0_453_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_chowning_reverb.html" target="_self">STKChowningReverb</a></td><td class="desc">John Chowning's reverberator class </td></tr>
<tr id="row_0_454_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_echo.html" target="_self">STKEcho</a></td><td class="desc">Echo Effect </td></tr>
<tr id="row_0_455_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_effect.html" target="_self">STKEffect</a></td><td class="desc">Use any effect from the STK framework: e.g. Chorus, Echo, FreeVerb, JCRev, PitShift... <a href="https://github.com/pschatzmann/Arduino-STK">https://github.com/pschatzmann/Arduino-STK</a> </td></tr>
<tr id="row_0_456_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_free_verb.html" target="_self">STKFreeVerb</a></td><td class="desc">Jezar at Dreampoint's FreeVerb, implemented in STK </td></tr>
<tr id="row_0_457_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_generator.html" target="_self">STKGenerator</a></td><td class="desc">The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language. You need to install <a href="https://github.com/pschatzmann/Arduino-STK">https://github.com/pschatzmann/Arduino-STK</a> <br />
</td></tr>
<tr id="row_0_458_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_lent_pit_shift.html" target="_self">STKLentPitShift</a></td><td class="desc">Pitch shifter effect class based on the Lent algorithm </td></tr>
<tr id="row_0_459_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_n_reverb.html" target="_self">STKNReverb</a></td><td class="desc">CCRMA's NRev reverberator class </td></tr>
<tr id="row_0_460_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_perry_reverb.html" target="_self">STKPerryReverb</a></td><td class="desc">Perry's simple reverberator class </td></tr>
<tr id="row_0_461_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_pit_shift.html" target="_self">STKPitShift</a></td><td class="desc">Simple Pitch shifter effect class: This class implements a simple pitch shifter using a delay line </td></tr>
<tr id="row_0_462_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_s_t_k_stream.html" target="_self">STKStream</a></td><td class="desc">STK <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> for Instrument or Voicer </td></tr>
<tr id="row_0_463_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_str.html" target="_self">Str</a></td><td class="desc">A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not allow any updates; The ownership of the chr* must be managed externally! </td></tr>
<tr id="row_0_464_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_stream.html" target="_self">Stream</a></td><td class="desc"></td></tr>
<tr id="row_0_465_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_stream_copy.html" target="_self">StreamCopy</a></td><td class="desc">We provide the typeless <a class="el" href="classaudio__tools_1_1_stream_copy.html" title="We provide the typeless StreamCopy as a subclass of StreamCopyT.">StreamCopy</a> as a subclass of <a class="el" href="classaudio__tools_1_1_stream_copy_t.html" title="Typed Stream Copy which supports the conversion from channel to 2 channels. We make sure that we allw...">StreamCopyT</a> </td></tr>
<tr id="row_0_466_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_stream_copy_t.html" target="_self">StreamCopyT</a></td><td class="desc">Typed <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> Copy which supports the conversion from channel to 2 channels. We make sure that we allways copy full samples </td></tr>
<tr id="row_0_467_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_streaming_decoder.html" target="_self">StreamingDecoder</a></td><td class="desc">A Streaming Decoder where we provide both the input and output as streams </td></tr>
<tr id="row_0_468_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_streaming_decoder_adapter.html" target="_self">StreamingDecoderAdapter</a></td><td class="desc">Converts any <a class="el" href="classaudio__tools_1_1_audio_decoder.html" title="Docoding of encoded audio into PCM data.">AudioDecoder</a> to a <a class="el" href="classaudio__tools_1_1_streaming_decoder.html" title="A Streaming Decoder where we provide both the input and output as streams.">StreamingDecoder</a> </td></tr>
<tr id="row_0_469_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_str_ext.html" target="_self">StrExt</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_str.html" title="A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not a...">Str</a> which keeps the data on the heap. We grow the allocated memory only if the copy source is not fitting </td></tr>
<tr id="row_0_470_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_synchronized_buffer.html" target="_self">SynchronizedBuffer</a></td><td class="desc">Wrapper class that can turn any Buffer into a thread save implementation </td></tr>
<tr id="row_0_471_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_synchronized_n_buffer.html" target="_self">SynchronizedNBuffer</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_n_buffer.html" title="A lock free N buffer. If count=2 we create a DoubleBuffer, if count=3 a TripleBuffer etc.">NBuffer</a> which uses some RTOS queues to manage the available and filled buffers </td></tr>
<tr id="row_0_472_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_472_" class="arrow" onclick="toggleFolder('0_472_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_synthesizer.html" target="_self">Synthesizer</a></td><td class="desc">A simple <a class="el" href="classaudio__tools_1_1_synthesizer.html" title="A simple Synthesizer which can generate sound having multiple keys pressed. The main purpose of this ...">Synthesizer</a> which can generate sound having multiple keys pressed. The main purpose of this class is managing the synthezizer channels </td></tr>
<tr id="row_0_472_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_synthesizer_1_1_key_parameter.html" target="_self">KeyParameter</a></td><td class="desc"></td></tr>
<tr id="row_0_473_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_synthesizer_key.html" target="_self">SynthesizerKey</a></td><td class="desc">Arduino GPIO pin to note assossiation </td></tr>
<tr id="row_0_474_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_task.html" target="_self">Task</a></td><td class="desc">FreeRTOS task </td></tr>
<tr id="row_0_475_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_test_generator.html" target="_self">TestGenerator</a></td><td class="desc">Generates a test signal which is easy to check because the values are incremented or decremented by 1 </td></tr>
<tr id="row_0_476_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_abstract_recognize_commands.html" target="_self">TfLiteAbstractRecognizeCommands</a></td><td class="desc">Base class for implementing different primitive decoding models on top of the instantaneous results from running an audio recognition model on a single window of samples </td></tr>
<tr id="row_0_477_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_audio_error_reporter.html" target="_self">TfLiteAudioErrorReporter</a></td><td class="desc">Error Reporter using the Audio Tools Logger </td></tr>
<tr id="row_0_478_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" target="_self">TfLiteAudioStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> which uses Tensorflow Light to analyze the data. If it is used as a generator (where we read audio data) </td></tr>
<tr id="row_0_479_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream_base.html" target="_self">TfLiteAudioStreamBase</a></td><td class="desc">Astract <a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> to provide access to <a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> for Reader and Writers </td></tr>
<tr id="row_0_480_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_tf_lite_config.html" target="_self">TfLiteConfig</a></td><td class="desc">Configuration settings for <a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> </td></tr>
<tr id="row_0_481_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_micro_speach_writer.html" target="_self">TfLiteMicroSpeachWriter</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_tf_lite_micro_speach_writer.html" title="TfLiteMicroSpeachWriter for Audio Data.">TfLiteMicroSpeachWriter</a> for Audio Data </td></tr>
<tr id="row_0_482_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_482_" class="arrow" onclick="toggleFolder('0_482_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_micro_speech_recognize_commands.html" target="_self">TfLiteMicroSpeechRecognizeCommands</a></td><td class="desc">This class is designed to apply a very primitive decoding model on top of the instantaneous results from running an audio recognition model on a single window of samples. It applies smoothing over time so that noisy individual label scores are averaged, increasing the confidence that apparent matches are real. To use it, you should create a class object with the configuration you want, and then feed results from running a TensorFlow model into the processing method. The timestamp for each subsequent call should be increasing from the previous, since the class is designed to process a stream of data over time </td></tr>
<tr id="row_0_482_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_tf_lite_micro_speech_recognize_commands_1_1_result.html" target="_self">Result</a></td><td class="desc"></td></tr>
<tr id="row_0_483_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_quantizer.html" target="_self">TfLiteQuantizer</a></td><td class="desc">Quantizer that helps to quantize and dequantize between float and int8 </td></tr>
<tr id="row_0_484_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_reader.html" target="_self">TfLiteReader</a></td><td class="desc">Input class which provides the next value if the <a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> is treated as an audio sourcce </td></tr>
<tr id="row_0_485_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_sine_reader.html" target="_self">TfLiteSineReader</a></td><td class="desc">Generate a sine output from a model that was trained on the sine method. (=hello_world) </td></tr>
<tr id="row_0_486_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tf_lite_writer.html" target="_self">TfLiteWriter</a></td><td class="desc">Output class which interprets audio data if <a class="el" href="classaudio__tools_1_1_tf_lite_audio_stream.html" title="TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (wher...">TfLiteAudioStream</a> is treated as audio sink </td></tr>
<tr id="row_0_487_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_throttle.html" target="_self">Throttle</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_throttle.html" title="Throttle the sending or receiving of the audio data to limit it to the indicated sample rate.">Throttle</a> the sending or receiving of the audio data to limit it to the indicated sample rate </td></tr>
<tr id="row_0_488_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_throttle_config.html" target="_self">ThrottleConfig</a></td><td class="desc">Configure <a class="el" href="classaudio__tools_1_1_throttle.html" title="Throttle the sending or receiving of the audio data to limit it to the indicated sample rate.">Throttle</a> setting </td></tr>
<tr id="row_0_489_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timed_stream.html" target="_self">TimedStream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_audio_stream.html" title="Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...">AudioStream</a> class that can define a start and (an optional) stop time Usually it is used to wrap an Audio Sink (e.g. <a class="el" href="classaudio__tools_1_1_i2_s_stream.html" title="We support the Stream interface for the I2S access. In addition we allow a separate mute pin which mi...">I2SStream</a>), but wrapping an Audio Source is supported as well. Only wrap classes which represent PCM data! </td></tr>
<tr id="row_0_490_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" target="_self">TimerAlarmRepeating</a></td><td class="desc">Common Interface definition for <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a> </td></tr>
<tr id="row_0_491_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_a_v_r.html" target="_self">TimerAlarmRepeatingDriverAVR</a></td><td class="desc">Repeating Timer functions for repeated execution: Plaease use the typedef <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a> </td></tr>
<tr id="row_0_492_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_base.html" target="_self">TimerAlarmRepeatingDriverBase</a></td><td class="desc"></td></tr>
<tr id="row_0_493_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_e_s_p8266.html" target="_self">TimerAlarmRepeatingDriverESP8266</a></td><td class="desc">Repeating Timer functions for repeated execution: Plaease use the typedef <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a> </td></tr>
<tr id="row_0_494_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_m_b_e_d.html" target="_self">TimerAlarmRepeatingDriverMBED</a></td><td class="desc">Repeating Timer functions for repeated execution: Plaease use the typedef <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a> </td></tr>
<tr id="row_0_495_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_renesas.html" target="_self">TimerAlarmRepeatingDriverRenesas</a></td><td class="desc">Repeating Timer functions for repeated execution: Plaease use the typedef <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a>. By default we use a new GPT timer. You can also request 1 AGT timer by calling setTimer(1); </td></tr>
<tr id="row_0_496_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_alarm_repeating_driver_s_t_m32.html" target="_self">TimerAlarmRepeatingDriverSTM32</a></td><td class="desc">STM32 Repeating Timer functions for repeated execution: Please use the typedef <a class="el" href="classaudio__tools_1_1_timer_alarm_repeating.html" title="Common Interface definition for TimerAlarmRepeating.">TimerAlarmRepeating</a>. By default the TIM1 is used </td></tr>
<tr id="row_0_497_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_timer_callback_audio_stream.html" target="_self">TimerCallbackAudioStream</a></td><td class="desc">Callback driven Audio Source (rx_tx_mode==RX_MODE) or Audio Sink (rx_tx_mode==TX_MODE). This class allows to to integrate external libraries in order to consume or generate a data stream which is based on a timer </td></tr>
<tr id="row_0_498_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_timer_callback_audio_stream_info.html" target="_self">TimerCallbackAudioStreamInfo</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_timer_callback_audio_stream.html" title="Callback driven Audio Source (rx_tx_mode==RX_MODE) or Audio Sink (rx_tx_mode==TX_MODE)....">TimerCallbackAudioStream</a> Configuration </td></tr>
<tr id="row_0_499_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_transformation_reader.html" target="_self">TransformationReader</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_converter_stream.html" title="Both the data of the read or write operations will be converted with the help of the indicated conver...">ConverterStream</a> Helper class which implements the readBytes with the help of write </td></tr>
<tr id="row_0_500_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_tremolo.html" target="_self">Tremolo</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_tremolo.html" title="Tremolo AudioEffect.">Tremolo</a> <a class="el" href="classaudio__tools_1_1_audio_effect.html" title="Abstract Base class for Sound Effects.">AudioEffect</a> </td></tr>
<tr id="row_0_501_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_triangle.html" target="_self">Triangle</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_triangle.html" title="Triangle FFT Window function.">Triangle</a> FFT Window function </td></tr>
<tr id="row_0_502_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_d_p_stream.html" target="_self">UDPStream</a></td><td class="desc">A UDP class which makes sure that we can use UDP as <a class="el" href="classaudio__tools_1_1_audio_source.html" title="Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players.">AudioSource</a> and AudioSink. By default the WiFiUDP object is used and we login to wifi if the ssid and password is provided and we are not already connected </td></tr>
<tr id="row_0_503_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_url.html" target="_self">Url</a></td><td class="desc">URL parser which breaks a full url string up into its individual parts </td></tr>
<tr id="row_0_504_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_history.html" target="_self">URLHistory</a></td><td class="desc"></td></tr>
<tr id="row_0_505_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_loader_h_l_s.html" target="_self">URLLoaderHLS</a></td><td class="desc"></td></tr>
<tr id="row_0_506_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_loader_h_l_s_base.html" target="_self">URLLoaderHLSBase</a></td><td class="desc">Abstract API for <a class="el" href="classaudio__tools_1_1_u_r_l_loader_h_l_s.html">URLLoaderHLS</a> </td></tr>
<tr id="row_0_507_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_loader_h_l_s_output.html" target="_self">URLLoaderHLSOutput</a></td><td class="desc">URLLoader which saves the HLS segments to the indicated output </td></tr>
<tr id="row_0_508_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_stream.html" target="_self">URLStream</a></td><td class="desc">Represents the content of a URL as <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a>. We use the WiFi.h API </td></tr>
<tr id="row_0_509_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_u_r_l_stream_buffered.html" target="_self">URLStreamBuffered</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_u_r_l_stream.html" title="Represents the content of a URL as Stream. We use the WiFi.h API.">URLStream</a> implementation for the ESP32 based on a separate FreeRTOS task </td></tr>
<tr id="row_0_510_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_variable_speed_ring_buffer.html" target="_self">VariableSpeedRingBuffer</a></td><td class="desc">Optimized Buffer implementation for Pitch Shift. We try to interpolate the samples and restore the phase when the read pointer and write pointer overtake each other </td></tr>
<tr id="row_0_511_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_variable_speed_ring_buffer180.html" target="_self">VariableSpeedRingBuffer180</a></td><td class="desc">Varialbe speed ring buffer where we read with 0 and 180 degree and blend the result to prevent overrun artifacts. See <a href="https://github.com/YetAnotherElectronicsChannel/STM32_DSP_PitchShift">https://github.com/YetAnotherElectronicsChannel/STM32_DSP_PitchShift</a> </td></tr>
<tr id="row_0_512_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_variable_speed_ring_buffer_simple.html" target="_self">VariableSpeedRingBufferSimple</a></td><td class="desc">Very Simple Buffer implementation for Pitch Shift. We write in constant speed, but reading can be done in a variable speed. We will hear some noise when the buffer read and write pointers overrun each other </td></tr>
<tr id="row_0_513_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_v_b_a_n_config.html" target="_self">VBANConfig</a></td><td class="desc"></td></tr>
<tr id="row_0_514_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_v_b_a_n_stream.html" target="_self">VBANStream</a></td><td class="desc">VBAN Audio Source and Sink for the ESP32. For further details please see <a href="https://vb-audio.com/Voicemeeter/vban.htm">https://vb-audio.com/Voicemeeter/vban.htm</a> . Inspired by <a href="https://github.com/rkinnett/ESP32-VBAN-Audio-Source/tree/master">https://github.com/rkinnett/ESP32-VBAN-Audio-Source/tree/master</a> and <a href="https://github.com/rkinnett/ESP32-VBAN-Network-Audio-Player">https://github.com/rkinnett/ESP32-VBAN-Network-Audio-Player</a> </td></tr>
<tr id="row_0_515_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_515_" class="arrow" onclick="toggleFolder('0_515_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_vector.html" target="_self">Vector</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_vector.html" title="Vector implementation which provides the most important methods as defined by std::vector....">Vector</a> implementation which provides the most important methods as defined by std::vector. This class it is quite handy to have and most of the times quite better then dealing with raw c arrays </td></tr>
<tr id="row_0_515_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_vector_1_1iterator.html" target="_self">iterator</a></td><td class="desc">Iterator for the <a class="el" href="classaudio__tools_1_1_vector.html" title="Vector implementation which provides the most important methods as defined by std::vector....">Vector</a> class </td></tr>
<tr id="row_0_516_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_video_audio_buffered_sync.html" target="_self">VideoAudioBufferedSync</a></td><td class="desc">Logic to Synchronize video and audio output: we use a buffer to store the audio and instead of delaying the frames with delay() we play audio. The bufferSize defines the audio buffer in bytes. The correctionMs is used to slow down or speed up the playback of the video to prevent any audio buffer underflows </td></tr>
<tr id="row_0_517_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_video_audio_sync.html" target="_self">VideoAudioSync</a></td><td class="desc">Logic to Synchronize video and audio output: This is the minimum implementatin which actually does not synchronize, but directly processes the data. No additinal memory is used! Provide your own optimized platform specific implementation </td></tr>
<tr id="row_0_518_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_video_output.html" target="_self">VideoOutput</a></td><td class="desc">Abstract class for video playback. This class is used to assemble a complete video frame in memory </td></tr>
<tr id="row_0_519_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_volume_control.html" target="_self">VolumeControl</a></td><td class="desc">Abstract class for handling of the linear input volume to determine the multiplication factor which should be applied to the audio signal </td></tr>
<tr id="row_0_520_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_volume_meter.html" target="_self">VolumeMeter</a></td><td class="desc">A simple class to determine the volume. You can use it as final output or as output or input in your audio chain </td></tr>
<tr id="row_0_521_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_volume_stream.html" target="_self">VolumeStream</a></td><td class="desc">Adjust the volume of the related input or output: To work properly the class needs to know the bits per sample and number of channels! AudioChanges are forwareded to the related <a class="el" href="classaudio__tools_1_1_print.html">Print</a> or <a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> class </td></tr>
<tr id="row_0_522_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_volume_stream_config.html" target="_self">VolumeStreamConfig</a></td><td class="desc">Config for <a class="el" href="classaudio__tools_1_1_volume_stream.html" title="Adjust the volume of the related input or output: To work properly the class needs to know the bits p...">VolumeStream</a> </td></tr>
<tr id="row_0_523_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_volume_support.html" target="_self">VolumeSupport</a></td><td class="desc">Supports the setting and getting of the volume </td></tr>
<tr id="row_0_524_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_vorbis_decoder.html" target="_self">VorbisDecoder</a></td><td class="desc">Vorbis Streaming Decoder using <a href="https://github.com/pschatzmann/arduino-libvorbis-tremor">https://github.com/pschatzmann/arduino-libvorbis-tremor</a> </td></tr>
<tr id="row_0_525_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_v_s1053_config.html" target="_self">VS1053Config</a></td><td class="desc">Configuration for <a class="el" href="classaudio__tools_1_1_v_s1053_stream.html" title="VS1053 Output Interface which processes PCM data by default. If you want to write encoded data set is...">VS1053Stream</a> </td></tr>
<tr id="row_0_526_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_v_s1053_stream.html" target="_self">VS1053Stream</a></td><td class="desc">VS1053 Output Interface which processes PCM data by default. If you want to write encoded data set is_encoded_data = true in the configuration; </td></tr>
<tr id="row_0_527_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_w_a_v_audio_info.html" target="_self">WAVAudioInfo</a></td><td class="desc">Sound information which is available in the WAV header </td></tr>
<tr id="row_0_528_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_w_a_v_decoder.html" target="_self">WAVDecoder</a></td><td class="desc">A simple <a class="el" href="classaudio__tools_1_1_w_a_v_decoder.html" title="A simple WAVDecoder: We parse the header data on the first record to determine the format....">WAVDecoder</a>: We parse the header data on the first record to determine the format. If no <a class="el" href="classaudio__tools_1_1_audio_decoder_ext.html">AudioDecoderExt</a> is specified we just write the PCM data to the output that is defined by calling <a class="el" href="classaudio__tools_1_1_w_a_v_decoder.html#a065fe4c0d3543644ab523a5d9b5fb9c0" title="Defines the output Stream.">setOutput()</a>. You can define a ADPCM decoder to decode WAV files that contain ADPCM data </td></tr>
<tr id="row_0_529_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_w_a_v_encoder.html" target="_self">WAVEncoder</a></td><td class="desc">A simple WAV file encoder. If no <a class="el" href="classaudio__tools_1_1_audio_encoder_ext.html">AudioEncoderExt</a> is specified the WAV file contains PCM data, otherwise it is encoded as ADPCM. The WAV header is written with the first writing of audio data. Calling <a class="el" href="classaudio__tools_1_1_w_a_v_encoder.html#a4d2a8f208d69989c8676b0c632c9ea5c" title="starts the processing using the actual WAVAudioInfo">begin()</a> is making sure that the header is written again </td></tr>
<tr id="row_0_530_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_w_a_v_format_x.html" target="_self">WAVFormatX</a></td><td class="desc"></td></tr>
<tr id="row_0_531_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_w_a_v_header.html" target="_self">WAVHeader</a></td><td class="desc">Parser for Wav header data for details see <a href="https://de.wikipedia.org/wiki/RIFF_WAVE">https://de.wikipedia.org/wiki/RIFF_WAVE</a> </td></tr>
<tr id="row_0_532_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaudio__tools_1_1_wav_i_m_a_audio_info.html" target="_self">WavIMAAudioInfo</a></td><td class="desc">Sound information which is available in the WAV header - adjusted for IMA ADPCM </td></tr>
<tr id="row_0_533_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_wav_i_m_a_decoder.html" target="_self">WavIMADecoder</a></td><td class="desc">Obsolete: <a class="el" href="classaudio__tools_1_1_wav_i_m_a_decoder.html" title="Obsolete: WavIMADecoder - based on WAVDecoder - We parse the header data as we receive it and send th...">WavIMADecoder</a> - based on <a class="el" href="classaudio__tools_1_1_w_a_v_decoder.html" title="A simple WAVDecoder: We parse the header data on the first record to determine the format....">WAVDecoder</a> - We parse the header data as we receive it and send the sound data to the stream which was indicated in the constructor. Only WAV files with WAVE_FORMAT_IMA_ADPCM are supported by this codec! </td></tr>
<tr id="row_0_534_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_wav_i_m_a_header.html" target="_self">WavIMAHeader</a></td><td class="desc"></td></tr>
<tr id="row_0_535_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_welch.html" target="_self">Welch</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_welch.html" title="Welch FFT Window function.">Welch</a> FFT Window function </td></tr>
<tr id="row_0_536_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_white_noise_generator.html" target="_self">WhiteNoiseGenerator</a></td><td class="desc">Generates a random noise sound with the help of rand() function </td></tr>
<tr id="row_0_537_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_window_function.html" target="_self">WindowFunction</a></td><td class="desc">FFT Window Function </td></tr>
<tr id="row_0_538_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_w_m8960_config.html" target="_self">WM8960Config</a></td><td class="desc">Configuration for WM8960 </td></tr>
<tr id="row_0_539_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudio__tools_1_1_w_m8960_stream.html" target="_self">WM8960Stream</a></td><td class="desc"><a class="el" href="classaudio__tools_1_1_stream.html">Stream</a> for reading and writing audio data using the WM8960 Codec Chip You need to install <a href="https://github.com/pschatzmann/arduino-wm8960">https://github.com/pschatzmann/arduino-wm8960</a> </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceaudiotools__rtsp.html" target="_self">audiotools_rtsp</a></td><td class="desc">AudioTools internal: rtsp </td></tr>
<tr id="row_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudiotools__rtsp_1_1_our_r_t_s_p_client.html" target="_self">OurRTSPClient</a></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudiotools__rtsp_1_1_our_sink.html" target="_self">OurSink</a></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classaudiotools__rtsp_1_1_stream_client_state.html" target="_self">StreamClientState</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceffft.html" target="_self">ffft</a></td><td class="desc">AudioTools internal: FFT </td></tr>
<tr id="row_2_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_array.html" target="_self">Array</a></td><td class="desc"></td></tr>
<tr id="row_2_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_dyn_array.html" target="_self">DynArray</a></td><td class="desc"></td></tr>
<tr id="row_2_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real.html" target="_self">FFTReal</a></td><td class="desc"></td></tr>
<tr id="row_2_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_fix_len.html" target="_self">FFTRealFixLen</a></td><td class="desc"></td></tr>
<tr id="row_2_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_fix_len_param.html" target="_self">FFTRealFixLenParam</a></td><td class="desc"></td></tr>
<tr id="row_2_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_pass_direct.html" target="_self">FFTRealPassDirect</a></td><td class="desc"></td></tr>
<tr id="row_2_6_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_pass_inverse.html" target="_self">FFTRealPassInverse</a></td><td class="desc"></td></tr>
<tr id="row_2_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_select.html" target="_self">FFTRealSelect</a></td><td class="desc"></td></tr>
<tr id="row_2_8_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_f_f_t_real_use_trigo.html" target="_self">FFTRealUseTrigo</a></td><td class="desc"></td></tr>
<tr id="row_2_9_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classffft_1_1_osc_sin_cos.html" target="_self">OscSinCos</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_r_s.html" target="_self">RS</a></td><td class="desc">AudioTools internal: Reed-Solomon </td></tr>
<tr id="row_3_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>gf</b></td><td class="desc"></td></tr>
<tr id="row_3_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_r_s_1_1_poly.html" target="_self">Poly</a></td><td class="desc"></td></tr>
<tr id="row_3_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_r_s_1_1_reed_solomon.html" target="_self">ReedSolomon</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>std</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>