An open API service indexing awesome lists of open source software.

https://github.com/akiyukiokayasu/ame

C++ header-only DSP library for Cortex-M
https://github.com/akiyukiokayasu/ame

audio cortex-m imxrt

Last synced: 8 months ago
JSON representation

C++ header-only DSP library for Cortex-M

Awesome Lists containing this project

README

          

= AME - C++ header-only DSP library for Cortex-M

image:https://github.com/AkiyukiOkayasu/ame/actions/workflows/cmake.yml/badge.svg[UnitTest] image:https://github.com/AkiyukiOkayasu/ame/actions/workflows/doxygen.yml/badge.svg[link=https://akiyukiokayasu.github.io/ame/] image:https://img.shields.io/github/v/release/AkiyukiOkayasu/ame[link=https://github.com/AkiyukiOkayasu/ame/releases/latest] image:https://img.shields.io/github/license/AkiyukiOkayasu/ame[link=LICENSE]

AME is a C++ header-only library focused on fast audio processing on Cortex-M. +
Specifically, AME provides a function that is missing from the CMSIS-DSP for audio processing. +
If CMSIS-DSP is available, use it, but it is not required. This means that ame can run on non-Cortex-M environments. +

This is my back up project and also in the early stages of the project. +
Major changes may be added to this project. +

== Dependencies
* C++20

=== Optional
* https://arm-software.github.io/CMSIS_5/DSP/html/index.html[ARM CMSIS-DSP] +

== Features
* Audio buffer that can only be allocatable at compile time
* Oscillator and noise generator
* Filters
* Fractional delay
* Reverb
* WAV reader
* Interpolate functions
* Ambisonics
* Conversion functions
** Float and Q23
** Decibel and Amplitude
** Frequency and Period
** MIDI note and Frequency
** Radian and Degree

== How to use
The easiest way is to just copy this repository and include ame.hpp.
Just copy this repository and #include "ame.hpp".

=== CMake integration
If you are using CMake, you can install ame using https://cmake.org/cmake/help/latest/module/FetchContent.html[FetchContent]
[source,cmake]
----
# CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(example_project)
add_executable(example_project main.cpp)

include(FetchContent)
FetchContent_Declare(ame GIT_REPOSITORY https://github.com/AkiyukiOkayasu/ame GIT_TAG origin/master)
# FetchContent_Declare(ame GIT_REPOSITORY https://github.com/AkiyukiOkayasu/ame GIT_TAG v1.2.2)
FetchContent_MakeAvailable(ame)
target_compile_features(example_project PUBLIC cxx_std_20)
target_link_libraries(example_project PRIVATE ame)
----

=== For JUCE users
ame is also a JUCE module. +
https://github.com/AkiyukiOkayasu/ame-juce[ame-juce] is a simple example of combining JUCE and ame. +
Be aware that the order of audio samples in ame is interleaved. +

== Other document
See the https://akiyukiokayasu.github.io/ame/[document] for details.

== Contribution
Contributions are welcome. +
To keep your source code clean, remember to run clang-format before submitting your PR and check it with clang-tidy. The configuration files are located in the root of Project. +
Refer to the https://www.aes.org/par/guide/[Pro Audio Style Guide] for the technical terms used in doxygen comments.