Skip to content

AkiyukiOkayasu/ame

Repository files navigation

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

UnitTest badge ame ame

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

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 FetchContent

# 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.
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 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 Pro Audio Style Guide for the technical terms used in doxygen comments.