A comprehensive collection of extra modules for JUCE, providing professional-grade utilities, UI components, DSP processors, and more for audio plugin and application development.
- JUCE 7.0+ (included as submodule)
- CMake 3.15+
- C++20 compatible compiler
- Supported Platforms: Windows, macOS (10.13+), Linux
- Add Gin as a submodule or clone into your project:
git submodule add https://github.com/FigBug/Gin.git libs/Gin- In your
CMakeLists.txt:
add_subdirectory(libs/Gin/modules)
target_link_libraries(YourTarget PRIVATE
gin
gin_plugin # For audio plugins
gin_dsp # For DSP components
gin_gui # For UI components
# ... other gin modules as needed
)- Include Gin modules in your code:
#include <gin/gin.h>
#include <gin_plugin/gin_plugin.h>Gin is organized into focused modules that can be included independently:
| Module | Description |
|---|---|
| gin | Core utilities, file system watching, download manager, math utilities |
| gin_dsp | Audio DSP components: oscillators, filters, effects, modulation |
| gin_graphics | Image processing, effects, metadata, BMP format support |
| gin_gui | UI components, property editors, layout system |
| gin_metadata | Image metadata reading from JPEG, GIF, and PNG files |
| gin_network | WebSocket, secure sockets |
| gin_plugin | Audio plugin utilities and common functionality |
| gin_simd | SIMD-optimized operations |
| gin_webp | WebP image format support |
- DownloadManager - Asynchronous downloads with zero main thread delay
- FileSystemWatcher - Real-time notifications when files change
- SharedMemory - Inter-process memory sharing
- Ellipse - Geometric calculations for ellipses
- LeastSquaresRegression - Curve fitting to data points
- LinearRegression - Line fitting to data points
- Spline - Smooth cubic spline interpolation
- Integrator - Numerical integration
- ImageEffects - Sepia, vignette, soften, sharpen, invert, contrast, hue, saturation, stack blur
- ImageMetadata - Read/write JPEG and PNG metadata
- BMPImageFormat - Windows Bitmap support
- Oscillators - Wavetable oscillator with multiple waveforms
- Effects - Compressor, reverb, filters
- Envelopes - ADSR envelope generator
- PerlinNoise - Natural-sounding noise generation
- Modulation - LFO and modulation matrix
- Property Components - File chooser, color picker
- Layout System - JSON-based flexible layouts
- Synth UI - Ready-to-use synthesizer interface components
- Map Components - OpenStreetMap integration and tile rendering
- WebSocket - Full-featured WebSocket client
- SecureStreamingSocket - SSL/TLS socket support
- OpenStreetMaps - Tile fetching from OSM servers
The repository includes several complete example projects:
- Demo - Comprehensive demonstration of all Gin features
- Synth - Complete synthesizer plugin example
- Effect - Audio effect plugin example
- UnitTests - Test suite for Gin components
cd Gin
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build buildThe built applications will be in build/examples/.
#include <gin/gin.h>
// Use the download manager
gin::DownloadManager dm;
dm.downloadAsync(juce::URL("https://example.com/file.zip"),
[](juce::InputStream* stream) {
// Process downloaded data
});
// Watch a directory for changes
gin::FileSystemWatcher watcher;
watcher.addFolder(juce::File::getSpecialLocation(
juce::File::userDocumentsDirectory));
watcher.addListener(this);
// Use a spline for smooth interpolation
gin::Spline spline;
spline.addPoint({0.0f, 0.0f});
spline.addPoint({1.0f, 1.0f});
float interpolated = spline.get(0.5f);- Discord Community - Get help and discuss Gin
- Developer Blog - Tutorials and articles
- Doxygen API Documentation - Complete API reference
Gin incorporates and builds upon several excellent open-source libraries and algorithms:
- JUCE by Roli - The foundational framework
- Stack Blur by Mario Klingemann - Fast blur algorithm
- muParser by Ingo Berg - Mathematical expression parser
- Spline by Devin Lane - Cubic spline interpolation
- AVIR by Aleksey Vaneev - Image resizing
- easywsclient - WebSocket client implementation
- mbed TLS - SSL/TLS library
- Least Squares Regression - Curve fitting algorithms
reFX Audio Software Inc. for supporting the development of Gin.