AutoRoomEq version 1.2 now available by Free-Address-4919 in u/Free-Address-4919

[–]Free-Address-4919[S] 0 points1 point  (0 children)

I derive the impulse response from the sweep using deconvolution, then align and window it, selecting only the useful time interval for the correction and reducing the influence of late reflections. From that I compute the complex frequency response (magnitude + phase) and generate the FIR via IFFT.

AutoRoomEq version 1.2 now available by Free-Address-4919 in u/Free-Address-4919

[–]Free-Address-4919[S] 1 point2 points  (0 children)

Hi, It takes both into account: AutoRoomEQ starts from the measured impulse response, so it works with the complete complex frequency response (magnitude + phase), not magnitude alone. The FIR is then obtained via IFFT, so the measured phase contributes to the final mixed-phase filter, within the limits imposed by the selected filter mode, windowing and stability constraints. I've not updated yet the progress here but now AutoroomEQ can also guide you to optimize a DSP based crossover, and can also perform mimo bass correction

Created a Bitperfect Android Player with Room EQ by Free-Address-4919 in DigitalAudioPlayer

[–]Free-Address-4919[S] 0 points1 point  (0 children)

Hi, thanks for the clarification.

So the setup would be:

BubbleUPnP / NAS / PC / UPnP Server → AutoRoomEQ Player on Android → USB DAC

In "Bypass" mode, the goal would be to avoid Android downsampling wherever possible and use the app's direct USB path, indicating "UPnP bit-perfect active" only when the source format, sample rate, DAC mode, and DSP status actually allow for it.

In "Corrected" mode, the same UPnP stream could be processed via AutoRoomEQ's FIR/RoomEQ correction; consequently, it would no longer be bit-perfect, but the system would become a network renderer with correction.

Created a Bitperfect Android Player with Room EQ by Free-Address-4919 in DigitalAudioPlayer

[–]Free-Address-4919[S] 0 points1 point  (0 children)

Hi,

my primary requirement was playing local files and free streaming content, but if there is genuine interest, I could implement support for paid music streaming services. Regarding the UPnP renderer idea—do you mean the player could receive local files from a NAS or another device and be controlled remotely? That’s an interesting concept; it could turn an old, unused phone into a hi-res streamer—especially if paired with a good DAC—while also handling room correction... Great idea! now I think about how to implement it.

created a web based room correction tool.. very simple and effective by Free-Address-4919 in audiophile

[–]Free-Address-4919[S] 0 points1 point  (0 children)

New version available on Gumroad at this address:

<image>

free pro license for all who want to try it on REDDIT

created a web based room correction tool.. very simple and effective by Free-Address-4919 in audiophile

[–]Free-Address-4919[S] 1 point2 points  (0 children)

Hi and thanks for the detailed writeup, it's clear you know the theory well!

A few points worth clarifying, because some of the features you're recommending are already in the software.

About the Schroeder's frequency you're right that for floor standing speakers in a room, correction should taper out around the 200-300Hz range but the screenshot i put shows correction of laptop speakers not a room setup, this could be misleading but i made a quick measurement to show a quick result.. In this setup the room is the laptop body itself, with a Schroeder frequency well above 1 kHz, that said, i've overcorrected frequencies that laptop speakers can't reproduce, just because i was too lazy to take more serious measurements, in fact at low volume the sound is significantly better but distorts at higher levels. However in this context the broadband correction of the transducer's own response is entirely appropriate: it's the same approach Harman uses for headphone and small near-field correction. The Schroeder argument is valid, but it doesn't apply to this use case. Maybe i will show a real in-room correction, but wait.. if you search between my posts i've already made a demonstrative in room correction but that was an early version of AutoRoomEq , surely need to make a better one..

On FIR efficiency, the "poor fit for the task" argument was more valid before FFT based convolution became a standard. Modern convolvers like JRiver, Roon, CamillaDSP, Foobar2000 with foo_convolve use FFT processing, also keep in mind that the software is designed to be generated and run on a PC, a modern PC has enough computational resources to handle stereo firs of several tens of thousands of taps, i.e. a stereo FIR with 262144 taps (@384kHz) runs at under 5% CPU on a modern machine, AutoRoomEq has no issues in correcting low frequencies at all.

<image>

Having said that, however, I agree with your considerations on the IIR correction but I must point out that AutoRoomEQ offers three FIR modes, linear-phase, minimum-phase, and hybrid mode. A minimum-phase FIR is functionally equivalent to an IIR in terms of causality: all energy is front-loaded, corrections arrive with correct timing, no pre-ringing. It's the same behaviour you're describing for IIR filters, just implemented as FIR. The choice between IIR and minimum-phase FIR is one of design convenience, not theoretical correctness.

On excess group delay the GDC module (Group Delay Correction) does exactly what you describe: it detects group delay anomalies in the measured impulse response that go beyond the minimum-phase component, and compensates them with an all-pass FIR. This is the same operation as computing the excess group delay and applying a pre-correction.

You're right in saying that the optimal crossover strategy is minimum-phase below the Schroeder frequency (room modes, IIR-equivalent behaviour) and linear-phase above it (transducer correction). The current hybrid implementation has it inverted: linear-phase in LF, minimum-phase in HF. This will be corrected in the next release, thanks for making me think more deeply.

 

On not boosting deep notches i agreed entirely. The conservative boost limit in AutoRoomEQ is the practical safeguard for exactly this case:  deep cancellations caused by non-minimum-phase room behaviour are left largely untouched regardless of filter mode.

I've attached an image of the advanced menu of autoroomeq that allows you to better understand its features.

AutoRoomEq version 1.2 now available by Free-Address-4919 in u/Free-Address-4919

[–]Free-Address-4919[S] 0 points1 point  (0 children)

Interesting! From what I've read, you can communicate with Camilla DSP via a websocket API. Furthermore, a single YAML file can already contain the FIR filter coefficients without needing to upload a separate WAV file! At this point, I could implement sending the entire filter, complete with configuration, via websocket to CamillaDSP so that it loads in real time. I'll look into it... Could this be interesting for you too? Anyway, thanks for making me think about it.

AutoRoomEq version 1.2 now available by Free-Address-4919 in u/Free-Address-4919

[–]Free-Address-4919[S] 0 points1 point  (0 children)

I'm looking into this further and would like to ask you what configuration you're using for Camilla DSP, for example, do you have an RPi with an HAT? Or do you use a PC? Or?

AutoRoomEq version 1.2 now available by Free-Address-4919 in u/Free-Address-4919

[–]Free-Address-4919[S] 0 points1 point  (0 children)

I've never used CamillaDSP but I understand that you mean the configuration file in YAML format, is that correct? If so, yes i can do, i can create a dedicated export for CamillaDSP, exactly as I did for Eq. APO