{"id":13728781,"url":"https://github.com/ElandaSunshine/Jaut","last_synced_at":"2025-05-08T01:30:24.399Z","repository":{"id":189120541,"uuid":"222533943","full_name":"ElandaSunshine/Jaut","owner":"ElandaSunshine","description":"A simple and powerful JUCE module-bundle that adds several new packages for different day-to-day things.","archived":false,"fork":false,"pushed_at":"2024-10-14T17:37:15.000Z","size":47666,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-05-01T03:36:11.552Z","etag":null,"topics":["audio","bundle","cmake","config","dsp","ghp-lib","juce","juce-framework","juce-modules","library","log","logging","module","modules","theme","themes","tools","utility"],"latest_commit_sha":null,"homepage":"https://elandasunshine.github.io/Jaut/","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/ElandaSunshine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2019-11-18T20:04:32.000Z","updated_at":"2025-01-20T15:36:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"632de8f8-4203-45d6-8995-1f8c74a50577","html_url":"https://github.com/ElandaSunshine/Jaut","commit_stats":null,"previous_names":["elandasunshine/jaut"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElandaSunshine%2FJaut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElandaSunshine%2FJaut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElandaSunshine%2FJaut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElandaSunshine%2FJaut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ElandaSunshine","download_url":"https://codeload.github.com/ElandaSunshine/Jaut/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252981349,"owners_count":21835413,"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":["audio","bundle","cmake","config","dsp","ghp-lib","juce","juce-framework","juce-modules","library","log","logging","module","modules","theme","themes","tools","utility"],"created_at":"2024-08-03T02:00:50.302Z","updated_at":"2025-05-08T01:30:20.995Z","avatar_url":"https://github.com/ElandaSunshine.png","language":"C++","funding_links":[],"categories":["Modules \u0026 Plugin Collections"],"sub_categories":[],"readme":"![Jaut Banner](https://user-images.githubusercontent.com/34101281/266309298-edf7a19f-0af9-41c2-8eea-a3bd1f6344a9.png)\n\n\n[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/ElandaSunshine/Jaut/cmake-multi-platform.yml?style=for-the-badge\u0026logo=cmake\u0026logoColor=white\u0026label=CTest)](https://github.com/ElandaSunshine/Jaut/actions/workflows/cmake-multi-platform.yml)\n[![GitHub tag (with filter)](https://img.shields.io/github/v/tag/ElandaSunshine/Jaut?filter=!v-*\u0026style=for-the-badge\u0026label=Version)](https://github.com/ElandaSunshine/Jaut/releases)\n[![Codacy grade](https://img.shields.io/codacy/grade/2e299d0fd75a4f92a5d016b3a92eaeee?style=for-the-badge\u0026logo=codacy\u0026label=Code%20Quality)\n](https://app.codacy.com/gh/ElandaSunshine/ExTrait/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade\u0026label=Grade)\n\n\u003e [!WARNING]  \n\u003e This is still in heavy development, use this at your own risk. Many things are still not working as expected, and some of the code formatting is still off. Namely the gui module will not work in its current state.\n\n\u003e [!NOTE]  \n\u003e This repository is still in beta, it is not advisable to use it in production just yet.\n\n# Introduction\n[JUCE](https://juce.com/), a wonderful framework, a vast collection of amazing tools.  \nIt's main focus has always been on audio, but lately evolved into much more than just for sound engineers; everyone can do almost everything with it and it constantly grows bigger and bigger.\n\nHowever, it hasn't got everything and many many cool things it provides aren't that super duper great thing everyone is craving or just isn't there to begin with.  \nThis is the reason why this module-bundle came to exist.\n\nJaut aims at developers that are missing that feeling of completeness and don't like to bother too much with adding more and more 3rd Party externals just to get one thing going.  \nAll we try to accomplish is a central collection of useful stuff.\n\n# Motivation\nThe origin-story of this collection couldn't be any more trivial.\nDuring work on some projects, I came to realise that most of the things that flow into any of them are not unique cases.  \nA lot of the used stuff might be used in the next project, and the next, and the... you get the gist.\n\nSo wouldn't it be a wonderful thing if all these projects had some sort of anchor-point?  \nIs there a way to, such that I don't have to copy everything over and over again?  \nWell, I love to break it to you:  \nA big fat **YES**; the answer is a common toolset.\n\n# Structure\nAt first sight, it might be a bit complicated to look over this bundle's structure, however, soon you will find out it is not that big of a deal.  \nSo let's have a deep dive into the various folders and bits this repo is comprised of.[^stc]\n\n## Folders\nThis project comes with plenty of files and folders, so it's no surprise that some of them might not be that obvious to decipher, but most of them should be familiar to you.  \nMost of the files in the root folder are just repository description files or only relate to the tooling of the project like configuration, analysis and workflow files.\n\n- _**/cmake**_  \nMain entry point for CMake scripts the project uses, all files inside this folder will be .cmake files used by the project.\n  - _**/**_  \nContains all build and project related CMake scripts like find() related module definitions, install scripts, package definitions ect.\n  - _**/tools**_  \nAdditional CMake scripts that are not used but provided by this package; to be used on the user side of things\n\n- _**/docs**_  \nServing all documentation related needs for this repository.\n  - _**/doxygen**_  \nAny Doxygen related files and scripts needed to generate the source reference of this bundle.\n- _**/examples**_  \nProviding a set of examples, showcasing how some of the things are used and how you can use them too the best way possible.\n- _**/modules**_  \nThe actual source code, split across several [JUCE Modules](https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md).\nThis will be the most important folder and where to look when you need something specific code-wise.\n\n  See: [Modules](#modules)\n- _**/resources**_  \nAssets this some of this project's tools use to function properly or provide additional features.\n- _**/test**_  \nTesting facilities for this bundle, you probably won't ever need to open this folder except if you want to take inspiration on how to use things if the provided examples didn't fit your needs.\n\n## Modules\nOf course, there is also the main focus of this repositories, our modules.  \nBy now you should know what [JUCE Modules](https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md) are, if not don't worry, you can still use them without knowing how\nto create them.  \n\n| Module   | Description                                                                                      | Full name     |\n|----------|--------------------------------------------------------------------------------------------------|:-------------:|\n| Core     | Core functionality of jaut.                                                                      | jaut_core     |\n| Audio    | Various processing and dsp related classes.                                                      | jaut_audio    |\n| Message  | Tools for simple message passing management.                                                     | jaut_message  |\n| Provider | Defines classes for advanced data management like configurations and folder management.          | jaut_provider |\n| Logger   | Defines facilities to log to different outputs in different ways and formats.                    | jaut_logger   |\n| Gui      | Gui related utils.                                                                               | jaut_gui      |\n| Dummy    | Jaut dummy module for unit testing purposes, you won't likely need this, sooo... just ignore it. | jaut_dummy    |\n\nYou will also notice that the JUCE module format defines versions for each and every module, but we will just leave them at 1.0.0\nregardless.  \nYou can just ignore them and live on as if they weren't here, as we already have the bundle versioning.\n\n# Installation\nThe entire bundle is backed by a [CMake Module](https://cmake.org/cmake/help/book/mastering-cmake/chapter/Modules.html), so there is not much to do.  \nHowever, you will still need to be aware of one or the other thing.\n\n## Setup\n### CMake\n\u003e [!NOTE]  \n\u003e This does note yet provide an actual CMake module that you can use with [CMake's find_package()](https://cmake.org/cmake/help/latest/command/find_package.html).  \n\u003e But in future this will all be settled.\n\n#### Linking\nIt couldn't be any easier, thanks to the [JUCE Module Format](https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md), all you need to do is adding this bundle as a subdirectory. (after adding JUCE)  \nYou can then selectively link the module, you want to use, to your target:\n```cmake\nadd_subdirectory(path/to/jaut)\ntarget_link_libraries(YourTarget\n    VISIBILITY\n        jaut::jaut_core\n        jaut::jaut_gui\n        # ect.\n        )\n```\n\n#### Options\nThere are also a few additional options provided with this CMake module that you can use to build/configure the process.\n| Name                 | Description                                                                                                                                            | Default |\n|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|--------:|\n| JAUT_BUILD_TESTS     | Build unit tests for the Jaut bundle                                                                                                                   | OFF     |\n| JAUT_BUILD_EXAMPLES  | Build examples for the Jaut bundle                                                                                                                     | OFF     |\n| JAUT_CLONE_JUCE      | Whether JUCE should be cloned for Jaut specifically, this will majorly be used for standalone builds of the module bundle like testing or development  | OFF     |\n\n### Projucer\nAdd the module of interest to the module section of the Projucer. (the little '+' in the corner of the module list)\n\n## Dependencies\n### JUCE\nSince this repository is a juce module-bundle, it is just natural to fetch JUCE first before doing anything with it.  \nLearn more here:  \nhttps://github.com/juce-framework/juce\n\n### Integrated\nSome of the dependencies that this module bundle requires are directly embedded into the modules.\nThe following dependencies are hardwired into the codebase:\n- **FMT**  \n  Homepage: https://github.com/fmtlib/fmt  \n  Path: modules/jaut_logger/detail  \n  Provides the logging module with additional and optional formatting capabilities.\n\n- **MS SafeInt**  \n  Homepage: https://github.com/dcleblanc/SafeInt  \n  Path: modules/jaut_core/detail/  \n  Provides the capability of dealing with integer overflows, mainly used in the core module by the `jaut::Number` class.\n\n### Optionals\nThere is also a few optional libraries that are used to enable a subset of additional functionality.\nThese are not necessary but needed when making use of these tools.\n\n- **yaml-cpp**  \n  Homepage: https://github.com/jbeder/yaml-cpp  \n  Depends: `jaut::YamlParser`  \n  Provides the JAUT configuration tools with a yaml parser.\n\n# Usage\nSince Jaut is a bigger collection of tools and utilities, it wouldn't make much sense to give details about every single thing in this section. \nThankfully, this repository also provides a wiki and a reference which sheds some light on the individual parts of this toolset which both can be found here:  \n- [Wiki](https://elandasunshine.github.io/Jaut/docs/wiki)  \n- [Documentation](https://elandasunshine.github.io/Jaut/docs/reference)\n\nAlso take a look at the `examples` and `test` folders for indicators on how to possibly use a tool.\n\n# Known Issues\nHere is a list of major known issues with this module bundle that take some more time to fix or can't be fixed due to limitations:\n| Description | Comment | Issue |\n|---|---|---|\n| Module `jaut_gui` does not work | This is a major issue that is currently being worked on and will likely be fixed with any of the next bundle updates. For now it's best to ignore this module and focus on the other ones instead. | [#2](https://github.com/ElandaSunshine/Jaut/issues/2) |\n\n# License\n## Jaut\nYou may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build \u0026 install instructions.\n\n## FMT \u0026 MS SafeInt\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n# Contact\nIf you need more information or would like to contact us, you can find us on our Discord:  \n[![ElandaSunshine Community](https://discordapp.com/api/guilds/781531690383179826/widget.png?style=banner2)](https://discord.com/invite/jzRyAtnJBc)\n\n[^stc]: Any of these things are subjects to change. It is best to keep that in mind and stay tuned.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FElandaSunshine%2FJaut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FElandaSunshine%2FJaut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FElandaSunshine%2FJaut/lists"}