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 a03836940c correct CW transmit fcns; add CESSB on/off fcn 3 weeks ago
docs correct CW transmit fcns; add CESSB on/off fcn 3 weeks ago
examples add PlayQueue2.ino simple example 2 years ago
gui correct CW transmit fcns; add CESSB on/off fcn 3 weeks ago
utility Removed nonsense register modifier 4 weeks ago
.gitattributes
.gitignore
.travis.yml
AudioAlignLR_F32.cpp
AudioAlignLR_F32.h
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
AudioEffectCompressor2_F32.h
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
AudioEffectWDRC2_F32.h
AudioFilter90Deg_F32.cpp
AudioFilter90Deg_F32.h Correct comments 2 years ago
AudioFilterBiquad_F32.cpp
AudioFilterBiquad_F32.h
AudioFilterConvolution_F32.cpp Fixed to not have compile error for Teensy before T3.5 2 years ago
AudioFilterConvolution_F32.h Fixed to not have compile error for Teensy before T3.5 2 years ago
AudioFilterEqualizer_F32.cpp
AudioFilterEqualizer_F32.h
AudioFilterFIRGeneral_F32.cpp
AudioFilterFIRGeneral_F32.h
AudioFilterFIR_F32.cpp
AudioFilterFIR_F32.h
AudioFilterIIR_F32.h
AudioLMSDenoiseNotch_F32.cpp
AudioLMSDenoiseNotch_F32.h
AudioMathAdd_F32.cpp Add math add, multiply, offset and scale 2 years ago
AudioMathAdd_F32.h Add math add, multiply, offset and scale 2 years ago
AudioMathConstant_F32.cpp Add AudioMathConstant_F32 2 years ago
AudioMathConstant_F32.h Add AudioMathConstant_F32 2 years ago
AudioMathMultiply_F32.cpp Add math add, multiply, offset and scale 2 years ago
AudioMathMultiply_F32.h Add math add, multiply, offset and scale 2 years ago
AudioMathOffset_F32.cpp Add math add, multiply, offset and scale 2 years ago
AudioMathOffset_F32.h Add math add, multiply, offset and scale 2 years ago
AudioMathScale_F32.cpp Add math add, multiply, offset and scale 2 years ago
AudioMathScale_F32.h Add math add, multiply, offset and scale 2 years ago
AudioMixer_F32.cpp
AudioMixer_F32.h
AudioMultiply_F32.cpp
AudioMultiply_F32.h Added note: Use AudioMathMultiply_F32 instead 2 years ago
AudioSDPlayer_F32.cpp Minor corrections for playing WAV files from SD cards 2 years ago
AudioSDPlayer_F32.h Add WaveFilePlayer, test files. Revised to lower WAV rates 2 years ago
AudioSettings_F32.cpp
AudioSettings_F32.h Comment additions 3 weeks ago
AudioSpectralDenoise_F32.cpp
AudioSpectralDenoise_F32.h
AudioStream_F32.cpp Comment additions 3 weeks ago
AudioStream_F32.h Comment additions 3 weeks ago
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 Voice Clipper class 2 years ago
RadioFMDetector_F32.cpp
RadioFMDetector_F32.h
RadioFMDiscriminator_F32.cpp
RadioFMDiscriminator_F32.h
RadioIQMixer_F32.cpp Correct sample rate entry and add overall gain control 2 years ago
RadioIQMixer_F32.h Correct sample rate entry and add overall gain control 2 years ago
UART_F32.cpp
UART_F32.h
USB_Audio_F32.h
analyze_CTCSS_F32.cpp Add 12 ksps rate and correct block from receiveReadOnly_f32() 2 years ago
analyze_CTCSS_F32.h Add 12 ksps rate and correct block from receiveReadOnly_f32() 2 years ago
analyze_fft256_iq_F32.cpp
analyze_fft256_iq_F32.h
analyze_fft1024_F32.cpp Corrections to comments 2 years ago
analyze_fft1024_F32.h
analyze_fft1024_iq_F32.cpp
analyze_fft1024_iq_F32.h
analyze_fft2048_iq_F32.cpp
analyze_fft2048_iq_F32.h
analyze_fft4096_iq_F32.cpp
analyze_fft4096_iq_F32.h Corrected array size, save 16kByte 2 years ago
analyze_fft4096_iqem_F32.cpp
analyze_fft4096_iqem_F32.h
analyze_peak_f32.cpp
analyze_peak_f32.h
analyze_rms_f32.cpp
analyze_rms_f32.h
analyze_tonedetect_F32.cpp Add setGain() function 2 years ago
analyze_tonedetect_F32.h Add setGain() function 2 years ago
async_input_spdif3_F32.cpp Fixed to compile with T3.x (run only T4.x) 2 years ago
async_input_spdif3_F32.h Fixed to compile with T3.x (run only T4.x) 2 years ago
control_tlv320aic3206.cpp.xxx
control_tlv320aic3206.h.xxx
input_i2s_f32.cpp
input_i2s_f32.h
input_spdif3_f32.cpp
input_spdif3_f32.h
keywords.txt
mathDSP_F32.cpp
mathDSP_F32.h
memcpy_audio.h
output_i2s_f32.cpp
output_i2s_f32.h
output_spdif3_f32.cpp Redid zeroing in begin() to not zero non-floats 4 weeks ago
output_spdif3_f32.h
play_queue_f32.cpp Removed old comments 2 years ago
play_queue_f32.h Major addition of functions from J. Oakley per I16 library. Thanks! 2 years ago
radioBFSKmodulator_F32.cpp Corrected comments, only 4 weeks ago
radioBFSKmodulator_F32.h Corrected comments, only 4 weeks ago
radioCESSB_Z_transmit_F32.cpp Added cessbProcessing control. Tnx KF5N 3 weeks ago
radioCESSB_Z_transmit_F32.h Added cessbProcessing control. Tnx KF5N 3 weeks ago
radioCESSBtransmit_F32.cpp Added cessbProcessing control. Tnx KF5N 3 weeks ago
radioCESSBtransmit_F32.h Added cessbProcessing control. Tnx KF5N 3 weeks ago
radioCWModulator_F32.cpp Added class radioCWModulator_F32 for Morse code 2 years ago
radioCWModulator_F32.h Added class radioCWModulator_F32 for Morse code 2 years ago
radioFT8Demodulator_F32.cpp Fixed unused ii 2 years ago
radioFT8Demodulator_F32.h Corrected comment 2 years ago
radioFT8Modulator_F32.cpp
radioFT8Modulator_F32.h
radioModulatedGenerator_F32.cpp
radioModulatedGenerator_F32.h
radioNoiseBlanker_F32.cpp
radioNoiseBlanker_F32.h
radioVoiceClipper_F32.cpp Add Voice Clipper class 2 years ago
radioVoiceClipper_F32.h Add Voice Clipper class 2 years ago
readme.md
record_queue_f32.cpp
record_queue_f32.h
sinTable512_f32.h
synth_GaussianWhiteNoise_F32.cpp
synth_GaussianWhiteNoise_F32.h
synth_pinknoise_f32.cpp
synth_pinknoise_f32.h
synth_sin_cos_f32.cpp
synth_sin_cos_f32.h
synth_sine_f32.cpp
synth_sine_f32.h
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!

Notes

1 - The USB_Audio_F32.h includes all the functions needed to use USB audio for input and output. However, it is not in the OpenAudio_ArduinoLibrary.h as would be expected. To use this class, add "#include USB_Audio_F32.h" to the INO file and before compiling, go to the IDE Tools>USB Type and set the radio button to "Audio." This should then compile without error. Also, using this class requires some amount of I16 audio memory, such as a line in the top of the INO, "AudioMemory(10);"

2 - This library generally supports changing sample rates within the range of the Codec hardware being used. See Examples/PassthroughF32/PassthroughF32.ino. In addition, be aware that classes that need speed scaling such as waveform generators and filters must be modified individually using built-in functions such as AudioSynthWaveformSine_F32::setSampleRate_Hz(float &fs_Hz). Also, see https://forum.pjrc.com/threads/38753-Discussion-about-a-simple-way-to-change-the-sample-rate for discussion of both T3.x and T4.x I2S sample rates.

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.