• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

GSonic Reference – Free Stereo Room Correction Tool (Measurement + FIR Export)

If you share the measurement files (.wav) produced by GSonic, I can try to make custom filters for your Eversolo.
thats amazing! I will send it when i do a good measurement because i tried it quickly and im sure i didnt do it perfectly
 
  • Like
Reactions: OCA
Hi, I’ve done my first tests with GSonic on Ubuntu and everything worked really well. I’m honestly very impressed — you are basically the filter master :)

I just wanted to ask if you might have any plans for something like a CLI, headless mode, or maybe some way to control GSonic remotely in the future.

My setup is a Linux mini PC with EasyEffects, and it would be really nice to start measurements or switch between filters from my laptop without having to turn on the TV connected to the mini PC.

No problem at all if that’s not planned — I was just curious.
And thanks again, GSonic is seriously awesome.
 
  • Like
Reactions: OCA
@OCA

Did the measurements Gsonic.

uploaded the filters left and right to the eversolo DMP-8.

Something looks off and i get no sound.

please see attachements.

first attachement you can see my own fir file looks normal. When i uploaded Gsonic created filters it look really weird?

last 2 attachements you can see the difference visually clear

That's the same issue I've had, which seems to be a limitation of the Eversolo, but with a few caveats. The documentation shows the Eversolo can only take 2046 taps, but when I took my measurements and did a manual correction following OCA's latest stereo video (The Best $0 Upgrade for Your Audio Setup), the device accepted the resulting filter.

In this case, the filters are 32k taps, but Eversolo only accepts them if REW's IR window is set to 0 on the left when creating the last filter in the video's instructions.

I think it's possible that the Eversolo only works with filters that have no pre-ringing, or very small amounts of it (but I'm no expert in any of this). Though, be aware that a few of my attempts produced a major amount of distortion as well, so mind your volume levels if you decide to test my theory. And be ready to stop playback quickly!!!

Below, I've attached my Eversolo windows using the filter straight out of GSonic, and the one I made manually (the one that looks smoothed out).
 

Attachments

  • IMG_0440.jpg
    IMG_0440.jpg
    133.7 KB · Views: 32
  • IMG_0439.jpg
    IMG_0439.jpg
    132.7 KB · Views: 31
You only need min phase lpf and hpf at the crossover and if you are using miniDSP for crossover for example, that's already what you are getting (plus a sub/speaker delay offset). Don't apply additional EQ to subs or the speakers. Let GSonic handle all that.

Edit: Think of it as measuring a 3-way speaker with an additional woofer instead of a 2-way speaker, doesn't matter for GSonic.

Perhaps I didn't explain myself clearly. I already have my 5.1 system (2 subwoofers acting as a single mono group) fully corrected, with a discrete mono .WAV FIR per channel created with rePhase+REW. In total: 5 individual mono .WAV FIRs for each bookshelf speaker + 1 common mono .WAV FIR for co-located mono subs.
I handle the crossover using JRiver DSP Studio. The relative delays between the two subs, and the delay for each bookshelf speaker so that each impulse reaches the MLP at the same time, are managed from the .CFG convolution file itself, and in that file you must specify which .WAV FIR file to use for each output channel.

That said, I’d still like to test the benefits or differences between GSonic and my own filters. This version of GSonic only creates correction for stereo pairs, so as I understand it, I’d still use my own mono FIR for the subwoofer group, and I could only use GSonic to create correction for the Main L/R and Surround L/R channels; the Center channel would also continue to use my own mono FIR.
 
Here are some before before and after screenshots...

Left uncorrected SPL/ phase and then impulse:

Left Uncorrected SPL and Phase.jpg



Left Uncorrected Imp.jpg


And right

Right Uncorrected SPL and Phase.jpg

Right Uncorrected Imp.jpg


Now left GSonic corrected SPL/phase and impulse (to HK target)

Left GSonic SPL and Phase.jpg


Left Gsonic Imp.jpg


And right Gsonic corrected

Right GSonic SPL and Phase.jpg


Right Gsonic Imp.jpg

It's a big difference compared to no correction, and I prefer the solution to my own PEQs.

