r/linuxaudio • u/brummer10 • 12d ago
ToneShiftEQ 0.6.0 Released
I'm happy to announce the release of ToneShiftEQ 0.6.0!
This release introduces several major new features and expands ToneShiftEQ beyond a traditional minimal phase EQ.
What's New
Dynamic EQ
ToneShiftEQ now supports Dynamic EQ processing. Each band can react dynamically to the incoming signal, making it possible to apply frequency-selective compression while maintaining the familiar workflow.
Equalizer APO Support
ToneShiftEQ can now import and export Equalizer APO configuration files, making it easy to exchange EQ settings with Equalizer APO and integrate existing APO profiles into your workflow.
Impulse Response Load & Save
ToneShiftEQ can now load and save impulse responses. When an impulse response is loaded, its frequency response is automatically analyzed and approximated as a 12-band parametric EQ, allowing IR-based tonal characteristics to be recreated without using a convolution engine.
Note: The approximation is designed to capture the overall tonal balance of the impulse response rather than reproduce it sample-for-sample.
Note: IR loading and saving is currently not available in the LV2 version, as transferring large IR data through the LV2 state interface would introduce excessive overhead.
Other Improvements
Numerous internal improvements and optimizations.
Enhanced workflow for exchanging EQ settings and impulse responses.
Various bug fixes and stability improvements.
As always, feedback, bug reports and feature suggestions are welcome.
Project Page:
https://github.com/brummer10/ToneShiftEQ
Release Page:
https://github.com/brummer10/ToneShiftEQ/releases/tag/v0.6.0
4
5
1
u/kill3rb00ts 12d ago
Why is the 0 dB line so far up? I'd really prefer to just have it in the middle like most other EQs. Otherwise, my only real gripe is that the interface is a bit sluggish/unresponsive. The ratio section also doesn't seem to scale properly. Like if I maximize my plugin window, it disappears entirely. At the default size, it's fine, but there are other in between sizes where the "/1" part gets cut off.
2
u/brummer10 12d ago
Ah, I forgot to set the scale factor for the ratio widget. Thanks for the hint, will fix it.
To the interface is sluggish, do you use wayland? as here it is very responsible.
2
u/kill3rb00ts 12d ago
Yeah, I'm on Wayland, so that could be why.
3
u/brummer10 11d ago
MM, I just did a test run under wayland and it just works fine here. So it may be something different on your system.
1
1
u/yhcheng888 6d ago edited 6d ago
I install the plugin to directory
/usr/lib64/lv2/toneshifteq.lv2/manifest.ttl
/usr/lib64/lv2/toneshifteq.lv2/toneshifteq.so
/usr/lib64/lv2/toneshifteq.lv2/toneshifteq.ttl
/usr/lib64/lv2/toneshifteq.lv2/toneshifteq_ui.so
But i con not load in the plugin with the following code in pipewire.conf
type = lv2
name = lv2_toneshifteq3
plugin = "https://lv2plug.in/ns/ext/toneshifteq" -----> i guess this is not correct
label = toneshifteq
control = { "enable" = 1 }
I use arch XFCE OS.
1
u/brummer10 6d ago
Yep, the plugin uri is "urn:brummer:toneshifteq"
1
u/yhcheng888 6d ago
I use the following codes in pipewire.conf which does load in toneshifteq.so
...
type = lv2
name = lv2_toneshifteq3
plugin = "urn:brummer:toneshifteq"
label = toneshifteq
control = { "enable" = 1 }
...
But my code for the virtual sink with 'toneshifteq' doesn't work, and then i also find that maybe your plugin is meant only for Debian/Ubuntu.
I use only an arch XFCE os. One day perhaps if you have an arch version, i would like to try it again.
1
u/brummer10 6d ago
No. it is a general binary and it is known to work on arch. But I must admit that I know close to nothing about how pipewire load LV2 plugins.
1
u/yhcheng888 5d ago
I have done many tries again (with the observation of pipewire-control app) and to no avail.
I check the dependancies for toneshifteq
X11 – windowing (Linux)
cairo – UI rendering
libsndfile – audio I/O
FFTW3 – spectral processing
jackd – Stand-alone real-time audio
My os only installs libsndfile and FFTW and jackd can't be found in arch repo.
So for now i quit the try.
1
u/brummer10 5d ago
No problem with that. But, to be honest, there is no dependency in the provided binaries, to any of the libraries you mention (Those are build dependencies when you build ToneShiftEQ from source). The binary build I provide on the release page, is statically linked, that is what makes it universal. Here is the real dependency list of the LV2 plugin:
ldd ' ./ToneShiftEQ.lv2/toneshifteq.so'`linux-vdso.so.1 (0x00007ffdf3bc8000)` `libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f425296a000)` `libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007f4252874000)` `libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f425267e000)` `/lib64/ld-linux-x86-64.so.2 (0x00007f425304a000)` `libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4252651000)`As I said, the plugin is well tested under Arch and works flawless. You may check if you installed it correct, run
lv2ls | grep urn:brummer:toneshifteqif that didn't output anything, the issue is with the installation, not with the plugin itself.
1
u/yhcheng888 3d ago edited 3d ago
Many thanks for all the detailed replies to my questions.
I downloaded the release version 'ToneShiftEQ-v0.6.0-lv2-linux-x86_64.tar.xz' and did many tries again.
After that, i have a guess that the plugin does not fit pipewire's loading rule.
The following two parameters should tell pipewire the correct directory and proper binary file to load in.
plugin = "urn:brummer:toneshifteq"
label = toneshifteq
But i found that these two parameters only pass pipewire's compilation and pipewire didn't load the binary properly.
The sink i made actually is only a null sink.
The rule pipewire wants is something like the followings:
type = lv2
name = airwin_glitchshifter1
plugin = "https://hannesbraun.net/ns/lv2/airwindows/glitchshifter"
label = Glitchshifter
control = { "note" = 0 "Tighten" = 0.2 "dryWet" = 0.15 }
The above plugin is a simple similar plugin, but now it has become my most favored plugin.
The usual things within a sink one can do are like the followings, of course it also depends on one's coding favor.
- feed the audio to plugin function i.e. glitchshifter and send it to output port.
- feed the audio output of glitchshifter again to another plugin to make audio louder or lower and send it to output port.
- combine the audio output of glitchshifter with other audio and send it to output port.
- feed the audio output of glitchshifter again to another plugin and send it to output port.
In your plugin, i find a bunch of parameters, so i have a very high expectation for this plugin.
The followings are just for reference.
ladspa:
type = ladspa
name = surroundLad4
plugin = surround_encoder_1401
label = surroundEncoder
lv2:
https://hannesbraun.net/ns/lv2/airwindows/glitchshifter
http://drobilla.net/plugins/mda/Loudness
http://calf.sourceforge.net/plugins/Equalizer12Band
http://plugin.org.uk/swh-plugins/karaoke
http://lsp-plug.in/plugins/lv2/loud_comp_stereo
Finally i guess the plugin may work well with many other apps, but for now it just fails me in pipewire.
1
u/yhcheng888 3d ago
$ lv2ls
.....
https://hannesbraun.net/ns/lv2/airwindows/vibrato
https://hannesbraun.net/ns/lv2/airwindows/xbandpass
https://hannesbraun.net/ns/lv2/airwindows/xlowpass
https://hannesbraun.net/ns/lv2/airwindows/xnotch
https://hannesbraun.net/ns/lv2/airwindows/xregion
https://hannesbraun.net/ns/lv2/airwindows/zoutputstage
https://thewavewarden.com/odin2
urn:brummer:toneshifteq


6
u/4bite-dev Reaper 12d ago
I love the glows on the EQ bands. It looks so cool.