Phantasmagoria v2 - Native C++ Spectral Delay Engine

FuzzyLotus

Member
[RELEASE] Phantasmagoria v2: Native C++ Spectral Delay Engine

Project Overview

Phantasmagoria is a lush, atmospheric spectral delay engine designed for shoegaze, doom, and ambient soundscapes. It is a 6-knob, 4-toggle "no menus" pedal built for the Electrosmith Daisy Seed on the PedalPCB Terrarium platform. The engine combines reverse delay, pitch shifting, and an infinite freeze engine with a massive echo-chamber reverb.

This release marks a major milestone in the development of the project. While the original version was built using PlugData/Pure Data, the move to native C++ represents a total architectural shift. To keep technical discussions clear and organized, this thread will serve as the hub for the new C++ engine, while the original thread remains the home for legacy builds.

Media Demo
Watch the Phantasmagoria v2 in action on YouTube:

Development Evolution: New in v2
By moving to a native C++ architecture, the engine has received several significant upgrades—most notably, the complete eradication of the Pure Data noise floor:

  • The 1kHz Whine Fix (Dead-Quiet Signal Path): One of the most frustrating limitations of the Pure Data/PlugData environment was its lack of support for lower block sizes, which inherently introduced a notorious 1kHz whine into the audio. Moving to C++ allowed us to drop the block size all the way down to 1. The result? That high-frequency artifact is completely gone, leaving a pristine, noise-free signal.
  • Massive Performance Boost: The DSP is now significantly more efficient overall, allowing for cleaner processing and near-zero latency.
  • Improved Shimmer (SW4): The shimmer engine has been retuned to feed directly into the reverb tail for a more "angelic" wash.
  • Enhanced Pitch Shifting: Grain-based processing for the Fifth Down and Octave Down modes is smoother and more responsive than the previous implementation.
  • New Web Flasher Support: Users can now flash the pedal directly from a browser in seconds with no coding or toolchains required.

Control Interface (v2)
  • Knob 1: Delay Time (20ms - 1800ms)
  • Knob 2: Feedback (0 - 95%)
  • Knob 3: Reverb Mix
  • Knob 4: Tape Warble Depth
  • Knob 5: LFO Speed
  • Knob 6: Dry/Wet Mix
  • SW1: Reverse Delay on/off
  • SW2: Fifth Down pitch shift on/off
  • SW3: Octave Down pitch shift on/off
  • SW4: Shimmer (Octave Up) on/off
  • FS1: Bypass
  • FS2: Freeze: tap to toggle, hold to accumulate

Installation & Flashing Instructions
The full source code, updated documentation, and ready-to-flash .bin file are now available on GitHub:

To flash your pedal:
  1. Put your Daisy Seed into BOOT mode.
  2. Navigate to flash.daisy.audio in a compatible browser.
  3. Upload the phantasmagoria.bin file.

Note for Windows Users: If you encounter connection issues, refer to the README on GitHub for the Zadig/driver fix/driver fix to ensure your PC recognizes the Daisy Seed in DFU mode.

Technical Specifications
The C++ rebuild focuses on maximizing the Daisy Seed hardware potential by eliminating the overhead of the original implementation:
  • Latency & Noise Optimization (Block Size 1): By running the engine at a Block Size of 1 (bypassing PD's fixed 64/48 block size limits), the engine provides near-instantaneous audio response and entirely eliminates the 1kHz hardware whine that plagued previous builds.
  • Architecture: Native C++ port utilizing the libDaisy and DaisySP libraries.
  • Pitch Shifting: Refined grain-based processing with smoother transitions and fewer artifacts.
  • Memory Management: Optimized buffer management for the 2-second delay and triple-buffer freeze engine.
  • Audio Fidelity: High-fidelity 48kHz sample rate with a drastically improved signal-to-noise ratio.

Legacy Archive (Pure Data / PlugData)
The original version remains available for DIYers who prefer working in visual environments or wish to study the original logic:
AI Disclaimer
I have used AI to help me write up the code and documentation, but the ideas and 80+hours of work I've put into fine-tuning things bug fixing, unplugging the pedal, turning the amp on, waiting for the lamps to get hot, were all very real and a challenge I've set for myself. As a complete code noob (except some BASIC JavaScript coding) this is the only way I could accomplish my goal. I hope you forgive me for turning to the dark side :(

Other than that,

Happy building and doom-ing!
 
Last edited:
If I forgot a shout-out in the readme file, please know it was not intentional and your help was vital to the success of this project! Let me know if you are one of these precious unnamed contributors and I'll add your name and project to the list!
 
Back
Top