{"id":13418168,"url":"https://github.com/pschatzmann/arduino-audio-tools","last_synced_at":"2025-04-11T00:52:15.432Z","repository":{"id":37720158,"uuid":"362356367","full_name":"pschatzmann/arduino-audio-tools","owner":"pschatzmann","description":"Arduino Audio Tools (a powerful Audio library not only for Arduino)","archived":false,"fork":false,"pushed_at":"2025-04-09T17:48:46.000Z","size":86746,"stargazers_count":1740,"open_issues_count":6,"forks_count":273,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-04-11T00:52:04.530Z","etag":null,"topics":["arduino","arduino-library","audio","cmake","codecs","commucation","decoding","digital-signal-processing","dsp","encoding","fft","music","streaming"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pschatzmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"philschatzh","custom":["https://www.paypal.com/paypalme/pschatzmann?country.x=CH\u0026locale.x=en_US"]}},"created_at":"2021-04-28T06:05:55.000Z","updated_at":"2025-04-10T21:03:19.000Z","dependencies_parsed_at":"2023-09-25T11:44:20.893Z","dependency_job_id":"5ba678cf-3108-4288-8973-bfc85abd1016","html_url":"https://github.com/pschatzmann/arduino-audio-tools","commit_stats":{"total_commits":2973,"total_committers":45,"mean_commits":66.06666666666666,"dds":0.04069963000336363,"last_synced_commit":"65b5b20bda06812eb0ad4f5bca64bec08e2b08dc"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2Farduino-audio-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2Farduino-audio-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2Farduino-audio-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2Farduino-audio-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pschatzmann","download_url":"https://codeload.github.com/pschatzmann/arduino-audio-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322609,"owners_count":21084336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","audio","cmake","codecs","commucation","decoding","digital-signal-processing","dsp","encoding","fft","music","streaming"],"created_at":"2024-07-30T22:00:59.210Z","updated_at":"2025-04-11T00:52:15.425Z","avatar_url":"https://github.com/pschatzmann.png","language":"C","funding_links":["https://buymeacoffee.com/philschatzh","https://www.paypal.com/paypalme/pschatzmann?country.x=CH\u0026locale.x=en_US","https://www.buymeacoffee.com/philschatzh","https://paypal.me/pschatzmann?country.x=CH\u0026locale.x=en_US"],"categories":["C","硬件_其他"],"sub_categories":["资源传输下载"],"readme":"# Arduino Audio Tools\n\nSome basic __header-only C++ classes__ that can be used for __Audio Processing__ provided as __Arduino and cmake C++ Library__:\n\n- We provide different [\"Audio Sources\" and \"Audio Sinks\"](https://github.com/pschatzmann/arduino-audio-tools/wiki/Audio-Sources-and-Sinks)\n- Support for different [Encoders](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_encoder.html) and [Decoders](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_decoder.html) for MP3, AAC, WAV, FLAC, etc for [EncodedAudioStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_encoded_audio_stream.html)\n- Integrates with different [DSP libraries](https://github.com/pschatzmann/arduino-audio-tools/wiki/DSP-Libraries)\n- Helps to [communicate](https://github.com/pschatzmann/arduino-audio-tools/wiki/Communication) audio over the wire or wirelessly\n- Different [Sound Generators](https://pschatzmann.github.io/arduino-audio-tools/group__generator.html) (e.g. to generate a sine tone) for [GeneratedSoundStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_generated_sound_stream.html)\n- Support for [Sound Effects](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_effect_stream.html) with different [Effect Implementations](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_effect.html) (e.g. Boost, Distortion, Echo, Reverb...) for [AudioEffectStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_effect_stream_t.html)\n- Provides a [3 Band Equalizer](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_equalizer3_bands.html)\n- Different [Converters](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_base_converter.html) for [ConverterStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_converter_stream.html)\n- Different [Filters](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_filter.html) for [FilteredStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_filtered_stream.html)\n- [Musical Notes](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_musical_notes.html) (with frequencies of notes)\n- Different [Buffer Implementations](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_base_buffer.html) for [QueueStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_queue_stream.html) \n- A [Repeating Timer](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_timer_alarm_repeating.html) (e.g. for sampling audio data using exact times) for [TimerCallbackAudioStream](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_timer_callback_audio_stream.html)\n- Desktop Integration: Building of Arduino Audio Sketches to be run on [Linux, Windows and OS/X](https://github.com/pschatzmann/arduino-audio-tools/wiki/Running-an-Audio-Sketch-on-the-Desktop)\n\nThis functionality provides the glue which makes different audio processing components and [libraries](https://github.com/pschatzmann/arduino-audio-tools/wiki/Optional-Libraries) work together.\n\nWe also provide [plenty of examples](https://github.com/pschatzmann/arduino-audio-tools/wiki/Examples) that demonstrate how to implement the different scenarios. The __design philosophy__ is based on the Arduino conventions: we use the ```begin()``` and ```end()``` methods to start and stop the processing and we propagate the __use of Streams__.  \n\nWe all know the Arduino [Print](https://www.arduino.cc/reference/en/language/functions/communication/print/) and [Stream](https://www.arduino.cc/reference/en/language/functions/communication/stream) classes: We usually use them to write out print messages and sometimes we use them to read the output from Serial, Files, Ethernet, etc. The same thing applies to “Audio Streams”: You can read audio data from [“Audio Sources” and you write them to “Audio Sinks”](https://github.com/pschatzmann/arduino-audio-tools/wiki/Audio-Sources-and-Sinks).\n\n\n### Example\n\nHere is a simple example which streams a file from the Flash Memory and writes it to I2S: \n\n```C++\n#include \"AudioTools.h\"\n#include \"StarWars30.h\"\n\nuint8_t channels = 2;\nuint16_t sample_rate = 22050;\nuint8_t bits_per_sample = 16;\n\nMemoryStream music(StarWars30_raw, StarWars30_raw_len);\nI2SStream i2s;  // Output to I2S\nStreamCopy copier(i2s, music); // copies sound into i2s\n\nvoid setup(){\n    Serial.begin(115200);\n\n    auto config = i2s.defaultConfig(TX_MODE);\n    config.sample_rate = sample_rate;\n    config.channels = channels;\n    config.bits_per_sample = bits_per_sample;\n    i2s.begin(config);\n\n    music.begin();\n}\n\nvoid loop(){\n    copier.copy();\n}\n\n```\nEach stream has it's own [configuration object](https://pschatzmann.github.io/arduino-audio-tools/structaudio__tools_1_1_audio_info.html) that should be passed to the begin method. The defaultConfig() method is providing a default proposal which will usually \"just work\". Please consult \nthe [class documentation](https://pschatzmann.github.io/arduino-audio-tools/modules.html) for the available configuration parameters. You can also __easily adapt__ any provided examples: If you e.g. replace the I2SStream with the AnalogAudioStream class, you will get analog instead of digital output.\n\nI suggest you continue to read the more [detailed introduction](https://github.com/pschatzmann/arduino-audio-tools/wiki/Introduction).\n\nFurther examples can be found in the [Wiki](https://github.com/pschatzmann/arduino-audio-tools/wiki/Examples). \n\nDependent on the example you might need to install some [additional libaries](https://github.com/pschatzmann/arduino-audio-tools/wiki/Optional-Libraries)\n\n### AudioPlayer\n\nThe library also provides a versatile [AudioPlayer](https://pschatzmann.github.io/arduino-audio-tools/classaudio__tools_1_1_audio_player.html). Further information can be found in the [Wiki](https://github.com/pschatzmann/arduino-audio-tools/wiki/The-Audio-Player-Class)\n\n\n### Logging\n\nThe application uses a built in logger: By default we use the log level warning and the logging output is going to Serial. You can change this in your sketch by calling e.g:\n\n```C++\nAudioToolsLogger.begin(Serial, AudioToolsLogLevel::Debug);\n```\nYou can log to any object that is a subclass of Print and valid log level values are: Debug, Info, Warning, Error.\n\n\nYou can also deactivate the logging by changing USE_AUDIO_LOGGING to false in the AudioConfig.h to decrease the memory usage: \n\n```C++\n#define USE_AUDIO_LOGGING false\n```\n\n## Show and Tell\n\nGet some inspiration [from projects that were using this library](https://github.com/pschatzmann/arduino-audio-tools/discussions/categories/show-and-tell) or share your projects with the community.\n\n\n## Documentation\n\nPlease use this before you raise any issue or start a discussion!\n\n- Read the [Tutorial \u0026 Documentation in the Wiki](https://github.com/pschatzmann/arduino-audio-tools/wiki)\n- Have a look at the [Examples](https://github.com/pschatzmann/arduino-audio-tools/wiki/Examples)\n- Check the [Class Documentation by Topic](https://pschatzmann.github.io/arduino-audio-tools/topics.html). \n- Find your class in [All Classes Alphabetically](https://pschatzmann.github.io/arduino-audio-tools/namespaceaudio__tools.html)\n- You also might find further information in [one of my Blogs](https://www.pschatzmann.ch/home/category/machine-sound/)\n\n## Support\n\nI spent a lot of time to provide a comprehensive and complete documentation.\nSo please read the documentation first and check the issues and discussions before posting any new ones on Github.\n\nOpen __issues only for bugs__ and if it is not a bug, use a discussion: Provide enough information about \n- the selected scenario/sketch \n- what exactly you are trying to do\n- your hardware\n- your software version (from the Boards Manager) and library versions\n- what exactly your problem is\n\nto enable others to understand and reproduce your issue.\n\nFinally, __don't__ send me any e-mails or post questions on my personal website! \n\nPlease note that discussions and issues which have already been answered before or where the answer can be found in the documentation may get deleted w/o reply.\n\n## Installation in Arduino\n\nYou can download the library as zip and call include Library -\u003e zip library. Or you can git clone this project into the Arduino libraries folder e.g. with\n\n```\ncd  ~/Documents/Arduino/libraries\ngit clone https://github.com/pschatzmann/arduino-audio-tools.git\n```\n\nI recommend to use git because you can easily update to the latest version just by executing the ```git pull``` command in the project folder.\nIf you want to use the library on other patforms, you can find [further information in the Wiki](https://github.com/pschatzmann/arduino-audio-tools/wiki). \n\n\n## Sponsor Me\n\nThis software is totally free, but you can make me happy by rewarding me with a treat\n\n- [Buy me a coffee](https://www.buymeacoffee.com/philschatzh)\n- [Paypal me](https://paypal.me/pschatzmann?country.x=CH\u0026locale.x=en_US)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschatzmann%2Farduino-audio-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpschatzmann%2Farduino-audio-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschatzmann%2Farduino-audio-tools/lists"}