Skip to content

mm-rnd/Ghost-Field-Spatialiser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ghost Field Spatialiser

A standalone C++/JUCE application that takes a stereo mix, separates it into stems, and re-renders them in 3D space over headphones.

What it does

  • Blind source separation — Non-negative Matrix Factorisation (NMF) splits a stereo track into individual stems without any prior knowledge of the source material.

  • Feature extraction — each stem is analysed frame-by-frame for spectral centroid, spectral tilt, spectral flux, RMS, and peak energy.

  • 3D positioning — these features drive a time-varying mapping into 3D space, panned using either:

    • VBAP (Vector Base Amplitude Panning), or
    • 3rd-order HOA (Higher Order Ambisonics)

    both targeting an ITU-R BS.2051 System H loudspeaker layout (22.2, without LFE channels).

  • Binaural rendering — the virtual loudspeaker feeds are convolved with BRIRs to produce a binaural mix for headphone playback, using either:

    • the BBC R&D BRIR set, or
    • the IoSR Surrey BRIR set.
  • Interactive UI — a stem list with per-stem solo/mute, and an OpenGL 3D visualiser showing each stem's spatial position, with brightness/saturation modulated by its extracted features.

Platforms

  • macOS
  • Windows

Building

This project uses CMake and pulls in dependencies (including Eigen) as git submodules, so clone recursively or fetch submodules after cloning:

git submodule update --init --recursive

Before building, the BRIR datasets need to be fetched and converted into a format compatible with libmysofa:

scripts/fetch_brir.sh
python3 tools/convert_brirs.py

fetch_brir.sh downloads the BBC R&D and IoSR Surrey BRIR sets. convert_brirs.py converts them into SimpleFreeFieldHRIR-format SOFA files that libmysofa can load (requires Python with netCDF4 installed).

Once submodules are initialised and the BRIRs are fetched and converted, configure and build with CMake as normal:

cmake -B build
cmake --build build

License

Ghost Field Spatialiser is released under the GPL v3 license.

About

Standalone C++/JUCE application performing blind source separation (NMF) on a stereo track, extracting timbral features (spectral centroid, flux, RMS) to drive time-varying VBAP spatialisation, rendered binaurally via a 22.2 loudspeaker layout.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors