这个项目能做什么
Audio Tools 是一个用于嵌入式平台音频处理的仅头文件 C++ 库,以 Arduino 库和 CMake C++ 库的形式分发,支持 PlatformIO 和 ESP-IDF。其设计遵循 Arduino 惯例:使用 begin() 和 end() 启动和停止处理,音频数据通过类似 Stream 的抽象进行流动。
核心概念
- 音频源和音频接收器:从源读取音频数据并将其写入接收器,与熟悉的 Arduino Stream 模型相对应。
- 用于 MP3、AAC、WAV 和 FLAC 等格式的编码器和解码器,通过 EncodedAudioStream 使用。
- 用于播放场景的 AudioPlayer 和 VideoPlayer 类。
- USB 音频输入和输出,包括 USB Audio Class 2.0。
- 与各种 DSP 库的集成。
- 通过有线或无线链路传输音频。
- 声音发生器(例如正弦音),与 GeneratedSoundStream 一起使用。
- 通过 AudioEffectStream 实现的声音效果,如 Boost、Distortion、Echo 和 Reverb。
- 3 段均衡器。
- 用于 ConverterStream 的转换器和用于 FilteredStream 的滤波器。
- 音符及其频率。
- 用于 QueueStream 的缓冲区实现。
- 用于在精确时间采样音频的重复定时器,与 TimerCallbackAudioStream 一起使用。
- 桌面集成:Arduino 音频草图可以构建为在 Linux、Windows 和 macOS 上运行。
该库充当粘合剂,让不同的音频组件和可选库协同工作。每个流都有自己的配置对象,传递给 begin();defaultConfig() 提供了一个通常可用的起点,配置参数在类参考中有文档说明。示例通常可以通过交换流类来调整,例如用 AnalogAudioStream 替换 I2SStream 以获得模拟输出而不是数字输出。
一个简单的示例将文件从闪存流式传输到 I2S:MemoryStream 保存音频数据,I2SStream 配置为 TX 模式,设置采样率、声道和每样本位数,StreamCopy 对象在 loop() 内将数据从内存流复制到 I2S 流中。
日志记录是内置的,默认使用警告级别和 Serial 输出,可以通过 AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Debug) 更改。有效级别为 Debug、Info、Warning 和 Error。可以通过在 AudioConfig.h 中将 USE_AUDIO_LOGGING 设置为 false 来禁用日志记录,以减少内存使用。
文档和支持
- Wiki 提供教程、介绍、示例以及关于可选库和在桌面上运行草图的说明。
- 生成的类文档按主题和字母顺序组织。
- 项目要求用户在发帖前阅读文档并搜索现有问题和讨论;问题用于报告错误,其他问题应发布在讨论区。报告应包含场景或草图、目标、硬件、软件和库版本以及确切的问题。
安装
- 将库下载为 zip 文件,在 Arduino IDE 中使用“库 -> 添加 zip 库”,或将仓库克隆到 Arduino libraries 文件夹中。建议使用 Git 以便通过 git pull 轻松更新。其他平台的信息可在 Wiki 中获取。
该项目采用 GPL v3 许可,并提供可选的赞助链接。
评论
0 评分人数达到10人后显示
登录后参与讨论。