You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
boblark 203e9e5125 Updated DesignTool_F32 to allow stan alone operation 3 years ago
docs Added ZIP version of Design Tool F32 for non-internet connection operation. 3 years ago
examples added L and R BPF at fs/4 to AlignLR 3 years ago
gui Updated DesignTool_F32 to allow stan alone operation 3 years ago
utility
.gitattributes
.gitignore
.travis.yml
AudioAlignLR_F32.cpp added L and R BPF at fs/4 to AlignLR & cleaned up comments 3 years ago
AudioAlignLR_F32.h added L and R BPF at fs/4 to AlignLR & cleaned up comments 3 years ago
AudioAnalyzePhase_F32.cpp
AudioAnalyzePhase_F32.h
AudioCalcEnvelope_F32.h
AudioCalcGainWDRC_F32.h
AudioConfigFIRFilterBank_F32.cpp
AudioConfigFIRFilterBank_F32.h
AudioControlSGTL5000_Extended.h
AudioControlTester.cpp
AudioControlTester.h
AudioConvert_F32.h
AudioEffectCompWDRC_F32.h
AudioEffectCompressor2_F32.cpp Add AudioEffectCompressor2_F32 4 years ago
AudioEffectCompressor2_F32.h Add AudioEffectCompressor2_F32 4 years ago
AudioEffectCompressor_F32.h
AudioEffectDelay_OA_F32.cpp
AudioEffectDelay_OA_F32.h
AudioEffectEmpty_F32.h
AudioEffectFreqShiftFD_OA_F32.cpp
AudioEffectFreqShiftFD_OA_F32.h
AudioEffectGain_F32.h
AudioEffectNoiseGate_F32.h add NoiseGate effect 4 years ago
AudioEffectWDRC2_F32.h
AudioFilter90Deg_F32.cpp
AudioFilter90Deg_F32.h
AudioFilterBiquad_F32.cpp Added FMtoneCTCSS example 3 years ago
AudioFilterBiquad_F32.h Corrected comments, no code change 3 years ago
AudioFilterConvolution_F32.cpp Removed defines that were not used. 3 years ago
AudioFilterConvolution_F32.h Removed defines that were not used. 3 years ago
AudioFilterEqualizer_F32.cpp
AudioFilterEqualizer_F32.h
AudioFilterFIRGeneral_F32.cpp
AudioFilterFIRGeneral_F32.h Corrected comments, no code change 3 years ago
AudioFilterFIR_F32.cpp
AudioFilterFIR_F32.h
AudioFilterIIR_F32.h
AudioLMSDenoiseNotch_F32.cpp Rev to new LMSDenoiseNotch 3 years ago
AudioLMSDenoiseNotch_F32.h Rev to new LMSDenoiseNotch 3 years ago
AudioMixer_F32.cpp
AudioMixer_F32.h
AudioMultiply_F32.cpp
AudioMultiply_F32.h
AudioSettings_F32.cpp
AudioSettings_F32.h
AudioStream_F32.cpp
AudioStream_F32.h
AudioSwitch_OA_F32.cpp
AudioSwitch_OA_F32.h
BTNRH_WDRC_Types.h
FFT_OA_F32.h
FFT_Overlapped_OA_F32.cpp
FFT_Overlapped_OA_F32.h
OA_LibraryStatus.gif
OpenAudio_ArduinoLibrary.h Add AudioAlignLR_F32 3 years ago
RadioFMDetector_F32.cpp added squelch to FM 4 years ago
RadioFMDetector_F32.h added squelch to FM 4 years ago
RadioIQMixer_F32.cpp Correct phase interpolation to correct very minor error 3 years ago
RadioIQMixer_F32.h Added alternate 2-channel input to IQ mixers 4 years ago
USB_Audio_F32.h
analyze_CTCSS_F32.cpp Added analyze_CTCSS sub-audible tone detector 3 years ago
analyze_CTCSS_F32.h Added analyze_CTCSS sub-audible tone detector 3 years ago
analyze_fft256_iq_F32.cpp Fix xAxis cmd for dBFS & dBFS offset (+12dB) 4 years ago
analyze_fft256_iq_F32.h Fix xAxis cmd for dBFS & dBFS offset (+12dB) 4 years ago
analyze_fft1024_F32.cpp Update real input 1024 fft 4 years ago
analyze_fft1024_F32.h Update real input 1024 fft 4 years ago
analyze_fft1024_iq_F32.cpp Corrected xAxis function for dBFS out on analyze_fft1024_iq_F32 4 years ago
analyze_fft1024_iq_F32.h Corrected xAxis function for dBFS out on analyze_fft1024_iq_F32 4 years ago
analyze_fft2048_iq_F32.cpp Corrected avaeraging in FFT IQ 2048 4 years ago
analyze_fft2048_iq_F32.h Corrected avaeraging in FFT IQ 2048 4 years ago
analyze_fft4096_iq_F32.cpp Corrected comments, only 3 years ago
analyze_fft4096_iq_F32.h Corrected comments, only 3 years ago
analyze_fft4096_iqem_F32.cpp Correct xAxis values 3 years ago
analyze_fft4096_iqem_F32.h Correct xAxis values 3 years ago
analyze_peak_f32.cpp
analyze_peak_f32.h
analyze_rms_f32.cpp
analyze_rms_f32.h
analyze_tonedetect_F32.cpp Add ref to CTCSS tone detect. 3 years ago
analyze_tonedetect_F32.h Add ref to CTCSS tone detect. 3 years ago
control_tlv320aic3206.cpp.xxx
control_tlv320aic3206.h.xxx
input_i2s_f32.cpp
input_i2s_f32.h
keywords.txt Add AudioAlignLR_F32 3 years ago
mathDSP_F32.cpp
mathDSP_F32.h
memcpy_audio.h
output_i2s_f32.cpp Comment corrections, no code change 3 years ago
output_i2s_f32.h Restored outputScale. My mistakegit add output_i2s_f32.h 3 years ago
play_queue_f32.cpp
play_queue_f32.h
radioModulatedGenerator_F32.cpp Added setFMScale to radioModulatedGenerator_F32 3 years ago
radioModulatedGenerator_F32.h Added setFMScale to radioModulatedGenerator_F32 3 years ago
radioNoiseBlanker_F32.cpp Corrected block release for 1 channel operation 4 years ago
radioNoiseBlanker_F32.h Revised NoisBlanker to have I+Q option 4 years ago
readme.md readme now reflects updates of last year 4 years ago
record_queue_f32.cpp
record_queue_f32.h
sinTable512_f32.h
synth_GaussianWhiteNoise_F32.cpp Changed to allow very small noise power 3 years ago
synth_GaussianWhiteNoise_F32.h
synth_pinknoise_f32.cpp
synth_pinknoise_f32.h
synth_sin_cos_f32.cpp Added pureSpectrum filtering option. 3 years ago
synth_sin_cos_f32.h Added pureSpectrum filtering option. 3 years ago
synth_sine_f32.cpp Added pureSpectrum filtering option. 3 years ago
synth_sine_f32.h Added pureSpectrum filtering option. 3 years ago
synth_waveform_F32.cpp
synth_waveform_F32.h
synth_whitenoise_f32.cpp
synth_whitenoise_f32.h

