À propos du projet
Audio Tools est une bibliothèque C++ header-only pour le traitement audio sur plateformes embarquées, distribuée comme bibliothèque Arduino et comme bibliothèque C++ CMake, avec prise en charge de PlatformIO et ESP-IDF. Sa conception suit les conventions Arduino : le traitement est démarré et arrêté avec begin() et end(), et les données audio circulent à travers des abstractions de type Stream.
Concepts fondamentaux
- Sources audio et sorties audio : lire les données audio depuis les sources et les écrire vers les sorties, en reflétant le modèle familier Arduino Stream.
- Encodeurs et décodeurs pour des formats tels que MP3, AAC, WAV et FLAC, utilisés via EncodedAudioStream.
- Classes AudioPlayer et VideoPlayer pour les scénarios de lecture.
- Entrée et sortie audio USB, y compris USB Audio Class 2.0.
- Intégration avec diverses bibliothèques DSP.
- Communication audio sur liaisons filaires ou sans fil.
- Générateurs de sons (par exemple des tonalités sinusoïdales) utilisés avec GeneratedSoundStream.
- Effets sonores tels que Boost, Distortion, Echo et Reverb via AudioEffectStream.
- Un égaliseur à 3 bandes.
- Convertisseurs pour ConverterStream et filtres pour FilteredStream.
- Notes de musique avec leurs fréquences.
- Implémentations de tampons pour QueueStream.
- Un minuteur répétitif pour échantillonner l'audio à des instants exacts, utilisé avec TimerCallbackAudioStream.
- Intégration bureau : les croquis audio Arduino peuvent être compilés pour fonctionner sous Linux, Windows et macOS.
La bibliothèque agit comme une colle qui permet à différents composants audio et bibliothèques optionnelles de fonctionner ensemble. Chaque flux possède son propre objet de configuration passé à begin() ; defaultConfig() fournit un point de départ qui fonctionne généralement, et les paramètres de configuration sont documentés dans la référence des classes. Les exemples peuvent souvent être adaptés en échangeant les classes de flux, par exemple en remplaçant I2SStream par AnalogAudioStream pour obtenir une sortie analogique au lieu de numérique.
Un exemple simple diffuse un fichier depuis la mémoire flash vers I2S : un MemoryStream contient les données audio, un I2SStream est configuré en mode TX avec la fréquence d'échantillonnage, les canaux et les bits par échantillon, et un objet StreamCopy copie les données du flux mémoire vers le flux I2S dans loop().
La journalisation est intégrée, utilise par défaut le niveau d'avertissement et la sortie Serial, et peut être modifiée avec AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Debug). Les niveaux valides sont Debug, Info, Warning et Error. La journalisation peut être désactivée en définissant USE_AUDIO_LOGGING à false dans AudioConfig.h pour réduire l'utilisation de la mémoire.
Documentation et support
- Un wiki fournit des tutoriels, une introduction, des exemples et des notes sur les bibliothèques optionnelles et l'exécution des croquis sur le bureau.
- La documentation des classes générée est organisée par thème et par ordre alphabétique.
- Le projet demande aux utilisateurs de lire la documentation et de rechercher dans les problèmes et discussions existants avant de publier ; les problèmes sont destinés aux bogues, tandis que les autres questions appartiennent aux discussions. Les rapports doivent inclure le scénario ou le croquis, l'objectif, le matériel, les versions des logiciels et des bibliothèques, et le problème exact.
Installation
- Téléchargez la bibliothèque sous forme de zip et utilisez Bibliothèque -> bibliothèque zip dans l'IDE Arduino, ou clonez le dépôt dans le dossier des bibliothèques Arduino. Git est recommandé pour des mises à jour faciles via git pull. Des informations pour d'autres plateformes sont disponibles dans le wiki.
Le projet est sous licence GPL v3 et propose des liens de parrainage optionnels.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.