Lobby > DIY

Advanced Crossfeed DSP

(1/9) > >>

AstralStorm:
I've decided to post a thread here in order to have your input on whether you like the home-made advanced crossfeed DSP written by yours truly.
Theme song: Project Pitchfork - Timekiller (Note: reissue is terribly compressed. :sadpanda: )


This crossfeed is special, as it is probably the only one that's linear for mono signals. (As linear as linear-phase FIR gets.)
Zero combing is possible for mono signals and it should be vastly lower for side signals as well thanks to phase linearity.

Based on an idea presented by Jan Meier in an offhand form here:
http://www.meier-audio.homepage.t-online.de/crossfeed.htm

Corda amps actually wing it, since they use passive filters and thus have phase issues, especially in mid/side splitting circuitry.
This one does not, so inverse phase signals are properly localized as well.
The defaults were tuned by ear for my head.

Currently it's available both in source code form, VST form (requires host to have its own controls, it doesn't have GUI) and Linux LV2, LADSPA; and Jack application forms, with either Qt, GTK UI or Windows UI. Yes, Jack works in Windows too. Some others are also possible on request.

The advanced crossfeed has been written in a computer language made by Julius O. Smith III (of Yamaha fame) and later enhanced by some other people. It is called Faust and compiles to various output plugins.

Source code is attached, feel free to mention any improvements you see fit. It's not recommended to patch the C++ code by hand, as it is generated from Faust.
I built it in Linux using MinGW with special options. It is a 32-bit VST dll, like most of them, and works well in Wine, e.g. George Yohng's VST bridge for Foobar2000.

Can't wait for your impressions and suggestions.

PelPix:
Looking forward to testing this!  Let's see how it stacks up to hardware crossfeed and bs2b (which cites the same link by Meier and also says it's is as close as possible to linear phase)

Edit:

I like it!  Very natural.  Settings were quick to change to my ear layout and tastes!  Overall, great plugin.  No bugs to report, either!

ultrabike:
From quick impressions default settings seem to move sound to the front relative to what I hear without it. The controls are also responsive. Good job!



Didn't know about Faust. Looks like a cool route to make VST stuff. Code definitively looks weird.

AstralStorm:

--- Quote from: PelPix on July 15, 2013, 07:14:14 AM ---Looking forward to testing this!  Let's see how it stacks up to hardware crossfeed and bs2b (which cites the same link by Meier and also says it's is as close as possible to linear phase)

--- End quote ---

This is true, it's as close as possible given its design - in that it uses minimum phase first order IIR filters, that gives 60 degree phase shift at bass.
BS2b implements a Chu Moy's crossfeed - like Meier's first one published on Headroom, except with compensatory highs boost.

The first order IIR filters cause a bass boost and mild subbass distortion, as well as a relatively shallow wide dip in the knee range (depending on crossfeed frequency) in the central signal plus very minor high frequency combing.
The inverted bass cut is both due to the phase shift and requirement for more aggressive feeding due to lack of real ITD simulation - the filter delay acts as one and it's very short. BS2b doesn't specifically feed higher frequencies at all either, only the bass, but the IIR filter used has very low stopband rejection due to being first order, so a tiny amount of feeding is present.

AstralStorm:

--- Quote from: ultrabike on July 15, 2013, 08:10:45 AM ---Didn't know about Faust. Looks like a cool route to make VST stuff. Code definitively looks weird.

--- End quote ---

Not just VST, it has many "architecture" files. Including a command line application.
The language isn't precisely well known due to being quite new and very domain-specific. It feels in writing like Verilog for audio - you're designing a simplified electrical circuit in textual flow form with some math sprinkled on top.
PureData (also known as Pure) is slightly more widely known - it uses graphical flow forms, but does not have as nice UI and generator capabilities or C bindings. And of older ones, Max/MSP, which is more general and includes control and visuals, is commercial thus has a higher barrier of entry.

The main issue with it is that it's almost purely functional - there are very few stateful facilities (like a mutable buffer) and this makes some things look quite awkward.
Also makes some major algorithms unavailable except by C binding, which works excellent. There's also no support for oversampling yet, but there's work being done in this regard.
Of major unavailable algorithms, resampling or FFT is not possible, neither is thus fast convolution. There's no stdio or direct file access either. For those, C has to be used.
String handling is nonexistent - only very limited numeric substitution.

UIs are relatively spartan too, no nice controls like a spectrum analyzer or oscilloscope are included, but the basic buttons, checkboxes, entry fields, sliders and knobs are there. Of display controls, VU meters and LED are available.

Navigation

[0] Message Index

[#] Next page

Go to full version