readme.md

OpenAudio Library for Teensy

This is a library of Teensy Arduino classes to provide audio signal processing with 32-bit floating point data transfers. This parallels the 16-bit integer Teensy Audio Library but, interconnects blocks using 32-bit floating point data types. Converters for inter-connecting the two types are provided. Both data types can be used in the same sketch. To distinguish the two types, file and class names for this library have a trailing "_F32."

This library was originally put together by Chip Audette and he summed up the reasons for this:

Purpose: The purpose of this library is to build upon the Teensy Audio Library to enable new functionality for real-time audio processing.

Approach: To follow the structure and approach of the Teensy Audio Library, so that coding techniques, style, and structure that works for the Teensy Audio Library will also work with this library.

Send Help!: If you see ways to make my code better aligned with the Teensy Audio Library, send a pull request!

Information

Design Tool Many changes and additions were made in the 2020 time period. Hopefully this has brought this library to the point where blocks can be just assembled and run. To make that practical, there is now an OpenAudio Library Design Tool that again parallels the Teensy Audio Design Tool, that has been borrowed upon for both code and content. This OpenAudio Design Tool is intended to be a temporary design aid with improvements to come, like being able to combine integer and floating point blocks.

The primary documentation is the Design Tool. Clicking on any of the classes brings up a right-side help panel. This lists the use of the class, the constraints, all the functions and at the botom are general notes. Most classes have example INO files and these are listed and available when this library is installed. Sometimes elements of this documentation is not completed, yet. In some of those cases it is worth looking at the .h include file for the class. At the top of these files are comments with more information.

Teensy 3 and 4 During 2020 this library has undergone revision to make it Teensy 4.x compatible. Much of this related to using multiple sampling rates with the I2S clocks and the interrupt/DMA code for data transfer. The files and associated classes output_i2s_f32.h, output_i2s_f32.cpp, input_i2s_f32.h, input_i2s_f32.cpp are now ready to be used for T3.x and T4.x. There are some restrictions, particularly this should be used with 16-bit I2S codec data. Codec sample rates can be varied. Variable block size is supported, but be sure the settings option is used. Thanks to Chip, @jcj83429 and all the Teensy development folks.

Tympan Project Many of the classes in this library were put together as part of the Tympan Project. That is oriented towards open-source hearing aid and hearing aid development tools. It has its own Tympan Design Tool as well as some custom Teensy-based hardware. Additionally, there are a few classes in this library that use terminology and variables that are specific to audiology. It is intended that these, in time, be replaced by similar classes with more conventional descriptors. And, of course, if your interest is in hearing aids, you should spend time at the Tympan project!

Installation

Download (and unzip) this library into the Arduino libraries directory on your computer. On my computer, that means I put it here:

C:\Users\chipaudette\Documents\Arduino\libraries\OpenAudio_ArduinoLibrary

Restart your Arduino IDE and you should now see this libraries example sketches under File->Examples->OpenAudio_ArduinoLibrary

After installing this library into your Arduino->Libraries direction, you can have access to any of these capabilities simply by including the following command in your Arduino sketch: #include <OpenAudio_ArduinoLibrary.h>.

As an alternative to the ZIP download, you can use git to maintain a local copy of the library. This has the advantage of easy updating. See GitHub and git documentation on how to do this.

Dependencies

This library extends the functionality of the Teensy Audio Library, so you'll need to install it per its instructions.

The floating-point processing takes advantage of the DSP acceleration afforded by the ARM core inside the Teensy 3.x and 4.x processor. Therefore, it uses arm_math.h. This dependencies is installed automatically when you install the Teensy Audio Library, so you don't need to take any extra steps. It's there already.