{"id":13728733,"url":"https://github.com/SquarePine/squarepine_core","last_synced_at":"2025-05-08T00:32:26.213Z","repository":{"id":37543281,"uuid":"352665814","full_name":"SquarePine/squarepine_core","owner":"SquarePine","description":"An assortment of modules that make a great addition to your JUCE app and plugin development tool belt.","archived":false,"fork":false,"pushed_at":"2024-10-16T20:30:41.000Z","size":3716,"stargazers_count":40,"open_issues_count":7,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-19T17:19:45.673Z","etag":null,"topics":["android","audio","cplusplus","cplusplus-library","graphics","ios","juce","juce-modules","linux","macos","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SquarePine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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":["jrlanglois","SquarePine"]}},"created_at":"2021-03-29T14:07:11.000Z","updated_at":"2024-10-16T20:30:44.000Z","dependencies_parsed_at":"2023-12-15T02:12:43.114Z","dependency_job_id":"6d41f856-c7e2-4247-9e26-5651d1b5ce59","html_url":"https://github.com/SquarePine/squarepine_core","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquarePine%2Fsquarepine_core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquarePine%2Fsquarepine_core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquarePine%2Fsquarepine_core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquarePine%2Fsquarepine_core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SquarePine","download_url":"https://codeload.github.com/SquarePine/squarepine_core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224679981,"owners_count":17351906,"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":["android","audio","cplusplus","cplusplus-library","graphics","ios","juce","juce-modules","linux","macos","windows"],"created_at":"2024-08-03T02:00:49.171Z","updated_at":"2025-05-08T00:32:26.202Z","avatar_url":"https://github.com/SquarePine.png","language":"C","readme":"# SquarePine Modules\r\n\r\nThe SquarePine Modules provide a vast array of tools in the [format of JUCE/C++ modules](https://github.com/juce-framework/JUCE/blob/develop/docs/JUCE%20Module%20Format.md). From animation and easing, cryptopgraphy,  networking, and  codecs and audio effects, hopefully you will find something of use!\r\n\r\nEverything should _\"Just Work™\"_ within your JUCE project. If this isn't the case, please see the guidelines under [Contributing](#Contributing).\r\n\r\n## Requirements\r\n\r\nThe C++ modules contained assume you're using [the latest `develop` branch of JUCE](https://github.com/juce-framework/JUCE/tree/develop) and a C++20/modern toolchain.\r\n\r\n## Philosophy\r\n\r\nThe philosophy here is multi-part:\r\n\r\n* Easy to integrate into new and existing JUCE projects (ie: following the JUCE module format).\r\n* Open up as much code as possible.\r\n* Make the code as generic and flexible as possible.\r\n* Make the code as consistent in design, architecture, and style, as much as possible.\r\n  * Have a look at [our coding standards](https://github.com/SquarePine/SquarePineCodingStandards/wiki)!\r\n\r\n## Shields\r\n\r\n[![Version](https://img.shields.io/github/v/release/SquarePine/squarepine_core?color=gold\u0026include_prereleases\u0026label=Release\u0026logo=Github)](https://github.com/SquarePine/squarepine_core/releases/latest)\r\n\r\n# Functionality Highlights\r\n\r\n## `squarepine_core`\r\n\r\nSome major feature highlights:\r\n\r\n* Highly flexible Google Analytics integrations\r\n  * Pair up the [`sp::GoogleAnalyticsReporter`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/networking/GoogleAnalyticsReporter.h#L280-L384) with the easy to use [`sp::GoogleAnalyticsMetadata`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/networking/GoogleAnalyticsReporter.h#L3-L277).\r\n* Translation file management with notifications.\r\n  * [`sp::LanguageHandler`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/text/LanguageHandler.h#L164).\r\n* A highly flexible memory pool allocation system.\r\n  * [`sp::Allocator`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/memory/Allocator.h).\r\n* Find out what kind of network you're on and receive notifications when connectivity changes (connects or disconnects).\r\n  * [`sp::NetworkConnectivityChecker`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/networking/NetworkConnectivityChecker.h) \r\n* A wide array of math functions and structures.\r\n  * [`sp::Vector4D`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/maths/Vector4D.h)\r\n  * [`sp::Angle`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/maths/Angle.h)\r\n* Many `juce::XYZType` are available within the `juce::ValueTree` ecosystem via the [`VariantConverters`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/valuetree/VariantConverters.h) provided.\r\n* Plenty [freestanding utilities](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_core/valuetree/ValueTreeHelpers.h) for the `juce::ValueTree` ecosystem.\r\n\r\n## `squarepine_audio`\r\n\r\n### Utilities\r\n\r\nSome utils to avoid boilerplate and rewriting the same code again:\r\n\r\n* [`sp::AudioBufferFIFO`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/AudioBufferFIFO.h)\r\n* [`sp::AudioBufferView`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/AudioBufferView.h)\r\n  * For easy `juce::AudioBuffer` iteration using range-based `for`.\r\n* [Wide range of straightforward resamplers based on JUCE's interpolators.](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/resamplers/Resampler.h)\r\n\r\n### Metering \u0026 Graphics\r\n\r\nWe have an easy to use metering system with [`sp::LevelProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/LevelsProcessor.h) and [`sp::Meter`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/graphics/Meter.h).\r\n\r\n### Many, Many Audio Effects\r\n\r\nA vast range of simple renditions of audio effects can be found, including an ecosystem to manage them.\r\n\r\n#### The Effects\r\n\r\n* [`sp::BitCrusherProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/BitCrusherProcessor.h)\r\n* [`sp::ChorusProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/ChorusProcessor.h)\r\n* [`sp::DitherProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/DitherProcessor.h)\r\n* [`sp::GainProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/GainProcessor.h)\r\n* [`sp::HissingProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/HissingProcessor.h)\r\n* [`sp::JUCEReverbProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/JUCEReverbProcessor.h)\r\n* [`sp::LFOProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/LFOProcessor.h)\r\n* [`sp::MuteProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/MuteProcessor.h)\r\n* [`sp::PanProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/PanProcessor.h)\r\n* [`sp::PolarityInversionProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/PolarityInversionProcessor.h)\r\n* [`sp::SimpleDistortionProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/SimpleDistortionProcessor.h)\r\n* [`sp::SimpleEQProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/SimpleEQProcessor.h)\r\n* [`sp::StereoWidthProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/effects/StereoWidthProcessor.h)\r\n\r\n### The Ecosystem\r\n\r\n* [`sp::EffectProcessor`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/EffectProcessor.h)\r\n* [`sp::EffectProcessorFactory`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/EffectProcessorFactory.h)\r\n* [`sp::EffectProcessorChain`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/EffectProcessorChain.h)\r\n* [`sp::SquarePineAudioPluginFormat`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_audio/core/SquarePineAudioPluginFormat.h)\r\n\r\n## `squarepine_graphics`\r\n\r\n* [iCUESDK](https://github.com/CorsairOfficial/cue-sdk) support for controlling your Corsair devices' RGB lights.\r\n  * You need to have the SDK.\r\n  * Enable [`SQUAREPINE_USE_ICUESDK`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_graphics/squarepine_graphics.h#L33-L42) when integrating the `squarepine_graphics` module.\r\n  * Call `sp::corsair::updateAllLEDsWithColour` to have some fun!\r\n* [`sp::ImageFormatManager`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_graphics/images/ImageFormatManager.h) makes it easier to bring together your favourite image formats, unifying their instances for loading images with your own codecs using JUCE's [`juce::ImageFileFormat`](https://github.com/juce-framework/JUCE/blob/develop/modules/juce_graphics/images/juce_ImageFileFormat.h) ecosystem.\r\n* Simplifying font support for look and feels using [`sp::FontWeight`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_graphics/utilities/Fonts.h#L5) and [`sp::FontFamily`](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_graphics/utilities/Fonts.h#L34).\r\n* Every standard [easing function](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_animation/maths/Easing.h) for animation purposes.\r\n  * Including a [CubicBezier](https://github.com/SquarePine/squarepine_core/blob/main/modules/squarepine_animation/maths/CubicBezier.h) implementation with its own easing variants.\r\n\r\n# Demo Screenshots\r\n\r\n## Easing\r\n\r\n![image](https://user-images.githubusercontent.com/1908886/174856790-680f1e3f-2c82-470d-a107-a590e6646c54.png)\r\n","funding_links":["https://github.com/sponsors/jrlanglois","https://github.com/sponsors/SquarePine"],"categories":["Modules \u0026 Plugin Collections"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSquarePine%2Fsquarepine_core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSquarePine%2Fsquarepine_core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSquarePine%2Fsquarepine_core/lists"}