I have dual subs aligned by ear and no HPF on my mains (I don't have the hardware to do this). However I think GSonic has made a good job of improving what I had already achieved. Given that these filters can be generated with a minimum of fuss also means changes to hardware or positioning of speakers doesn't require a lengthy process of measuring and filter generation in REW. Much appreciated!

Waiting to learn what the premium version will do!
 

Attachments

  • Left Uncorrected Imp.jpg
    Left Uncorrected Imp.jpg
    68.3 KB · Views: 16
  • Left Uncorrected Imp.jpg
    Left Uncorrected Imp.jpg
    68.3 KB · Views: 26
  • Left Uncorrected Imp.jpg
    Left Uncorrected Imp.jpg
    68.3 KB · Views: 22
  • Right GSonic SPL and Phase.jpg
    Right GSonic SPL and Phase.jpg
    104.6 KB · Views: 19
These were probably not speaker sourced and non-min phase peaks (strong, early room reflection combining with the direct sound at the microphone) which the algo would correctly leave alone. It would otherwise be damaging the direct sound of your speaker in the midrange just to satisfy a visual target curve.
I've tested it and fully EQing it to the target made the tonality noticeably worse as you assumed.
If I add a little bit of EQ is the tonality better but I couldn't find a good middle-ground, where I can hear it consistently blind, without it impacting the tonality negatively, so it's a non issue!

I've played around with correcting the driver variance using linear phase FIR filters on top of the automatic correction and it centered the imaging a lot (~20% of width between the speakers and it's now almost perfectly in the center) - now it's perfect other then my room issues (a bit too long decay in the midrange and some Bass frequencies), output capability/distortion and added latency!

I've currently implemented the driver variance correction like this:
1775680468703.png


But I will try generating it from the same measurements using a Target with the Channel correction included and using only the left channel .wav, so that I don't get double the latency penalty. (Or is there a better solution someone can think of?)

It would be nice if you allowed uploading a driver correction that adjusts the Target on one channel, so that I don't have to use this complicated solution.

Haven't yet had time to look into your codebase, but is the Code deterministic / can I assume that the exact same filter will be generated each time when the Input is the same?
 
  • Like
Reactions: OCA
Hi OCA,

First of all, thanks for releasing GSonic Reference — really impressive work, especially the spatial averaging approach and the automatic clock drift compensation. That alone removes a lot of friction compared to traditional loopback-based workflows.

I wanted to share my use case, along with some screenshots showing before/after measurements (attached below).

My system:
- Source/streamer: Grimm Audio MU1
- DAC: Rockna Wavedream Reference Signature
- Preamplifier: Block Audio
- Power amplifiers: 2× Block Audio mono blocks, fed via one balanced XLR output pair from the preamp
- DSP: miniDSP Flex, fed via a second balanced XLR output pair from the same preamp
- Main speakers: Vivid Audio Giya G1 Spirit (full-range towers, running full-range with no DSP processing — no delay, no EQ, no crossover applied)
- Subwoofers: 2× Perlisten D12s + 1× Perlisten D15s (driven by the miniDSP Flex outputs)
- Playback software: Roon (convolution engine for GSonic FIR filters)
- Measurement/DSP software: GSonic Reference running on a Windows laptop
- Measurement mic: miniDSP UMIK-2 (USB, 2m cable), positioned at 90° with its corresponding calibration file loaded; laptop connected to the Rockna Wavedream Reference Signature via 5m USB cable, using WASAPI

The signal routing is worth noting: the Block Audio preamp outputs two independent balanced XLR pairs simultaneously — one feeding the two Block Audio mono blocks driving the Giya G1 Spirits, and the other feeding the miniDSP Flex which handles all subwoofer processing. This means the GSonic FIR filters applied via Roon's convolution engine sit upstream of this split, and therefore affect both signal paths equally. The Giya G1 Spirits themselves are not touched by the miniDSP in any way — no delay, no EQ, no level adjustment. All DSP on the main speakers is handled exclusively by GSonic via Roon convolution.

Sub placement and configuration (as optimized via MSO):
- The two D12s are placed symmetrically left and right between the towers and the listening position, both crossed over at 70 Hz with 1.5 ms of delay
- The D15s is placed on the right long wall behind the listening position, crossed over at 55 Hz with 3 ms of delay

The three subwoofers were added specifically to address a severe modal null around 55 Hz in the room — a problem that no amount of EQ on the main speakers alone could have fixed. The multi-sub approach with MSO was the only viable solution to fill that hole consistently across the listening position.

