Skip to content

francoisd15/linux-synth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project: Linux GTK+JUCE Subtractive Synth

Overview

A standalone polyphonic subtractive synthesizer for Linux.

  • Audio Engine: JUCE (handling Audio/MIDI I/O and DSP).
  • GUI: GTK4 (handling user interaction and visualization).
  • Architecture: The application will initialize GTK for the main loop. The JUCE AudioDeviceManager will run on its own thread(s). A bridge will communicate UI parameter changes to the Audio Engine.

Features

  1. Oscillators: Saw, Square, Triangle, Sine (Band-limited via JUCE DSP).
  2. Filter: Resonant Low Pass Filter.
  3. Envelopes: ADSR for Amplitude and Filter.
  4. Polyphony: 8-16 voices.
  5. UI: GTK Window with sliders/knobs for control and a virtual keyboard.

Roadmap

Phase 1: Environment & Scaffold

  • Project Structure: Create CMakeLists.txt linking GTK4 and JUCE (modules: juce_audio_basics, juce_audio_devices, juce_audio_formats, juce_dsp, juce_core).
  • GTK Window: Create a basic GTK4 application window.
  • Audio Init: Initialize JUCE AudioDeviceManager and open the default audio device.
  • Test Tone: Output a simple generated sine wave to verify the audio callback is running.

Phase 2: Core Synthesis (Headless)

  • Voice Class: Create SynthVoice inheriting from juce::MPESynthesiserVoice or standard SynthesiserVoice.
    • Implement renderNextBlock using juce::dsp::Oscillator.
  • Synth Engine: Set up juce::Synthesiser to manage voices.
  • MIDI: Connect system MIDI input to the Synthesiser.

Phase 3: UI Integration

  • Controls: Add GTK Scale widgets (sliders) for Frequency (if testing), Cutoff, Resonance, Envelope params.
  • Parameter Bridge: Create a thread-safe way (e.g., std::atomic or lock-free queue) to send values from GTK UI to the Audio Thread.
  • Virtual Keyboard: Add buttons in GTK to trigger Note On/Off events.

Phase 4: Polish

  • Refining Sound: Add Filter ADSR modulation.
  • Styling: Apply CSS/Custom drawing to GTK widgets.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors