{"id":16998666,"url":"https://github.com/joht/speclet","last_synced_at":"2026-05-20T21:04:14.362Z","repository":{"id":37012803,"uuid":"461447438","full_name":"JohT/speclet","owner":"JohT","description":"Audio Spectrum Analyzer using Fourier- and Wavelet-Transformation","archived":false,"fork":false,"pushed_at":"2025-04-08T17:28:55.000Z","size":3010,"stargazers_count":21,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T06:07:11.456Z","etag":null,"topics":["analyzer","audio","dsp","fourier","juce","spectrum","uncertainty-principle","vst","vst3","wavelet"],"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/JohT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-02-20T10:03:23.000Z","updated_at":"2025-03-17T06:25:49.000Z","dependencies_parsed_at":"2023-02-15T06:01:07.629Z","dependency_job_id":"e534afba-2bc0-4c7c-91ad-349167aa8052","html_url":"https://github.com/JohT/speclet","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohT%2Fspeclet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohT%2Fspeclet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohT%2Fspeclet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohT%2Fspeclet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohT","download_url":"https://codeload.github.com/JohT/speclet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248525144,"owners_count":21118618,"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":["analyzer","audio","dsp","fourier","juce","spectrum","uncertainty-principle","vst","vst3","wavelet"],"created_at":"2024-10-14T04:05:51.223Z","updated_at":"2026-05-20T21:04:14.341Z","avatar_url":"https://github.com/JohT.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"./image/SpecletBlueIcon.png\" width=\"40\" alt=\"Speclet Icon\"\u003e Speclet\n\nVST Audio Spectrum Analyzer Plugin using Fourier- and Wavelet-Transformation.\n\n- (c)2011 by Johannes Troppacher (Austria)  \n- For graduation at [Hochschule Mittweida - University of Applied Science](https://www.hs-mittweida.de/en) (Germany)  \n- Paper (german): [Echtzeitspektralanalyse auf Basis der Fourier- und Wavelet-Transformation implementiert als VST-Plugin](https://monami.hs-mittweida.de/frontdoor/deliver/index/docId/3216/file/J.Troppacher_2011_Diplomarbeit.pdf)  \n- License: [GNU GENERAL PUBLIC LICENSE v3](./LICENSE)\n- For prototyping and experimentation without programming visit [JoWa Wavelet Library in Native Instruments Reaktor User Library](https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/11541)\n\n## 🖥 User Interface\n\n\u003cimg src=\"./doc/image/Speclet-WaveletPacketBestBasisTransform.png\" width=\"600\" alt=\"Speclet User Interface\"\u003e\n\n## 📖 User Guide\n\nHave a look at the [User Guide](./USERGUIDE.md) for further screenshots and to get started using the analyzer.\n\n## 🏛️ Architecture\n\n\u003cimg src=\"./doc/architecture/architecture.svg\" alt=\"Speclet Architecture Diagram\" width=\"800\"\u003e\n\nSee [Architecture Documentation](./doc/architecture/ARCHITECTURE.md) for detailed explanations of components, threading model, and data flow.\n\n## 🏗 Build the Project\n\n### Prerequisites\n\n- [Installing GIT](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n- [Installing CMake](https://cmake.org/install/)\n- [Download Ninja](https://github.com/ninja-build/ninja/releases)\n- (Windows only) [Install Visual Studio Build Tools](https://visualstudio.microsoft.com/de/downloads/?q=build+tools) with Visual Studio Installer, select Desktop Development for C++ and add all optional \"Clang\" components\n- (Optional) [Download Visual Studio Code](https://code.visualstudio.com/download)\n\n### Clone\n\nDownload the project as [zip](https://github.com/JohT/speclet/archive/refs/heads/main.zip)\nor clone it using GIT:\n\n```shell\ngit clone https://github.com/JohT/speclet.git\n```\n\n### Command Line\n\nSee [COMMANDS.md](./COMMANDS.md) if you prefer to use the command line.\n\n### Visual Studio Code (MacOS)\n\n- [Using Clang in Visual Studio Code](https://code.visualstudio.com/docs/cpp/config-clang-mac)\n- Install recommended extensions specified in [speclet.code-workspace](./speclet.code-workspace)\n- Select the kit that fits to your machine (`STRG+SHIFT+P`, Type \"CMAKE kit\")\n\n### Visual Studio Code (Windows)\n\n- Install [Visual Studio Build Tools](https://visualstudio.microsoft.com/de/downloads/?q=build+tools) with Visual Studio Installer, select Desktop Development for C++ and add all optional Clang Features\n- Install recommended extensions specified in [speclet.code-workspace](./speclet.code-workspace)\n- Select the kit that fits your machine (e.g. amd64) (`STRG+SHIFT+P`, Type \"CMAKE kit\").\nSuccessfully tested with \"Visual Studio Build Tools 2022 Release - amd64\".\n\n## 🩺 Testing\n\n### Run Unit Tests within your command line interface (CLI)\n\n```shell\nctest --test-dir build/test\n```\n\n### Run Unit Tests in Visual Studio Code\n\nBuild the project and use extension \"matepek.vscode-catch2-test-adapter\" to show all the Catch2 CTest cases\nunder \"Testing\" (left \"activity bar\", below extensions button).\n\n### Build AudioPluginHost for exploratory testing\n\n```shell\ncmake.exe --build build --config Debug --target AudioPluginHost\n```\n\n## 🔎 Troubleshooting\n\nSee [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for common issues and their resolutions.\n\n## 🛠 Used Tools\n\nModernized 2022 using the following tools:\n\n- [The LLVM Compiler Infrastructure](https://github.com/llvm/llvm-project)\n- [Ninja](https://github.com/ninja-build/ninja)\n- [CMake](https://gitlab.kitware.com/cmake/cmake)\n- [Setup-free CMake dependency management](https://github.com/cpm-cmake/CPM.cmake)\n- [Plugin Validator](https://github.com/Tracktion/pluginval)\n\nThis version is not ready yet.\nIt contains the code from back then, that doesn't compile any more.  \nIt also contains the plugin made with the tutorial [Learn Modern C++ by Building an Audio Plugin (w/ JUCE Framework) - Full Course YouTube](https://www.youtube.com/watch?v=i_Iq4_Kd7Rc\u0026list=PLi4rQ_T_X31Gd4pyUbvPltTVSyw8v_yYT\u0026index=5\u0026t=1051s)\nas a template to start the modernization.\n\n## 📚 Used Libraries\n\nThis plugin was made in 2011 (modernized 2022) using the following frameworks and libraries:\n\n- VST SDK 2.4 rev2 (2011)\nby Steinberg  \nhttp://www.steinberg.net/en/company/developer.html  \nvisit the link above for licensing\n\n- VST 3 Audio Plug-Ins SDK (2022)\nby Steinberg  \nhttp://www.steinberg.net/en/company/developer.html  \nvisit the link above for licensing\n\n- JUCE  \nby Raw Material Software (2011)  \nhttp://www.rawmaterialsoftware.com/juce (2011)  \nLicense: https://github.com/juce-framework/JUCE/blob/master/LICENSE.md (2022)\n\n- FFTW  \nby MIT (Matteo Frigo and Steven G. Johnson)\nhttp://www.fftw.org  \nGNU General Public License\n\n- WAVE++  \nby Ryerson Computrational Signal Analysis Group  \n(c) 1999 by S. E. Ferrando, L. A. Kolasa and N. Kovacevic  \nhttps://math.ryerson.ca/~lkolasa/CppWavelet.html  \n\"\nPermission is granted for anyone to copy, use, or modify these\nprograms and documents for purposes of research or education,\nprovided this copyright notice is retained, and note is made of\nany changes that have been made.  Use for commercial applications is only\nallowed by permission of the copyright holders.\n\"\n\n- Implementation of C++20's std::span for older compilers\n(c) 2019 by Tristan Brindle\nhttps://github.com/tcbrindle/span\nBoost Software License 1.0\n\n## Trademarks\n\n- Steinberg is a registered trademarks of Steinberg Media Technologies GmbH.\n\n## 🔎 References\n\n### Digital Signal Processing\n\n- [\u0026#11088; Window Functions and Their Applications in Signal Processing (PDF)](https://library.oapen.org/handle/20.500.12657/41686)\n- [Understanding FFT Windows (PDF, 2013)](https://www.egr.msu.edu/classes/me451/me451_labs/Fall_2013/Understanding_FFT_Windows.pdf)\n- [Comparison of Matching Pursuit Algorithm with Other Signal Processing Techniques for Computation of the Time-Frequency Power Spectrum of Brain Signals](https://www.jneurosci.org/content/36/12/3399)\n- [Fourier uncertainty principle](https://www.johndcook.com/blog/2021/03/17/fourier-uncertainty-principle)\n- [JoWa Wavelet Library in Native Instruments Reaktor User Library](https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/11541)\n\n### Templates and Examples\n\n- [\u0026#11088; Pamplejuce](https://github.com/sudara/pamplejuce)\n- [Cross-platform CI for JUCE audio plugins with Github Actions](https://github.com/maxwellpollack/juce-plugin-ci)\n- [JUCE CMake Repo Prototype](https://github.com/eyalamirmusic/JUCECmakeRepoPrototype/blob/master/CMakeLists.txt)\n- [Example using CPM package manager with JUCE](https://github.com/robbert-vdh/diopser/blob/master/CMakeLists.txt)\n- [CLAP CLever Audio Plugin](https://github.com/free-audio/clap)\n- [Integration of Catch, CMake and CMake CodeCoverage](https://github.com/fkromer/catch_cmake_coverage)\n- [The Stochas Sequencer](https://github.com/surge-synthesizer/stochas)\n- [JUCE 6 Preview - Demo Project](https://github.com/tobanteAudio/juce-6-demo)\n\n### Performance Tracing/Logging (Profiling, Instrumentation)\n\n- [Google Chrome Browser Trace Log Viewer](chrome://tracing/)\n- [The Cherno - VISUAL BENCHMARKING in C++ (YouTube)](https://www.youtube.com/watch?v=xlAH4dbMVnU\u0026t=197s)\n- [\u0026#11088; Instrumentor.h (Code Snippet)](https://gist.github.com/TheCherno/31f135eea6ee729ab5f26a6908eb3a5e)\n- [Instrumentor.h David Churchill Mod (Code Snippet)](https://pastebin.com/qw5Neq4U)\n- [Instrumentor.h Mattias Aronsson Mod](https://gist.github.com/maronsson/073840bf94e4d6df94c5f294a6e96e03)\n\n### Testing\n\n- [\u0026#11088; CMake's CTest](https://cmake.org/cmake/help/latest/manual/ctest.1.html)\n- [\u0026#11088; Catch2 CMake Integration](https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md)\n- [\u0026#11088; Plugin Validator](https://github.com/Tracktion/pluginval)\n- [Catch2 Data Generators](https://github.com/catchorg/Catch2/blob/devel/docs/generators.md)\n- [Coverage for tests with cmake and catch2](https://stackoverflow.com/questions/65603144/how-to-get-coverage-for-tests-with-cmake-and-catch2)\n- [Findcodecov.cmake](https://github.com/catchorg/Catch2/blob/devel/CMake/Findcodecov.cmake)\n\n### Windows Build\n\n- [Visual Studio Build Tools Download](https://visualstudio.microsoft.com/de/downloads/?q=build+tools)\n\n### Installation\n\n- [VST plug-in locations on Windows](https://helpcenter.steinberg.de/hc/en-us/articles/115000177084-VST-plug-in-locations-on-Windows)\n- [VST plug-in locations on Mac OS X and macOS](https://helpcenter.steinberg.de/hc/en-us/articles/115000171310-VST-plug-in-locations-on-Mac-OS-X-and-macOS)\n- [Where are third-party Audio Units plug-ins installed on Mac?](https://support.apple.com/en-al/HT201532)\n\n### Other\n\n- [\u0026#11088; std::span implementation for C++11 and later](https://github.com/tcbrindle/span)\n- [C++ Singleton](https://stackoverflow.com/questions/1008019/c-singleton-design-pattern)\n- [10 Cmake Tips \u0026 Tricks](https://medium.com/codex/10-cmake-tips-tricks-7f00d407923d)\n- [Reference to non-static member function must be called](https://stackoverflow.com/questions/26331628/reference-to-non-static-member-function-must-be-called)\n- [Pointer-to-Member Function](http://www.codeguru.com/cpp/cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm)\n- [Commit Message Guidelines](https://gist.github.com/robertpainsi/b632364184e70900af4ab688decf6f53)\n- [Undefined symbol _kIOMainPortDefault](https://forum.juce.com/t/juce-6-1-3-undefined-symbol-kiomainportdefault/49335/9)\n- [CheckTypeSize (FFTW failed for multiple architectures)](https://cmake.org/cmake/help/latest/module/CheckTypeSize.html)\n- [Article CMake Ninja Combo: The Gist](https://www.incredibuild.com/blog/cmake-ninja-combo-the-gist)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoht%2Fspeclet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoht%2Fspeclet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoht%2Fspeclet/lists"}