Before applying GSonic, I ran the full MSO (Multi-Sub Optimizer) workflow: individual REW measurements for each sub, MSO optimization across all three simultaneously, biquad EQ + delay applied per sub via the miniDSP Flex, and APF-based phase alignment to the mains at the crossover region. I deliberately used a Harman target curve in MSO for the bass region, and then applied the same Harman target in GSonic as well — keeping the tonal intent consistent across both tools.

I then ran GSonic Reference on top of the full blended system and loaded the resulting FIR filters into Roon's convolution engine. For the spatial averaging I used three measurement positions, all centered on the listening axis but reflecting my actual real-world listening postures: fully reclined, seated upright, and semi-reclined. This felt like a more meaningful set of positions than spreading the mic around the room, since it captures the actual height and ear position variation I experience during a listening session.

I have attached the filter plot as imported into REW for reference. The filters appear predominantly boost-oriented in the low-to-mid frequency region, which in practice means the volume needs to be turned up relative to the uncorrected baseline — though I cannot say with certainty how GSonic applies these internally, as the REW visualization may not directly reflect the actual gain structure. What I can confirm is that Roon reports no digital clipping whatsoever, so headroom appears to be managed cleanly within the convolution engine.

On the subjective listening side: my first impression was a slight sense of reduced overall dynamics, which initially gave me pause. However, after a short adjustment period, what emerged was a noticeably more controlled and defined bass, a clearer and better focused midrange, and a soundstage that felt even wider and more precisely layered than before.

Now here's the aspect I found particularly interesting, and worth flagging for users with similar setups:

Because the miniDSP Flex taps the same L and R signal as the main amplifiers (upstream of the preamp split), GSonic's FIR correction doesn't operate in isolation. When GSonic modifies the L and R channels, those corrected signals feed not only the main speakers but also the input stage of the subwoofer processing chain in the miniDSP. In other words, GSonic's filters indirectly touch the sub integration that MSO had already optimized.

In practice this turned out to be a net positive — the transition region (roughly 60–150 Hz) became smoother, and the tonal coherence between the subs and mains improved further. But it is a meaningful system-level interaction that users with similar dual-output preamp setups should be aware of.

Looking at the before/after REW measurements (attached), the picture is mixed in an interesting way:

On the SPL side, the improvement is visible across the full frequency range on both channels. Below 200 Hz the corrected curve is noticeably more linear and compact, with less variance in the 20–100 Hz region — which is particularly meaningful given that this band is already being handled by the MSO-optimized subs. Above 200 Hz the correction also delivers better linearity and a smoother overall response.

On the RT60 side however, there is a notable degradation around 200 Hz on both individual channels, where decay time jumps from roughly 300 ms to over 1.3–1.5 seconds with GSonic active. The summed L+R RT60 shows a less extreme but still visible peak in the same region. My interpretation is that GSonic's correction is boosting energy around 200 Hz to flatten the frequency response, but in doing so it is exciting a room resonance in that band that was previously not being driven as hard. The SPL gets flatter, but the decay gets longer.

I am curious whether this is a known trade-off in the correction approach, or whether there is a way to constrain the filter in that region to avoid over-driving the resonance.

Very much looking forward to the multichannel premium option — direct sub correction within GSonic would be a natural fit for multi-sub stereo setups like this one.

Apologies for the lengthy post — I tried to describe the setup as thoroughly as possible, even if some details may turn out to be secondary or irrelevant. I hope it is useful either way.

Thanks again.
 

Attachments

  • 2026 04 08 R.jpg
    2026 04 08 R.jpg
    60.2 KB · Views: 47
  • 2026 04 08 R RT60.jpg
    2026 04 08 R RT60.jpg
    58.1 KB · Views: 48
  • 2026 04 08 LR.jpg
    2026 04 08 LR.jpg
    62.1 KB · Views: 49
  • 2026 04 08 LR spec.jpg
    2026 04 08 LR spec.jpg
    57.7 KB · Views: 45
  • 2026 04 08 LR RT60.jpg
    2026 04 08 LR RT60.jpg
    58.6 KB · Views: 45
  • 2026 04 08 LR Gsonic spec.jpg
    2026 04 08 LR Gsonic spec.jpg
    59.7 KB · Views: 45
  • 2026 04 08 L.jpg
    2026 04 08 L.jpg
    60 KB · Views: 46
  • 2026 04 08 L RT60.jpg
    2026 04 08 L RT60.jpg
    58.8 KB · Views: 43
  • 2026 04 08 Gsonic Filters.jpg
    2026 04 08 Gsonic Filters.jpg
    55.9 KB · Views: 44
