GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - FigBug/Gin: A few extras for juce

BranchesTags
Open more actions menu

Latest commit

 

History

1,456 Commits
1,456 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
ci
ci
 
 
doxygen
doxygen
 
 
examples
examples
 
 
modules
modules
 
 
tools/gin_remote
tools/gin_remote
 
 
.clang-format
.clang-format
 
 
.codecov.yml
.codecov.yml
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
BREAKING_CHANGES.md
BREAKING_CHANGES.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CMakePresets.json
CMakePresets.json
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 

Repository files navigation

Gin

Build Windows Build macOS Build Linux codecov

A comprehensive collection of extra modules for JUCE, providing professional-grade utilities, UI components, DSP processors, and more for audio plugin and application development.

Table of Contents

  • Prerequisites
  • Installation
  • Modules
  • Features
  • Examples
  • Help & Documentation
  • Breaking Changes
  • Credits

Prerequisites

  • JUCE 7.0+ (included as submodule)
  • CMake 3.15+
  • C++20 compatible compiler
  • Supported Platforms: Windows, macOS (10.13+), Linux

Installation

Adding Gin to Your CMake Project

  1. Add Gin as a submodule:
git submodule add https://github.com/FigBug/Gin.git modules/gin
  1. In your CMakeLists.txt:
add_subdirectory(modules/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
)
  1. Gin is automatically in the JUCE Header:
#include <JuceHeader.h>

Modules

Gin is organized into focused modules that can be included independently:

Module Description
gin Core utilities, file system watching, download manager, math utilities
gin_3d Basic wireframe 3D rendering engine
gin_controllers Cross-platform game controller support (XInput / GameController / joydev)
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, OpenStreetMap integration
gin_location GPS location services (macOS CoreLocation)
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_standaloneplugin Standalone audio plugin application wrapper
gin_svg SVG parsing and rendering using NanoSVG
gin_webp WebP image format support

Features

Core Utilities (gin)

  • 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

Graphics & Images (gin_graphics)

  • ImageEffects - Sepia, vignette, soften, sharpen, invert, contrast, hue, saturation, stack blur
  • ImageMetadata - Read/write JPEG and PNG metadata
  • BMPImageFormat - Windows Bitmap support

DSP & Audio (gin_dsp)

  • Oscillators - Wavetable oscillator with multiple waveforms
  • Effects - Compressor, reverb, filters
  • Envelopes - ADSR envelope generator
  • PerlinNoise - Natural-sounding noise generation
  • Modulation - LFO and modulation matrix

GUI Components (gin_gui)

  • 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

Network (gin_network)

  • WebSocket - Full-featured WebSocket client
  • SecureStreamingSocket - SSL/TLS socket support

Game Controllers (gin_controllers)

  • GameControllerManager - Cross-platform manager polling up to 8 controllers
  • GameController - Unified button and axis state with listener callbacks
  • Platform backends - XInput on Windows, GameController framework on macOS, joydev on Linux

Plugin Utilities (gin_plugin)

  • Processor - Extended audio processor with parameter management
  • Parameter - Smart parameters with modulation support
  • ModMatrix - Flexible modulation matrix system
  • Plugin Components - Knobs, ADSR, LFO, and MSEG UI components
  • Patch Browser - Preset management and browsing

Image Metadata (gin_metadata)

  • EXIF - Read EXIF metadata from images
  • IPTC - Read IPTC metadata from images
  • XMP - Read XMP metadata from images

SIMD Helpers (gin_simd)

  • MIPP Integration - Cross-platform SIMD abstraction (SSE/NEON)
  • Optimized Math - SIMD-accelerated math operations

WebP Support (gin_webp)

  • WebPImageFormat - Read and write WebP images
  • Bundles its own libwebp, so JUCE's built-in WebP support must be disabled with JUCE_USE_WEBP=0. The CMake target sets this automatically; Projucer users need to add it to their preprocessor definitions.

SVG Support (gin_svg)

  • SVG parsing and rendering - Powered by NanoSVG

3D Wireframe Engine (gin_3d)

  • Vec3/Mat4 - 3D vector and matrix math
  • Camera3D - 3D camera with projection
  • Scene3D - Scene graph for 3D objects
  • Renderer3D - Wireframe rendering to 2D

Standalone Plugin (gin_standaloneplugin)

  • StandaloneApp - Application wrapper for running plugins standalone
  • StandaloneFilterWindow - Window hosting the plugin UI
  • SidebarComponent - Audio analysis display

Examples

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

Building the Examples

cd Gin
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

The built applications will be in build/examples/.

Quick Start Example

#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);

Help & Documentation

  • Discord Community - Get help and discuss Gin
  • Developer Blog - Tutorials and articles
  • Doxygen API Documentation - Complete API reference

Breaking Changes

Bug fixes occasionally change audible behavior or APIs. See BREAKING_CHANGES.md before updating Gin in an existing plugin.

Credits

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

Special Thanks

reFX Audio Software Inc. for supporting the development of Gin.

About

A few extras for juce

Topics

jucejuce-framework

Resources

Readme
BSD-3-Clause license
Activity

Stars

411 stars

Watchers

15 watching

Forks

56 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.