I just wanted to ask if you might have any plans for something like a CLI, headless mode, or maybe some way to control GSonic remotely in the future.
You could currently control up to (6) G-sonic derived filter banks with a remote web client using the new version of HLC-DSP-Suite software (Hang Loose). While not free, I consider it a good value considering the newly added (headless) capabilities and the UI is refreshingly elegant.

There is a demo video of the remote client on the Web site.
 
Last edited:
You could currently control up to (6) G-sonic derived filter banks with a remote web client using the new version of HLC-DSP-Suite software (Hang Loose). While not free, I consider it a good value considering the newly added (headless) capabilities and the UI is refreshingly elegant.

There is a demo video of the remote client on the Web site.
Thanks, that looks interesting, but it is probably a bit more than I need for my setup.

I should be able to handle filter switching on the playback side through EasyEffects CLI, and I already have my own small web GUI for control.

My main question was really about GSonic itself — whether measurement and filter generation might eventually be controllable via CLI, headless mode, or an API.

Still, thanks for mentioning it.
 
Hi, just a quick note: on my low-power Ubuntu mini PC (Celeron N3350) I sometimes get slight crackling during sweeps/measurements in GSonic. I’ve seen very similar behavior in HiFi Scan too, so it may well be hardware or Linux-audio related and not GSonic-specific.

REW seems to run clean on the same machine, if I remember correctly, so maybe it handles buffering or timing differently.

I’d actually love to use the mini PC for measurements, since my speakers and amplifier are directly connected there. For now I’ll probably switch to my Windows notebook for measuring and generating the filter files, then maybe look for a simple way to push the filters into EasyEffects via the web app.

Not a complaint at all, GSonic works really nicely overall, I just thought this observation might still be useful.
 
  • Like
Reactions: OCA
1775697359825.png


1775697391808.png


Minor stuff, a few Buttons could need fine tuning, idc myself.
Its on a 14.0-inch, 3K (2880 x 1800) OLED 16:10..
 
  • Like
Reactions: OCA
My main question was really about GSonic itself — whether measurement and filter generation might eventually be controllable via CLI, headless mode, or an API.
I guess I'm not seeing a rationale for headless during the measurement phase. YMMV.
 
I guess I'm not seeing a rationale for headless during the measurement phase. YMMV.
Fair point, for me it’s mostly a convenience/workflow thing.

Right now I’m using my laptop for measurements because I’m getting some crackling on the Linux mini PC during playback/sweeps. But longer term, remote control for measurement and filter generation would still be really useful, because I could leave the speakers and amp connected to the mini PC and do the rest from the laptop in a browser, without having to mess with the audio PC directly,YMMV.

Edit:
That’s part of my thinking as well: on Linux, PipeWire and EasyEffects already provide a pretty complete and surprisingly polished DSP workflow out of the box.

So for me, the real added value of GSonic on Linux would be measurement and filter generation, especially if that side could be accessed even more conveniently.
 
Last edited:
Perhaps I didn't explain myself clearly. I already have my 5.1 system (2 subwoofers acting as a single mono group) fully corrected, with a discrete mono .WAV FIR per channel created with rePhase+REW. In total: 5 individual mono .WAV FIRs for each bookshelf speaker + 1 common mono .WAV FIR for co-located mono subs.
I handle the crossover using JRiver DSP Studio. The relative delays between the two subs, and the delay for each bookshelf speaker so that each impulse reaches the MLP at the same time, are managed from the .CFG convolution file itself, and in that file you must specify which .WAV FIR file to use for each output channel.

That said, I’d still like to test the benefits or differences between GSonic and my own filters. This version of GSonic only creates correction for stereo pairs, so as I understand it, I’d still use my own mono FIR for the subwoofer group, and I could only use GSonic to create correction for the Main L/R and Surround L/R channels; the Center channel would also continue to use my own mono FIR.
Your system seems perfect for the next yet to be named GSonic but with this one you better stick to L+R stereo and see if the sound improves compared to your current filters.
 
The part explaining what to do with a miniDSP at the end of this video is closer to what you should be doing with an Eversolo I think. GSonic filters look like randomly trimmed broken FFT results in your post which is expected when you attempt to upload 32k taps to a 2k FIR slot.
 
I’m currently deciding between the DAC8 Stereo and the OKTO DAC8 PRO. There’s a bit of a psychological hurdle in accepting the on-paper performance gap of the 8-channel version compared to the stereo one. At the same time, the 8-channel unit would make future subwoofer integration much easier, whereas the stereo version measures better.

Welcome to ASR. I would not worry about the performance of one DAC over another. It's like worrying whether a chicken feather or a turkey feather makes more noise when dropped in a rock concert. Yes, the turkey feather will hit the ground with a louder thud, but it also does not matter.

Please correct me if I’m mistaken, but if I were to choose the stereo version:
  1. I could still correct the room response by measuring speakers and subs together (using the two pairs of XLR outputs) with GSonic.
  2. I would run the main speakers full-range, without applying a crossover to the subs.
  3. I could address the large bass dips caused by speaker placement by flattening the amplitude response.
  4. Phase alignment in the sub-bass region—where it overlaps with the main speakers (which extend very low, around 20 Hz with the B&W Nautilus 801)—would likely remain problematic and potentially impossible to correct.

Strongly recommend you do not do this. Look at what you are proposing: you want to sacrifice vastly improved DSP if you go the multichannel route, for an inaudible improvement in the noise floor. This does not make sense.

Get the multichannel version. And in fact, I wouldn't even bother with an OKTO DAC, just get a multichannel interface from RME or Motu.

On the other hand, I’ve often heard that crossing over (high-passing) the main speakers can be counterproductive, as it may constrain their full-range expression, reduce bass authority, and subtly affect the coherence and realism of the soundstage.

High passing the main speakers CAN be counterproductive. If you have main speakers that can go down to 20Hz, you can use them as additional bass sources in the room and thus smooth out your bass response. The situation is worse if you only have one subwoofer, since you will end up with only one bass source in the room instead of 3. Of course this depends on whether your mains can go down to 20Hz or not, and whether you are running out of amplifier power.

As for "coherence and realism of the soundstage", you need to read this thread: does envelopment exist? and Bass and subwoofers. The quick answer is: you need stereo subwoofers if you want envelopment, but if you have stereo subs you will lose the benefits of the smoothing the room response if you use mono subs. With a mono sub approach, subs are used to fill in dips created by other subs. And if you want to maximize the envelopment effect, the stereo subs have very specific placement requirements: they MUST be to the left/right of the main speakers, preferably on either side of the listener. Many people have constraints which means stereo subs can not be used.

GSonic, as far as I can tell, is a mono sub DSP system.
 
  • Like
Reactions: OCA
GSonic, as far as I can tell, is a mono sub DSP system.
I don't see that, at all in fact the opposite. But I could be wrong.

I see GSonic as a Stereo system, full stop.

If you ONLY have symmetrical stereo subs, or If you have an even number of matched mono subs symmetrically placed, and/or one in the center axis

it should work fine - for what it does.

Which does NOT include bass management, integration between HF & LF speakers - the crossovers, the FR / phase tuning / delays etc

However if you have one or more mono subs "arbitrarily placed" off center to tame room nodes I think GSonic is in fact a bit more likely to give wonky filters in attempting to get the L/R responses fully symmetrical.

Right?
 
  • Like
Reactions: OCA
In summary, symmetry is the key, get everything bass management, integration between HF & LF speakers set up at the per-channel level first

then let GSonic "fix" the Room response as a separate and final layer of DSP

Yes?
 
For giggles I added another instance of Hang Loose Convolver within HLCHost preceding the HLC instance that executes my 8ch XO.
To my surprise 2ch filters don't need a .cfg file!

This means I can play around with loading up to 6 GSonic filters and easily switch between them with zero latency, SPL matched and along with the convenient bypass filter GSonic now produces it's easy to do a quick A/B. This is a very fun toy to experiment with and makes switching filters for REW confirmation a piece of cake.

I highly recommend HLC to anyone messing with FIR filters for 2ch or multichannel work + HLCHost lets you string all kinds of VST3, AU, AXX plugins into the signal path with ease. Give the free trial a try, money well spent.
 
Back
Top Bottom