Built with AI, and not fully checked. The ideas, the listening tests and the checking on this page are mine, but the code and much of the maths behind it — the directivity fit, for instance — were built with AI help, and I cannot personally vouch for every statement being right. If you spot an error — or know how something could be done better — please say so: post at diyAudio.com or mail contact.audioexperiment@gmail.com.

The ultimate loudspeaker-in-room listening test — reflections and directivity v1.24

Every other room tool draws you a picture. This one lets you hear it – not your room, but an idealised rectangular one: six flat surfaces with a single reflection each, and an analytic mode bank below the Schroeder frequency. The point is not prediction. It is the controls a real room will never give you: compare the whole room against no room at all, change seats between two notes, or take one wall out of the picture and leave everything else exactly where it was.

Each of the six first order reflections has its own mute and its own level, so you can judge one surface at a time. Drag a speaker while it plays and the sound follows. Loudspeaker directivity is the part most room calculators leave out, and it decides what the walls actually get: pick an ideal omni, cardioid or dipole, or one of the example polar responses. Below the Schroeder frequency an analytic mode bank takes over, so a null is a real null.

Headphones. Press space to A/B the whole room against the anechoic direct sound – that is the actual test. Everything runs in your browser, and nothing leaves it unless you ask: sharing a link or saving to an account sends that preset to the server. Nothing else is uploaded and nothing is recorded.

Heavy for a web page: fourteen directivity convolvers, fourteen HRTF panners, a mode bank of up to sixty filters and a reverb tail in real time. If it drops out, plug the laptop in, mute a few surfaces (each one carries a convolver and a panner) or turn Modes off. Judge the differences you hear before the absolute amount of room – that is a property of the model rather than of its age, and it does not go away with a version number. Read what it does and does not model below the app.

Get Pro — 29 € for 12 months Everything that makes sound is free, your own VituixCAD measurements included. Pro adds impulse‑response export and room and loudspeaker libraries. One payment, twelve months — not a subscription, nothing renews.

50

Source

WAV, MP3, FLAC, OGG, M4A. A long WAV is read and decoded whole, so give it a few seconds — the line below counts.

Headphone correction

Applied last, after everything else, and it is not part of what is modelled — it corrects your headphones, not the room.
The bypass then plays at the level the correction was built for. If it still sounds louder or quieter than the correction, the trim is where you settle it.
AutoEQ has a correction for most headphones: pick yours, then the Parametric EQs file. Read in your browser, never uploaded, and it does not travel in a shared link.

Room

Speakers

?

Listener

Turn and listen for whether the image follows you.?
?
It changes tone as well as placement: a head is also a filter.
?
Uncheck to move your ears freely — smoother but heavier. Leave it on if the audio stutters.
Both keep the sliders honest: switching off leaves everything where it is.?
Measured direct vs room ?
Difference to the estimate

Speaker library

A VituixCAD polar export becomes an entry in the list above. The files are read in your browser; nothing goes to the server unless you back the speaker up or tick it into a shared link.?
The free version keeps one speaker of your own at a time — importing another one replaces it, and asks first. Importing and listening are free; Pro is what lets you keep several and compare them, which is what this list is for. See what Pro costs.
    Add more speakers — get Pro One payment, twelve months. Not a subscription.

    Settings

    Everything you change stays in this browser. Export writes one JSON file — and if you are listening to the measured speaker, its polar data travels with it, so whoever opens the file hears the same speaker without owning the measurement.

    Your library

    With a free account this page can keep your rooms on the server: name one, load it back on another machine, and it is still there after the browser forgets everything else. Export JSON does the same job by hand, and stays free of any account.

    Sign in or create an account – email only, no password. Nothing on this page changes without one: everything you set stays in this browser, as it always has.

    Share a link

    Anyone can open a shared link — no account needed. Making one needs a free account, email only. A link is public the moment you press the button. ?
    A link carries the room and the speakers, not the playback. Your volume and the test signal are yours and stay as they are.
    Make it your link
    /p/
    Your link back is rel="ugc nofollow": it is there for people who click it, not for search engines. A named link never expires.

    Impulse response

    Records this room, this seat and this speaker as one stereo impulse response – the room and the loudspeaker, taken before the level slider and before any headphone correction. That correction is for your headphones, so it stays out: a listener convolving this file would hear it a second time. 32-bit float WAV at the browser's own sample rate. Load it into any convolution reverb.

    Binaural or not is the Ears switch above, in Listener. With it on the file is a binaural IR for headphone monitoring; with it off it is amplitude panned, which is what you want if the result goes onto loudspeakers – a binaural IR would go through a head a second time there. There is no separate setting here, so the file cannot disagree with what you listened to.

    Paths

    Top view — drag the speakers, the listener and which way they face

    walk · turn your head · Ctrl/Shift step sideways · W A S D move the speakers · N M toe-in · space room on/off · E EQ bypass
    If dragging clicks or warbles, switch that off — then positions update on release only. That question is the reason this page exists.

    Spectrum and speaker EQ

    Applied before the room, so the walls reflect what you set. Both speakers get the same curve. Drag a dot to move a band, scroll on it for Q.?
    High-pass
    Low-pass
    Band 1
    Band 2
    Band 3
    Band 4
    An omnidirectional microphone at your listening position: the modes, the comb filtering from the reflections and the direct sound, all in one curve. The overall tilt of the curve belongs to the source, not to the room. What the room does is the departure from it – so watch a null appear as you walk, and watch it move when you change the room.

    Measured before the HRTF, deliberately. Summing two ear signals that arrive a fraction of a millisecond apart makes a comb filter neither ear hears: one speaker, no room, reads 15.5 dB of ripple from 1 to 10 kHz that way and 8.7 dB here.

    Directivity check — the measurement against what plays

    roundingwhole circlefrontbelow 250 Hzworst
    horizontal
    vertical
    dB rms over every measured band: what rounding the angle to the nearest cell – 6° across, 5° up – costs, for the speaker playing right now. In worst you may also be reading the filter’s floor rather than the rounding: where the measurement has a deep null the chain stops following it instead of approximating it, and the error map marks those points separately.?

    Listening tests

    A list of listening test examples to train your ear

    The point of these is not the simulator. It is listening skill: to give a written concept a sound. You have read what SBIR does, or what a strong side wall reflection does — here you can hear it, switch it off, and hear it again.

    Before you start

    Adjust the late tail to your liking first. A normal living room with furnishing and curtains has it relatively low, while a naked modern apartment might have it louder. Consider adjusting your room acoustics if you find better sound with the simulator.

    Turn off room modes so the bass does not change and distract you. By the way – a multisub setup, or some bass management in general, could make your own room sound like that too!

    Floor and ceiling reflections do not seem very natural, so take them with a grain of salt and adjust their level to your liking. Bad sound might be the HRTF used, headphones not being calibrated and so on, and also the simplicity of the simulation. However, a simple worst-case simulation like this can really highlight what their effect might be.

    Start virtual, then anchor it if you want to

    The first tests need nothing of yours. Take one thing – a single reflection, a few degrees of toe-in, one directivity pattern – change only that, and A/B it against itself until you can say whether you hear a difference at all. If any is a real answer and it comes up more often than the hobby admits.

    After that it is worth calibrating the room to yours, because this is as much a test of your listening as of the loudspeakers. Set the dimensions and where you and the speakers stand in them, pick the model on the list that comes closest to what you own, then work the late tail, the surface materials and the seat until what you hear on headphones is recognisably the room you are sitting in. It will not be your room – it is six flat surfaces with one reflection each – but it can get close enough to be worth trusting, and you are the only one who can decide when it has.

    From there every test below is a question about your own room rather than a demonstration. What would different acoustics do? Does moving the seat beat toeing the speakers in? Does spacing matter to you, or directivity? Is the floor reflection actually a problem, or is the wall behind your head the one worth treating – or is it fine as it is, and the next thing you should buy is a record rather than a panel?

    1. Model your own loudspeakers – import a polar export, or pick the example on the list that is closest to what you have. If you sit closer than about two metres, export your own polars at your own distance; the reason is in what this models.
    2. Set the room to your dimensions, and put the speakers and the seat where they really are, toe-in included.
    3. Pick the wall, ceiling and floor materials by how the room is built rather than by how it looks. The absorption charts in the reference section are there to sanity check the choice.
    4. Set the late tail until it sounds reasonable. Not correct – reasonable. 100 % is a calibrated reference rather than a target, and your own room is unlikely to sit exactly on it.
    5. Then the modes and the early reflections. Level them until the bass and the floor and ceiling stop drawing attention to themselves. For a single test you may still want the modes off, as above; this step is about the room you keep.
    6. EQ if you use it at home, with the curve you actually listen through – it sits ahead of the room here, which is where yours sits too.
    7. Save the room to your library, or export it as a preset file.
    8. Use it as the baseline from then on: load it, change nothing but the loudspeaker, and listen. One variable at a time is what makes the answer mean anything.

    What this gets you, and what it does not. The reflections are first order, the floor and the ceiling do not sound natural, and the HRTF is not yours – so a room anchored this way is still not a prediction of how your room sounds. Reasonable is as far as the calibration goes, and it is far enough for the thing it is for: differences between loudspeakers, and between positions, in the same room. Everything the model gets wrong it gets wrong the same way on both sides of that comparison, which is exactly why the comparison survives it.

    The tests

    1. Use the default preset, press Closer and Away to walk the listener back and forth, and listen to the sound change. Stop where you think the sound feels natural to you.
    2. Toggle floor and ceiling reflections off, then toggle either the left or the right reflection off to hear their effect in sound. Change toe-in with directive speakers and repeat the test.
    3. SBIR. Mute every early reflection except the front wall, tick Speakers follow so the whole setup travels together, and hold Closer to walk it towards the front wall and Away to back off again. Listen to the low mids: the front wall reflection modulates them as the distance changes. At which distance does it stop bothering you? Then switch to music — which parts of the track go weak when the SBIR is bad? Finally turn every reflection back on and walk the same stretch again: can you still hear the SBIR among the rest of them, and does the speaker directivity change how easy it is to hear?
    4. Lock the speakers to the user and press Closer to move the listening triangle towards the front wall, and hear the sound change. Repeat with Away, and let the assembly travel to the other side of the room. At which positions does the sound seem nice? Use space to toggle the room off. Tip: how does loudspeaker directivity change this?
    5. Depth. Do speakers up against the front wall reduce the perceived depth? Leave the listener where it is and move only the speakers closer to the wall and further from it. If you hear a difference, great – now tick Speakers follow and move the whole setup instead, so your distance to the speakers stays the same. Is the difference still there? And does the speaker directivity matter here? And if your listening and speaker positioning is dictated by practical issues – where the sofa and the TV are – then play with the room acoustics and with the speaker directivity and toe-in instead. Have fun! Tip: W A S D move the speakers and the arrow keys move you, so you can shift either one without reaching for a slider.
    6. Using a dipole speaker, find a listening triangle size and toe-in you like.
    7. After finding nice positioning, move the listener back and forth with your eye on the critical distance readout – what happens to the sound closer than that, and what happens further away?
    8. Adjust the room height and listen for where the ceiling reflection changes from odd to natural.
    9. Now the same walk, but watching the surfaces instead of the number: with the room and speakers where you like them, move the listener back and forth and toggle each early reflection in turn. Which ones matter to you, and which way – do they enhance the sound, or make it weird?
    10. Move behind a speaker, mute the other one, change the pattern to cardioid and use the toe-in to highlight different walls in your room. This one you can do at home as well! Fun experiment. Use noise as the sound source.
    11. Move the speakers further apart – can you hear a "hole" appear in the middle? What if you change the toe-in? What is your favourite stereo triangle, equilateral or something else? If you find one worth arguing about, put it in a link – making one needs a free account, opening one does not.
    12. Try the time–intensity trading trick: toe the speakers in so they cross in front of the listening position, then move sideways – does the noise stay in the middle or not? By the way, this effect is not as obvious here as it is in reality.
    13. To find a nice sounding setup, use noise, then Store A and Store B in the Paths card and flip between them with the A / B button – the switch is instant, and the level, the source and the sine frequency stay put so you are comparing the positioning and nothing else. Swap to music to listen whether it sounds nice, and toggle the room on and off with space. Both A and B travel in a shared link, so someone else can flip between the same two setups you did.
    14. Speakers along the narrow wall or the long one? Set up one of them, Store A, then swap the room's width and depth so the same room turns ninety degrees, set the speakers up again and Store B. Now flip with the A / B button: same floor area, same materials, only the direction you are firing in.
    15. The noise sources are mono, so two speakers playing the same sound make an obvious comb filter as you move. Try muting one speaker – sounds more natural, right? By the way, the comb filter here in the simulator is more obvious than in reality, but it is there, especially with a very small listening triangle in your room. When one speaker is far out, the loud early reflections mask the effect – it is a complete mess no matter how you move.
    16. How much does the sound change when you switch the floor material?
    17. Load your own loudspeaker plans into the simulator and listen whether there is a difference, and with what positioning it matters.
    18. If you are a sound designer or a mix engineer, listen to your master with your favourite setup, adjust the room and the setup for nice sound, and export the IR to use in your convolution reverb back in the DAW. Tip: modes on also changes the low end; toe-in and changing speakers adjust the top end.
    19. What is spaciousness? Is it loud early reflections – or some of them – or a loud late tail? What is "spacious" to you?

    By the way – you can do some of these tests for real, especially the ones where the listener moves! Muting a particular reflection needs a carefully positioned mattress, moving the speakers needs two assistants, moving the walls needs a light-speed contractor, and A/B testing needs quantum magic.

    None of these tests need Pro. If you would like to support the quantum magic anyway, Support the quantum magic.

    What it sounds like to me

    My own headphone setup does not give me proper externalisation, but I can still tell when the sound gets focus and when it does not – and that is a real effect in itself.

    With loud early reflections – speakers far away – the sound localises in front of me, roughly at the wall or at the speakers. On headphones that may just feel hazy. That is the "they are here" feel to me.

    Moving the listener closer cuts the early reflections and changes the HRTF, and the sound gets focus – in reality and on headphones alike, more inside the head. That is the "I'm there" feel to me, when the track has the space information embedded in it. With noise it feels like the noise is very accurate inside my head, both here and live.

    You might read these two references exactly the other way round. Whatever – just experiment and get a feel for what affects what, and hopefully end up with the sound you prefer at home.

    By the way: my own listening position is right about where the sound changes between "they are here" and "I'm there", and I move a bit forward or backward to switch at will – by mood, by the recording. Have fun!

    — Teemu

    What this models, and what it does not

    Read the assumptions before you trust what you hear
    • Modelled: direct sound and first order specular reflections from six surfaces, path length as delay and as 1/r attenuation, one reflection coefficient per bounce, a crude high frequency loss for wall and air, ideal frequency independent directivity (omni, cardioid, dipole — the dipole's rear lobe really is polarity inverted), HRTF panning from the image source position, and a synthetic exponential tail whose decay comes from Sabine on the current room.
    • Below the Schroeder frequency a second model takes over, and the two are crossed over rather than mixed. One bounce per surface cannot produce a mode — a mode is what is left after infinitely many bounces — so the bottom end is computed analytically instead: every mode of an ideal rectangular room, f = (c/2)·√((nx/W)² + (ny/H)² + (nz/L)²), each one a bandpass filter whose level is the mode's pressure at the speaker multiplied by its pressure at your ears. Zero means you are sitting in a null, and that is the point.
    • The crossover is the part that makes the nulls real, and it is worth understanding before you trust a null you hear. The two models describe the same sound field in two different ways, so running both across the whole band counts the same energy twice: the direct sound and twelve reflections keep playing at 56 Hz and fill in the null the mode bank just created. Measured here with a sine at a modal null, the mode bank produced 18.6 dB of difference between null and maximum while only 2.1 dB survived to the output. In a real room there is no separate direct sound at 56 Hz — the whole field is the modal field, and that is exactly why the null is deep. So the image source branch is high passed at the Schroeder frequency and the mode bank low passed at the same point, and the same measurement then gives 15.8 dB. Second order Butterworth, not Linkwitz-Riley: the two branches carry different signals — one phase comes from resonators, the other from delays — so they sum incoherently, and the criterion that matters is power, |LP|² + |HP|² = 1. Butterworth holds that exactly; LR would dig a 3 dB hole at the crossover. Turning the modes down opens the high pass again, so the anechoic reference you A/B against still has its bottom octaves.
    • The mode bank's absolute level is an anchor, not a measurement. A mode's amplitude has no reference of its own the way direct sound has 1/r, so it is scaled to match what the high pass removes: averaged over five listening positions and read in third octaves across the modal band, the modal field is set to carry the same energy as the direct sound it replaces. Averaged, because any single position is either a null or a peak. In third octaves, because a single band average over the same range passes a calibration whose bottom end is carrying the top's shortfall. The bank runs up to the Schroeder frequency, above which modes overlap into a statistical field; the wall and floor materials move that boundary, and you can watch it move on the spectrum plot. Q comes from one Sabine number, so every mode decays at the same rate — real ones do not.
    • Below the lowest mode the room is a pressure vessel, and the model stops there deliberately. The lowest term of a modal expansion is not a mode at all: every cosine equals one, so it is the same everywhere in the room, and it is what carries the bottom octave under the first axial mode. Without it a small room would sound quieter down there than it does outdoors, which is the wrong direction. It is anchored to continue the modal field's own level rather than the anechoic one, and it is flat below the first mode instead of rising: a real room leaks through its doors, windows and flexing plasterboard, so pressurisation does not go on forever. Nobody has 15 Hz in a bedroom.
    • The late tail has a unit now: 100% is what the room still owes after the early reflections have been counted. In the model's own units a diffuse field of this room's absorption sits at exactly 1/rc per channel – as loud as the direct sound at the critical distance, which is what the critical distance means. The six early reflections are already part of that field, so they are subtracted from it rather than added on top: the tail gets √(budgetearly), where the early energy is averaged over listening positions because a diffuse estimate is a room average and only an average may be taken off it. How that budget splits is printed beside the slider rather than written here, because it moves: a more directive speaker puts a larger share of it into the early reflections and leaves the tail less of it – the same room reads anywhere from well under a quarter to most of it, on nothing but that choice. The two channels are decorrelated, so two speakers give √2 of the tail on their own, as the theory wants. Two consequences worth knowing. The tail gets quieter when you add absorption and when you pick a more directive speaker, because a directive speaker puts less power into the room to begin with. And in a very live hard-surfaced room the honest level would clip the output, so it is capped – the app says so beside the slider when that happens rather than pretending the room is calibrated.
    • The measured ratio beside your seat is read from the running audio, and it is deliberately not the same number as the estimate. It taps every path before the HRTF, splits them into direct and room, and compares the two above the crossover – above it, because below the crossover there is no separate direct sound to compare against, only the modal field. It excludes the mode bank for the same reason. Expect it to read a little wetter than the estimate, usually within a decibel: the early reflections are taken off the tail as a room average, so a seat closer to the speakers than that average keeps more of them and reads damp. That residual is the geometry talking, not a calibration error. It also lags, since the ratio of two noise signals has to be averaged over about half a second before it is worth reading. If the two numbers disagree by more than a decibel or two after the tail is at 100%, the geometry is telling you something – a seat that close to a wall is not a diffuse field.
    • The critical distance beside your listening distance is textbook theory, not a reading from this model. It is rc = √(Q·R/16π), where the room constant R = Sᾱ/(1−ᾱ) comes from the same Sabine numbers as the tail: the distance at which a diffuse field of this room's absorption would be as loud as the direct sound. The familiar 0.057·√(V/RT60) rule of thumb is that formula without the (1−ᾱ) term, so it reads 10–20% lower in a normally furnished room and further off in a dead one — worth knowing before you conclude one of the two is wrong. Q is the on-axis directivity factor: 1 for omni, exactly 3 for both the cardioid and the dipole, and for the measured speaker it is integrated from the polar data, which is why it arrives as a range instead of one number. The critical distance itself does not depend on how many speakers play: a second one adds direct and reverberant power in the same proportion. The measured ratio below does move when you mute a speaker, by about 3 dB — because two mono speakers sum coherently on the centre line while their reverberant fields do not. Two things the figure does not claim: a small room has no diffuse field at all in its bottom octaves, and the direct-to-reverberant ratio of this page at your seat is a different number, because the late tail here is a slider and the reflections are first order only. Compare it with your own room rather than with what you hear here.
    • An ideal shoebox is not your room. No furniture, no bass traps, no door openings, no non-parallel walls, nothing built in. The mode bank holds a fixed number of modes and the line above says so if a room needs more than it has. It also arrives in mono to both ears, because below 200 Hz the wavelength is longer than 1.7 m and the difference between your ears is small — but not zero. And the surface mute buttons act on the reflections only: muting a wall does not remove the modes that wall is half of.
    • Two symmetric speakers playing mono do not excite the odd width modes at all. Not "weakly" — exactly zero, because the mode's pressure is equal and opposite at the two speaker positions. So the 40.8 Hz width mode of the default room can stay silent no matter where you sit, until you slide the pair off centre or the two channels carry different bass. This is real, it is why a symmetric subwoofer pair is recommended against lateral modes, and it is worth knowing before you conclude that moving your seat does nothing. Walk along the room instead and listen to the length modes, or try the even width mode an octave up.
    • Also not modelled: diffusion, scattering, furniture, real frequency dependent materials, second and higher order reflections, and therefore flutter echo, which cannot exist in a first order model.
    • Nothing here is level dependent, so the loudspeaker never strains. Every stage is a filter or a convolution, which makes the whole chain linear: no distortion, no thermal or power compression, no woofer running out of excursion, no port noise. Turn it up in the model and you get the same sound louder, which is not what a real speaker does. That cuts both ways. What you cannot hear here is whether a speaker holds together at level, and that is a large part of what people mean when they call one good. What you get instead is a comparison that is fair: two speakers differ in directivity and response only, at any volume, with nothing heating up between the two clicks.
    • Measured directivity is an approximation of a measurement. The data is a VituixCAD export – one of the examples in the speaker list, or your own files read in your browser: horizontal and vertical polars on whatever angular grid the export used, normalised to the on-axis response, so it carries directivity only, never the speaker's own frequency response. An import without vertical files gets the horizontal polar copied into that plane, and the page says so when it does. Two planes are not a sphere, so directions in between are guessed as H(θ)·cos²ψ + V(θ)·sin²ψ. Each path then plays that curve as a short impulse response, rebuilt whenever the angle rounds into a different cell — so the curve is played rather than fitted, and what is left between the measurement and your ears is which cell you land in, the length of that impulse response, and a floor below which the filter cannot follow the measurement at all. The note under the error map names the floor, and the rounding is measured rather than claimed: the table in the directivity check above is computed from the speaker you are listening to, and the error map shows you where it goes.
    • A polar export is measured at one distance, and the examples here were exported at three metres. That is the distance they are honest at. Much closer than about two metres the drivers stop summing into one source, so a walk right up to a speaker is the model talking rather than the speaker – the driver spacings in these examples are all small next to two metres, which is why that distance is already enough. If your own listening distance is shorter than that, export your own polars at that distance: the point sources then carry the real path lengths, on one condition – your ears stay level with the speaker, which is what this page does by default and what the height lock keeps true. Free the height and the export's own geometry no longer matches yours.
    • The measurement is magnitude only, so unlike the ideal dipole here, no rear lobe is polarity inverted. Both polars are read with their sign, and the pair is mirrored: the data belongs to one cabinet, so the other speaker plays it left–right reversed, which is how such a pair is normally built. What the export does not state is which way a positive angle points in either plane. Vertically that choice trades the floor reflection for the ceiling one and it is yours to make; horizontally it swaps the two side walls, and there is no switch for it yet – up and inward are the owner's answers rather than documented conventions. For a cabinet that is left–right symmetric the horizontal choice changes nothing, and that covers every entry here bar one – give or take export noise tens of decibels down behind them, which is why the page decides this from a power weighted measure and not an exact test. The exception is the classic three-way: it carries its midrange and tweeter off the centre line of the baffle, so its two horizontal halves are genuinely different measurements. On that one the choice decides which side wall gets which response, and the directivity map says which case you are in rather than leaving you to assume it.
    • The HRTF is the browser's own generic set. It is not yours, there is no head tracking, and elevation is its weakest axis — which is unfortunate, because floor and ceiling are exactly the reflections people argue about. Judge side wall reflections first.
    • Muting a reflection removes energy, so some of what you hear is simply a level change. That is honest here — with SBIR the level change is the phenomenon — but keep it in mind when comparing two positions.

    Reference

    What the numbers beside the sliders mean

    Walls & ceiling — a low / high

    Two absorption coefficients, low band and high band, split at 1.5 kHz – the same split the reflection shelf and the two decay times of the tail use, so one number cannot drift from the other. They are typical published values rather than measurements of any particular wall, which is the same standing as every other number in this model.

    The order of the two numbers is the point, not their size. Bare concrete absorbs almost nothing at either end (0.02 / 0.03), so its tail stays bright as it dies: that is the hard, raw decay of an empty concrete room. Curtains absorb the top four times harder than the bottom, so the tail goes dark and the bass outlasts it. Panelled surfaces run the other way round – the panel resonates and absorbs the low end harder than the high one (gypsum board 0.28 / 0.07, plywood panelling 0.22 / 0.09), which is why a stud-wall living room sounds brighter and thinner than a masonry one of the same size, and why it needs no bass trap so much as it is one.

    The low figure is the value at 125 Hz, not an average across the band, and that is deliberate. What it drives most audibly is the modal region below roughly 170 Hz, where the mode bank gets its decay and its Q – and a stud wall really does absorb around 0.29 down there, which is exactly why such a room has less bass boom than a concrete box. The cost is that the same figure also colours reflections and the low half of the tail all the way up to 1.5 kHz, where 125 Hz is the wrong reference: a gypsum panel is down to 0.04 by 1 kHz, so its reflections come out about 1 dB darker than published data would give, and a carpet or a curtain rises to 0.5 or more, so theirs come out about 2.5 dB brighter. That is what the charts below show as the gap between the step and the curve. Reading it takes two numbers and no more; fixing it would take a third band.

    Until this page had wall materials it had a single absorption slider, and the slider tied the amount of absorption to its distribution: more absorption always meant relatively more of it at the top. That is what soft rooms do and the opposite of what hard ones do, so the range of tail colours the model could reach was both narrow and back to front. It is now about 12 dB wide and it runs the right way.

    Both numbers are drawn below, against published octave band data for the same kind of surface. The line with dots is the published data from 125 Hz to 4 kHz; the flat two-step line is what this model actually uses – one value below 1.5 kHz, one above. Where the step sits away from the curve, the curve is the published figure and the step is the simplification, so you can see what the model rounds off as well as whether the numbers are plausible. The two surfaces you are listening to right now are marked in use.

    These are typical published values for that kind of construction, not measurements of any particular wall or floor, and handbooks disagree with each other by a good deal – the two standard rows for heavy carpet differ by 0.18 at 250 Hz on their own. Two rows have no standard table entry at all and say so. Read them as a sanity check, not as a datasheet.

    published octave bands the two bands this model uses

    Late tail — Reflections n % of the room budget · the tail fills the rest

    100 % on the slider is not the loud end of a preference: it is the level that brings the whole room side – these reflections plus the tail – up to what a diffuse field of this room's absorption would be. So the slider is a percentage of a calibrated amount, and the line tells you how much of that amount the early reflections already supply; the tail fills the rest. That is also why the tail gets quieter in a big room where the reflections are weaker: the budget is shared, not stacked.

    Two states can appear on the line, and they stay there rather than hiding here, because they are things happening rather than things explained. Capped means this room is live enough that the honest level would clip the output, so you are reading the room as quieter than it would really be – pick a more absorbent wall or floor material. Held at a floor means the room is so small and hard that the reflections alone already reach the diffuse estimate.

    Turn — Left / Right / Face speakers

    Turning your head is how people actually localise sound. Face away from the speakers and listen for whether the image follows you: front-back confusion is the weakest point of a generic HRTF, and hearing it is the most useful thing this control does.

    Lock — Speakers follow · Head follows

    Speakers follow keeps the triangle and moves the whole set-up through the room, which separates where you sit from how the triangle is shaped – two things you can otherwise only change together.

    Head follows keeps you facing the speakers, so walking never turns into turning. Mute one speaker and it faces the one still playing, which is what you want when you are listening to a single speaker on axis. Worth knowing when you use muting as an A/B: the head turns with it, so the comparison is one speaker on axis against two in front of you, not the same seat twice.

    Both are ordinary controls while they are on – the sliders show the real values, and switching off leaves everything where it is.

    Speaker library

    A VituixCAD polar export becomes an entry in the speaker list, with a name you give it. The files are read in your browser and the catalogue lives here; a measurement reaches the server only when you back it up to your account or tick it into a shared link.

    There are two text fields, and they differ in who reads them. The description is part of the speaker: it goes wherever the speaker goes – into an export file, into the copy in your account, and into a shared link along with the measurement. It is the line that tells whoever opens your link what they are listening to, since the speaker’s name itself does not travel. The private memo is yours alone. It is backed up to your account along with the speaker, so it follows you to another machine, but it is left out of every export file and every shared link – the difference is not whether it moves, but whether anyone else can read it. If the measurement is left out of a shared link, the description stays behind with it.

    Export it at the distance you listen from. A polar set is measured at one distance and the point sources then carry the real path lengths at that distance – the examples here were exported at three metres, which stops being honest much closer than two. If your seat is nearer than that, exporting at your own distance is the more accurate choice, on one condition: your ears have to stay level with the speaker, which is what the height lock keeps true by default.

    The spheres at the bottom of the list are a different kind of example. Every other entry compares a design choice – a crossover, a driver spacing, a cabinet edge, where the drivers sit on the baffle. The spheres have no design choices at all: a point source on the surface of a sphere, and the only thing that changes from one row to the next is how big it is. That makes them the cleanest way to hear what a cabinet's size does on its own, baffle step included, with nothing else moving. Their pattern depends on one quantity – ka = 2πr/λ – so the whole set is one curve slid along the frequency axis, and the step moves down in frequency in inverse proportion to the diameter. Pick two that differ by a factor of two and the step should move by an octave.

    One entry is not left–right symmetric, and it has its own heading for that reason. The classic three-way carries its midrange and tweeter off the centre line of a wide baffle, the way a great many real cabinets are built, so it radiates a different response towards one side wall than towards the other. Everything else in the list is symmetric, which makes this the only row where that is audible at all: the data is the left cabinet of the pair, and the right one plays it left–right reversed, which is how such a pair is normally built and what the page does with it. Two things follow that you can check. The horizontal polar draws both halves rather than mirroring one, and the note under the map tells you which of the two cases the loaded speaker is in rather than leaving you to assume it. And the side wall reflections stop being the same measurement read at two angles – which is the whole reason a cabinet like this is built as a mirrored pair in the first place.

    It is playable the moment it is imported. There is nothing to solve and nothing to wait for: the measured curve is convolved into each path directly, as a short impulse response. With an account, Back up copies a speaker to your account so another machine gets it.

    The same is true of a speaker that arrives with a shared link or a preset file – it plays from the moment the link opens.

    Response — Directivity only and three phase models

    A polar export contains two different things, and the page normally uses only one of them. Directivity is what the speaker does off axis – every angle in the export is stored as its difference from straight ahead, which is why 0° is exactly flat. The on-axis response is what it does straight ahead, and it is the part that was divided out. This list puts it back: the first position is directivity only, the other three are directivity and the speaker’s own response, each with a different phase.

    Minimum phase is what the magnitude alone dictates — the phase any smooth passive filter of that shape would have. Measured phase adds what the export actually measured on top of it: the part a crossover adds in time and which never shows up in the magnitude at all. A Linkwitz–Riley pair sums to an all-pass, so no amount of equalising can find it — it has to be read from the phase column. Linear phase removes both: every frequency arrives at once. A passive crossover cannot do that — its phase follows from its magnitude, and there is no component to buy that separates them — but an FIR filter can, and plenty of people reading this have built one. What the switch gives you is the comparison without the build: the same speaker in the same room, with and without the phase its crossover adds, changed between two notes.

    The measuring distance does not come with it. A constant delay has been fitted out of the phase between 200 Hz and 10 kHz, exactly as the average level has been taken out of the curve, so the list changes dispersion and not arrival time. Without that, where the microphone happened to sit would end up in the model.

    The phase is read on axis, and off axis that is an approximation. Measured on the ideal two-way: sideways the difference stays under 0.07 ms out to 60°, but vertically it changes sign across the crossover — at 30° it is +0.04 ms below the woofer’s band and −0.10 ms above it, because the drivers are not on the same axis. The direct sound leaves along the axis and is therefore right; the floor and ceiling bounces leave at 32° and 48° in the default room and are an approximation.

    So, plainly: the measured phase does not make the reflections more accurate. Because the sign flips, it improves them below the crossover and makes them slightly worse above it. How much depends on how far apart the drivers are: about 0.1 ms on that ideal two-way, or 7 % of the floor bounce’s own delay, but 0.3–0.42 ms on the classic three-way in this list, which is 20–29 % of it. The three-way is the speaker this whole effect exists for, so read the larger figure as the one that applies to a real loudspeaker. What this list is for is hearing what the crossover’s group delay does, and for the direct sound it is exact.

    Linear phase is linear on the speaker’s axis, for the same reason and with the same numbers. It also costs 43 ms of latency — all four positions carry it, so switching between them does not move anything in time — and it rings before the transient. That pre-ringing is not a fault to be hidden: it is what linear-phase crossovers do, and hearing it is the reason the position exists. The directivity impulse responses stay minimum-phase in every position, so off axis there is still a phase the page has not linearised.

    Where the limit is: comparing two different crossovers on the same speaker is a different question, and this list does not answer it on its own. Their difference shows as vertical lobing, and the lobing’s magnitude is already in the model — two exports of the same speaker already give different power responses and different reflections here. Getting the lobe’s phase right off axis would need a model with one source per driver. The two ideal two-ways in the list, LR2 and LR4, are that comparison as far as it goes today.

    It is applied once per speaker, ahead of the EQ and the room, so the walls and the modes reflect it — the same reason the EQ is there. Bypass under the spectrum does not switch it off: that button compares your curve, not the speaker.

    The curve is used as a shape, not a level: its average energy between 200 Hz and 10 kHz is removed, so switching it on changes tone and not loudness. All four positions share that curve exactly — only the phase differs, so none of them changes the tone relative to the others.

    A position is grey when the speaker cannot do it, and the line underneath says which case it is. An ideal directivity pattern has no measured response at all. A measurement imported before this existed kept only the magnitude, so it gets minimum phase and no more – import its polar files again and the other two appear. The line also gives the number that decides whether any of this is worth hearing: the largest excess group delay between 100 Hz and 1 kHz, after the constant delay has been taken out — so it counts dispersion, not distance. The example two-ways read a fraction of a millisecond, which is small. The three-way reads ten times more, and that is what it is in the list for: it is the only one with a real 40 Hz high-pass under it.

    One reading does not follow it: the critical distance estimate assumes a flat speaker, and the page says so on the line below it whenever the response or the EQ is shaping anything.

    Speaker EQ — Bypass (e)

    The curve is drawn over the spectrum, and you edit it there. Drag a dot sideways to move the band, up and down to change its gain, and scroll on it to change Q. The knobs below the graph are the same numbers, so either one follows the other. The two dots marked HP and LP only move sideways – a pass filter has no gain to drag.

    The knobs turn by dragging up and down, not in a circle: two hundred pixels of travel is the whole range, and holding shift makes that five times finer. The wheel steps one per cent of the range over a knob, or one step of the control with shift – the fine end is where you ask for it rather than where it happens to land. The unit is in the label above each knob, so the reading below it is a number: 20.0k under Hz means 20 kHz.

    Double-click any control on this page to put it back to its default – the knobs, and every slider from Off centre to Late tail. That is there because a slider is a poor way to hit an exact value: the four metres of Off centre are about two hundred and fifty pixels wide, so one step of two centimetres is under two pixels and dead centre is a one pixel target. Nothing snaps to zero, deliberately – snapping would make the values either side of it hard to pick, which is the place where fine adjustment matters most.

    Note that the graph carries two vertical scales at once, deliberately. The orange spectrum is a level in dBFS, labelled on the left; the blue EQ curve is a gain, labelled on the right. They share the frequency axis and nothing else, so the EQ curve sitting above a peak does not mean it is louder than it – it means it is adding that many decibels there.

    The EQ sits between the speaker and the room, so the walls, the floor and the room modes all reflect the curve you set – boost 80 Hz and you hear what the mode does with it, not just what your ear does with it. That is the reason for putting an equaliser on this page at all. Both speakers get the same curve; this is a listening test, not a channel-by-channel calibration.

    Bypass is the control that matters, on the E key so you can keep your hands off the mouse while you compare. It is a real bypass: the signal goes round the filters rather than through flattened ones, so the two states are identical to within the arithmetic. Flat resets the curve and leaves the bypass where it is.

    Four parametric bands, plus a high-pass and a low-pass whose Q is in decibels – that is Web Audio's unit for those two filter types, and Butterworth is −3.0 dB rather than the 0.707 you may expect. A band with 0 dB of gain is exactly transparent, so there is nothing to switch off.

    The two pass filters have a slope of 12 or 24 dB/octave, named after the enclosure rather than the filter, because that is what the choice is for: a sealed box rolls off at 12 dB/octave and a reflex box at 24. Set the high-pass to your box's corner and you are listening to that alignment in this room. The low-pass offers the same two slopes with no such pairing – there is no "reflex" low-pass, so it is labelled by the number alone. Either slope is −3.0 dB at its own corner frequency; 24 dB/octave is two cascaded Butterworth sections, and the pair sums back to the same −3.0.

    Both reach well past the bass. The high-pass runs to 10 kHz and the low-pass down to 100 Hz, so the pair is also a band-pass: you can hand the room a single octave and hear which reflections belong to it, or listen to a driver’s own passband on its own. Drive them past each other and nothing comes through — the page says so rather than leaving you to wonder.

    Preamp is headroom, not tone. Boosts push the output towards clipping, so the button sets the preamp to the peak boost and the reading tells you where you are: Peak is the tallest point of the curve, net is what is left after the preamp. Sustained clipping sounds like a distorting driver, which is exactly the thing a test like this must not invent.

    One number does not follow the EQ: the critical distance estimate knows only absorption and directivity, so it still assumes a flat speaker – the page says so on the line below it while the EQ is shaping anything. The measured direct vs room reading does follow it, because that one is measured downstream of the filters.

    Ear height — At speaker height

    Binaural rendering in the browser stores its head-related filters on a 15° grid of elevations, and picks the nearest one below the source. Crossing one of those steps changes the tone in a single jump – measured here at 6 dB around 6 kHz for a hundredth of a degree of movement – and the step lands exactly where a listener normally sits, level with the speaker. Worse, a reflection in a vertical wall keeps the source's height, so the direct sound and four reflections per speaker all cross it at the same millimetre.

    With this box ticked your ears stay level with the speakers, the elevation stays at zero and nothing is ever crossed. Untick it and the page renders every path through two filters from neighbouring elevations and fades between them, which removes the step – at the cost of moving fourteen more sources every time you move. If the audio stutters, tick it back on.

    Floor and ceiling reflections still cross their own steps when you walk towards the speakers, because their elevation depends on distance. That is the part the tick box does not fix.

    Vertical + — + angle points up

    Only appears for a measured speaker, because it is a question the export does not answer. A vertical polar set is usually asymmetric – a woofer below a tweeter does not radiate the same way up as down – so which sign means up decides whether the floor reflection or the ceiling one gets the off-axis response that belongs to it. Getting it backwards swaps the two. Up is the owner's convention here; the file itself only says +30°.

    Directivity check — the measurement against what plays

    The measurement is the thick line, what you hear is the dashed one. They are the same data: each path convolves the measured curve directly, so the dashed line is the measurement at the nearest cell – 6° across, 5° up – rather than a model of it. Where the two separate, that separation is the rounding.

    The curves follow the Response switch, and that changes what they are. The polar data is normalised to the on-axis response, so on Directivity only 0 dB is the speaker’s own axis at every frequency and what you see is directivity alone. Switch the response on — any of the three phase models — and the on-axis curve is added back into At your seat, All angles and the power response, so they show the real response: 0° is no longer flat, and the dips you are looking at are the ones the chain actually produces. The line under the graph says which of the two you are reading.

    The maps stay directivity in both cases. The error map is the measurement minus the cell that plays, so the same curve added to both would cancel out of it anyway; the polar map is a map of directivity and is named as one. Towards each surface follows the switch like the curves do: with the response on, the white direct line is the real thing and is not flat, because it is the sound that actually leaves towards you.

    Watch for one thing on Directivity only: aim a speaker straight at the seat and its direct line goes flat, because that direction is the reference everything else is measured against. That is the zero level looking at itself rather than a perfect loudspeaker — switch the response on to see the real one.

    In All angles the white pair is the power response – the energy average over the whole sphere, which is what a room ends up hearing. It is the same line in both planes, because the integral uses both. Measured data hides the measurement so you can read the playing curve on its own.

    Towards each surface is a different question: not what reaches your ears, but what leaves the speaker in the direction of each wall, the floor and the ceiling. That is where placement is decided – a deep off-axis dip aimed at the wall beside you arrives as a reflection with a hole in it, and moving the speaker or changing the toe-in a few degrees moves the hole. Whether it matters is exactly the thing worth testing: mute that surface and see if you can hear the difference at all.

    Two things it deliberately leaves out. It is the left speaker only – the right one is the same curve mirrored unless you have moved something, and the asymmetry is what At your seat is for. And it is what leaves the speaker, before the wall absorbs anything: absorption is smooth and would not put a dip anywhere, so including it would only make you wonder whether a hole belongs to the speaker or to the carpet. Each curve follows its own surface switch above, so the graph shows what is playing.

    The error map is what the chain does not reproduce. What you hear at any angle is the measurement at the nearest cell, played through a short minimum-phase filter, so the map is the measurement at the exact angle minus the filter you actually get. Flat grey means it cost nothing there. Most of what you see is the rounding – but the map reads the real filter, so it also shows the two limits that filter has: its length, and a floor below which it cannot follow the measurement at all. The chequered patch in the rear top octave is that floor, not rounding, and it is where the largest number in the table comes from. It has its own key beside the colour scale rather than a stronger colour, because it is a different thing rather than more of the same one – there the chain is not approximating the measurement, it is not following it. The note under the map says which is which.

    dB rms over every measured band, for the speaker you are listening to right now. It is near zero on axis, because the pattern barely moves there, and shows up wherever the pattern turns fastest – the deep off-axis nulls above 1 kHz, and the rear.

    6° spacing was chosen by measurement: finer spacing buys hundredths of a decibel and doubles the number of impulse responses to keep in memory.

    Reflection detail — Full · Shorter filters

    This is the only load switch on the page, and it buys steady CPU rather than smoothness. Fourteen paths each convolve a directivity filter. Shorter filters cuts the twelve reflection paths to a quarter of their length and leaves the two direct paths untouched, because the direct sound is the one you localise on.

    The load it saves is fixed; what it costs is not. Shortening the twelve reflection filters takes roughly half the convolver load off, whatever is playing. The accuracy you give up depends entirely on the loudspeaker, because a filter length is a length of time: on the bookshelves it is at most 1.6 dB in a single band and 0.17 dB rms, which is why you are unlikely to hear it there at all. On a bigger cabinet it is a different trade, and the list measures that rather than argues it. The same 6.5-inch two-way – same crossover, same driver spacing, nothing changed but the box – costs 0.05 dB rms in the bookshelf, 0.28 dB in the 180 mm tower and 0.75 dB in the 500 mm one, and the wide one gives up 6.0 dB in its worst band. Where it hurts moves down with the cabinet, which is the same fact read in frequency: that worst band sits at 2.1 kHz on the bookshelf, 750 Hz on the wide tower and 370 Hz on the 1 m sphere – and structure that low is long in time, so a quarter of the filter blunts it rather than following it. The sphere gives up 1.8 dB rms and 32 dB in its worst band for the same switch – ten times the bookshelf figure in rms and twenty times in the worst band. The ladder climbs with the cabinet: the spheres are still level with the bookshelves at 31 cm and past them at 38 cm, so that is where this switch starts to cost something. Judge it on the speaker you are actually listening to, not on the list.

    What it does not fix: the stutter while you walk. That is not convolving, it is building – every time your angle rounds into a new cell, the page builds a new impulse response, and a filter is built at full length and shortened afterwards. Both settings therefore pay the same price for a step. The switch lowers the load between steps, not the cost of a step. If walking stutters, the levers are the room and the paths: mute surfaces you are not judging, turn Modes off, or move with the sliders instead of holding a key.

    Where you can see it, and where you deliberately cannot. The polar map and the error map always read the direct path, so they do not move when you switch – the maps are about the measurement, not about the load. The curves under Towards each surface are drawn from the shortened filters, so those move: that graph is the honest window into what this costs, and a switch whose price is invisible everywhere would be a switch you could not audit.

    Every figure above is measured across the whole speaker list, both planes and both sides of the horizontal where a speaker is not left–right symmetric, at five filter lengths — from 0.17 dB rms on the bookshelves to 1.8 on the 1 m sphere. The full length is kept because of the second.

    Group delay — the crossover against the room

    This is the phase of the Response switch drawn as time. The white curve is the group delay you hear on measured phase, the grey curve the one on minimum phase, and linear phase is the zero line itself — every frequency arriving together. The gap between white and grey is the whole of what the switch does, so if the two curves lie on top of each other, that A/B has nothing to find on this speaker.

    The dashed blue lines are this room. Each one is how much later a reflection reaches you than the direct sound, from the same geometry the sound uses — move a wall or walk, and they move. They are there because milliseconds on their own do not say whether they are many: a crossover that delays the bass 2 ms is a different proposition in a room whose nearest reflection is 1.5 ms behind than in one where it is 15.

    ⚠️ They are not the same kind of millisecond, and the graph is not claiming they are. A reflection is a second arrival of the whole signal; group delay is a smear inside one arrival. Equal numbers do not mean equally audible — the comparison is there for the order of magnitude, which is the honest part. Whether either is audible is what the listening test is for, and the square-wave source is the one that makes the smear easiest to hear.

    Two scales, because the answer changes which one you want. Room scale fits the nearest reflection into the picture, which is the comparison. Speaker scale drops it and fits the curves, which you need when the answer is “the speaker does almost nothing” and the curve would otherwise be a flat line along the bottom. The line under the graph names the reflections that are above the top of the scale either way.

    On axis only — the stored phase is the on-axis phase, so there is no horizontal or vertical choice here and those buttons are hidden. Off axis the page uses the same phase, and how good an approximation that is measured is in the Response section.

    The curve stops at the ends of the measurement, around 26 Hz and 19 kHz. Beyond those the model just holds the last value it was given, and a group delay read off that would describe the model rather than any loudspeaker.

    A worked example, on the three-way with the 40 Hz Butterworth: the white curve peaks in the mid thirties of hertz and the grey one reaches about half as high — so about half of the bass delay is the magnitude’s own and would be there in any speaker rolling off that way, and the other half is the part only measured phase has. In the midrange the white curve crosses the floor-reflection line at around 110 Hz — above that, the room is doing more than the crossover.

    Ears — Binaural (HRTF)

    On, the browser's own head-related transfer function does the listening: interaural delay and ear filtering, which is what makes height and front-back audible on headphones. Off is plain amplitude panning – direction still follows where you face, but nothing goes through a head.

    Turning it off is the quickest test of how much of what you are hearing is the generic HRTF rather than the room, because the floor and ceiling reflections become level and delay only. It is also the right setting if you are rendering an impulse response for loudspeakers rather than headphones: the same switch decides what the file below records, so the file always matches the binaural switch you listened through.

    Expect a tone shift, not only a change of placement. Measured on this browser's HRTF against plain panning, averaged over both ears and referenced to 500 Hz: about +2 to +3 dB below 250 Hz and −4 to −5 dB from 2 to 5 kHz, with the top octave falling further. Binaural therefore sounds thicker and less airy, and that is the head and outer ear doing their job rather than a fault – though on headphones it arrives twice, since headphone target curves already contain an average outer ear. The colouration above roughly 6 kHz depends strongly on which direction the sound comes from, so it is information rather than tint, and no fixed compensation curve can remove it without making some directions wrong.

    Critical distance — r_c n m · Q n · R n m² · seat n dB

    The distance at which a real room with this absorption would have its reverberant field overtake the direct sound: rc = √(Q·R/16π), with the room constant R = S·ā/(1−ā). It is theory on this room's absorption, not a reading from the mix you are hearing – the late tail here is a slider and the reflections are first order only, so the model's own ratio at your seat is a different number. That is the one the seat figure gives you.

    The line prints R rather than the more familiar RT60 on purpose. RT60 is clamped to 0.15–2.5 s for the tail, so at extreme absorption the printed RT60 and this distance would no longer be the same room. R is exactly the number rc is computed from, so you can check the arithmetic from the line itself. The familiar rule of thumb 0.057·√(V/RT60) is the same formula without the (1−ā) term, and it reads 10–20 % low in a normally furnished room and further off in a dead one.

    Q is closed form where it is closed form: omni 1, cardioid and dipole exactly 3 – both have a power integral of 4π/3, so they differ in where the energy goes, not in how much of it goes off axis. A measured speaker is not one number, which is why the second line gives the extremes band by band. A value below 1 in the bass is not a fault: normalised polar data is slightly above 0 dB off axis down there, so the cabinet radiates a little more to the sides than on axis.

    Measured direct vs room — n dB · n dB wetter

    This one is read from the running audio, not calculated: two analysers sit in the graph, one on the direct sound and one on the room side (twelve reflections plus the late tail). The number is the ratio of their powers, averaged over about half a second, and it only exists while something is playing – hence press play when it is not.

    It is taken above the crossover and without the mode bank, because below the crossover there is no separate direct sound to compare against, and before the HRTF, because the interaural delay would comb filter the sum and the meter would show a dip neither ear hears.

    The second line compares it with the seat estimate on the critical distance row. A residual is expected and is not an error. The late tail has the average early energy subtracted from it – averaged over listening positions – so a seat that is closer to the speakers than that average still reads wet. Near them the early field really is stronger than a room mean. It is not an invitation to pull Late tail down. Reading drier means the opposite: the tail is below its calibrated 100 %, or surfaces are muted.

    Three short words can appear instead of a number. silent: nothing is coming through above the crossover. direct only: the room side is muted, which is the anechoic reference. room only: the direct sound is muted.

    Stereo triangle —

    The angle at the listening position, which is a different angle from toe-in and the one people mean by the well known "60 degree triangle". A 60° triangle means each speaker sits 30° off your nose; toe-in is how far the speaker itself is turned towards you, and the two are independent – you can have an equilateral triangle with the speakers pointing straight down the room.

    Distance to the speakers — Speakers n / n m · Δ n mm (n ms)

    Equal distances mean you are on the centre line, and keeping that is the whole reason the move buttons exist. The delta is given in millimetres and in milliseconds because the second one is what you hear: a few centimetres is a fraction of a millisecond, and that is already an image shift rather than a level difference. It is also the reason the walk is slow — at 0.15 m/s the Doppler shift is 0.04 %, inaudible.

    A / B — Now A · A and B differ in toe-in, separation

    Store A and Store B put the current settings in two slots, and A / B switches between them. The line under the buttons says which one you are listening to, and what the two actually differ in – that list is the comparison you set up, so if it is empty the switch is silent because there is nothing to hear.

    What you are listening in is shared; what you are listening to is not. The room and its materials, which of its surfaces are live, where the speakers stand, where you sit, which way you are facing, the movement locks and the walking speed are the setting rather than the comparison – so once A and B agree on one of them, adjusting it is written into both slots as well as into what you hear. Nothing is thrown away for a change you never meant as a comparison.

    The speaker itself, its directivity, its own response and phase model, the equaliser, the binaural mode and muting one speaker of the pair stay in the slot you stored them in, even when both slots happen to agree. Those are the comparisons this page exists for, and a shared setting cannot be compared: choosing a different speaker would change both slots at once and leave nothing to switch between. So a change to one of them counts as an unsaved edit, the line says so, and storing it in the other slot is what turns it into a comparison. Only settings that genuinely differ – the ones the line names – revert when you press A / B.

    The listening level, the source and the sine frequency never travel with a switch. A / B compares placement and room, and if the test signal changed with it you would be hearing two differences at once.

    Paths — RT60 n s (LF n / HF n) · mean free path n m · n paths

    RT60 is Sabine on the current room and materials, and it is what the synthetic tail decays with. The mean free path is the average distance between bounces, and it sets the pre-delay of that tail. The count is the direct sound plus the six first order reflections, per speaker – fourteen in a stereo pair – and mute a surface and it stays, because muting removes energy rather than the path.

    Room modes — Modes n · Schroeder n Hz · Q n–n · axial n / n / n Hz

    Below the Schroeder frequency the image source model is replaced by an analytic mode bank, because one bounce per surface cannot produce a mode – a mode is what is left after infinitely many. Every mode of an ideal rectangular room is a bandpass filter whose level is the mode's pressure at the speaker multiplied by its pressure at your ears, so a zero means you are sitting in a null, and that is the point. The Q values come from a low frequency RT60, which is longer than the broadband one.

    Q also sets how high each mode peaks, not just how narrow it is. In the modal expansion a term peaks in proportion to Q/f ², so the bank weights every mode by that — and because Q itself grows with frequency, the two together leave a net 1/f tilt. That is the low end a room adds and a field does not, and it is why taking a speaker outdoors takes the bottom with it. Without the weighting each mode was a band limit and nothing more: the peaks were all the same height, which no room does.

    One term of that expansion is not a bandpass and not a mode: the one where all three indices are zero. Every cosine equals one, so it does not vary with position — it is the room's pressure below its first mode, and it is what you hear when you switch the room off and the bottom octave changes. It is filtered to the lowest mode above and flattened at 10 Hz below, because a real room leaks and the pressure rise cannot continue to DC.

    The axial trio is the lowest width, length and height mode: c/2 divided by each dimension. They are the ones you can walk into. If the line says the bank is capped, the bank ran out rather than the room – the modes above that frequency are missing from what you hear.

    A symmetric pair fed the same signal cannot excite a left–right antisymmetric mode at all. The two speakers sit either side of the room's centre plane as long as Off centre is at zero, and while they do, every odd width index gets equal and opposite force from the two of them – including the lowest width mode. That is a little under half of every bank the room can have. It is what the physics says about a perfectly symmetric setup playing mono, and it is also why real rooms do not sound like this: real placement is never quite symmetric and real recordings are not mono. Toe-in does not change it and neither does where you sit – the mode is silent from every seat. Sliding the pair off centre does change it, and so does a recording whose two channels carry different bass.

    Share a link

    A shared link carries the settings, not audio: the room, the seat, the speaker choice, the surfaces, the EQ and your A and B snapshots. The reader's own browser renders it, so what they hear is what you heard, computed again on their machine.

    Reading needs no account. Making a link needs a free account – an email address and nothing else – and that is what gives the link an owner: it stays yours, and deleting your account takes every link you made with it. A link nobody opens expires; one that keeps being opened does not. Taking a link down stops it working everywhere you have pasted it, including that forum thread.

    Your own speaker measurement travels only if you tick the box that says so. Without it, a link that used one of this site's speakers still works – the reader's page fetches the same speaker by name.

    Pressing the button twice does not make two links. A link is made from the settings, so as long as those have not changed you get the same address back – and if you edited the message meanwhile, that text is updated on it. Change the room and you get a new link, because it is a different room.

    Pro names it. A Pro link has an address you choose (/p/your-own-address), a message of up to 280 characters shown on the page, your nickname and one link back to your own thread or site. The message is the useful part: “listen to the 45° ceiling reflection and tell me if you hear it” is a reason to open a link, a pile of slider values is not. The link back is rel="ugc nofollow" – it is there for people who click it, not for search engines, and this is said out loud so that nobody buys Pro for the wrong reason. Save text edits those afterwards without the address changing, because by then it is already in somebody's post. Pro links do not expire, and they keep working after a Pro period ends: a dead link would punish the reader, not the person who stopped paying.

    Credits:

    Directivity data:
    Every loudspeaker on the list is modelled in VituixCAD rather than measured — horizontal and vertical polar responses every 10°, normalised to the on-axis response. Modelled by Teemu Muikku. VituixCAD by Kimmo Saunisto
    Head related transfer function:
    The browser's own generic HRTF, via the Web Audio API PannerNode. It is not measured on your head.
    Version history — 26 releases
    1. v1.24

      • Fix The credits at the bottom of this page were wrong about where the directivity data comes from, and it is the one place on the site where being wrong matters most. Every loudspeaker in the list is modelled in VituixCAD rather than measured — the one entry that carried real measured data was withdrawn yesterday because its vertical response was physically impossible below 200 Hz, and the credits kept describing it. The polar grid is 10 degrees, not the 15 the credits claimed. If you have been reading these as measurements of a real cabinet, they are not, and the list of names says so more honestly than the credits did.
      • Fix Rendering an impulse response said it was “exactly what you are hearing right now”. It is the room and the loudspeaker: headphone correction sits at the very end of the chain and is deliberately left out of the file, because whoever loads it would otherwise hear your headphone curve on top of their own.
      • Fix The clipping warning blamed the room whichever way the level got there. The speaker EQ sits above the meter, so four boosts with no preamp will clip a pink noise track in the middle of an empty room — and the warning would tell you to move away from the corner. It now reads the chain and names what is actually adding the level. The fixed figures it used to quote alongside were true of the default room only, and moved with the room dimensions without changing, so they are gone.
      • Fix Two claims about symmetry contradicted each other in the same paragraph. A symmetric pair cannot excite the odd width modes, but that holds while Off centre is at zero — sliding the pair sideways wakes them, and the page said in one sentence that it did and in the next that it did not.
      • Fix Two places still said your measurements are never uploaded. They stay in your browser until you back a speaker up to your account or tick it into a shared link, and then they go to the server — which is what those buttons are for. The wording now says when it happens instead of promising that it does not.
      • Fix Fetching a speaker from your account updated its name, description and notes but silently kept the old response and phase. If you imported a better export on one machine and fetched it on another, the row said it had arrived and the sound was the old data.
      • Fix Every page on this site was loading about 900 kB of JavaScript libraries that only two pages use. This one never used either of them. On a phone that is seconds before anything appears, and it was worst on exactly the visit that comes from a forum link.
      • Fix A shared link page could scroll sideways: the title, message and nickname are yours to write, and one long unbroken word made the heading about ten times wider than a phone screen.
      • Fix Signing up for the first time wrote a rejected-attempt line into the log the firewall reads. Several readers behind one mobile or office connection share a public address, so a handful of honest sign-ups from the same network could have blocked that network from the server. Refused attempts are still counted; successful ones are not.
      • Fix The privacy policy described the logging wrongly in two places. Your address is also recorded when an existing account asks for more sign-in links than the hourly limit allows, and the site’s own log is the same server log rather than a separate one without personal data. Both are now written as they are.
    2. v1.23

      • Fix The page no longer scrolls sideways on a phone. It had been doing so for three weeks, by as much as 259 pixels on a narrow screen, and the cause was the loudspeaker menu: a menu is as wide as its longest entry, and these entries name the crossover, the cabinet and the driver spacing. The names got longer last night and the whole page grew with them. The menus now shrink to fit and the name is shortened with an ellipsis, which it already was on the widest screens.
      • Fix Bypassing the headphone correction is simpler than it was this morning. It plays at the preamp level written in your correction file, which is the figure printed beside it, rather than at a level calculated from the correction. The calculation was closer on paper and further away by ear: it weighted a boost at 40 Hz the same as one at 3 kHz, and ears do not. The trim is still there for the rest, and it is where the last decibel belongs, because no single figure is right for every kind of music.
      • Fix The reflection panel no longer prints the depth of the sharpest hole in each direction. The figure was measured against a trend line whose width was set when the polar data was eight times coarser, so it had quietly come to mean an eighth of an octave rather than a whole one, and it was picking holes near 18 kHz while the sentence beside it promised the sort a few degrees of toe-in would move. The curves show the same thing and show it correctly, so the number went rather than the graph.
    3. v1.22

      • New A trim beside the bypass, worth six decibels either way. Matching the level of a correction to the level of no correction at all is not something a single number can do for every kind of music: the match is made on the correction’s average, and if what you are playing sits mostly where the correction moves things, your ears will disagree with the average. The trim is where you settle that, and it moves the bypass only, so the level you are listening to does not shift while you set it.
      • Fix The cost of reading the crossover’s phase off axis was given as one figure, and it was the figure for the ideal two-way it was measured on. Drivers further apart cost more: on the classic three-way in the list it is three to four times that, which is a fifth to a third of the floor bounce’s own delay rather than a fourteenth. Both figures are now given, and so is the note that the three-way is the speaker the effect exists for.
    4. v1.21

      • Fix Bypassing the headphone correction no longer changes the volume. A correction is quieter than what it corrects, because the preamp that keeps it from clipping is part of it, so switching it off used to make everything louder — and louder always sounds better, which means the comparison was answering the wrong question. The bypass now plays at the level the correction plays at. What it matches is the correction’s average level rather than its loudness, so a file that only lifts the bass can still sound different when the music is mostly bass; the line under the box says so. If you want the raw signal instead, the tick turns it off.
      • New Filters you paste can be given a name. It appears where a loaded file’s name would, so the line under the box says which headphones the correction is for rather than just Pasted filters. Worth doing if you keep more than one pair beside you.
      • Fix The assumptions list now says that nothing in the chain is level dependent: no distortion, no power compression, no woofer running out of excursion, no port noise. Turn it up here and it is the same sound louder, which is not what a real loudspeaker does. It cuts both ways, and the other way is why an A/B here is fair: two speakers differ in directivity and response only, at any volume.
    5. v1.20

      • New The headphone correction is drawn. The curve in the card is read from the filters that are actually playing rather than from the numbers in the file, so the shape you see is the one the browser makes of them — shelf filters are played at a fixed slope, and the curve shows that slope rather than the one the file asks for. The preamp is left out of the curve and printed as a figure beside it: it is a level rather than a shape, and folding it in would put the whole curve several decibels below the picture you are most likely comparing it against, since AutoEQ leaves it out of theirs as well. The vertical scale grows with the file you loaded, so a gentle correction is not drawn as a flat line.
    6. v1.19

      • New Headphone correction. If you have an AutoEQ file for your headphones — the Parametric EQs one — load it or paste it in, and it is applied last, after everything else. It corrects your headphones rather than the room being modelled, and that is why it sits at the end of the chain and why nothing the page measures moves when you switch it on: the graphs and the figures are about the room, and they should stay that way. It lives in this browser only. It is not part of a shared link, and opening somebody else’s link does not disturb it — their headphones are not yours. Two limits are stated rather than hidden: filter types this page does not read are counted and named instead of being dropped in silence, and shelf filters are played at a fixed slope, which is the slope AutoEQ asks for but not necessarily the one a hand-tuned file asks for. The line under the buttons says so when it matters.
      • Fix A shared link no longer touches how you are listening. Your level stayed yours before this; the programme material did not, so opening a link could put you on a test tone at a frequency the room amplifies — at whatever volume you had set, which is the part that made this worth fixing rather than tidying. Room, speakers and the comparison travel. Level, source and headphone correction stay where you left them, and the line at the top of a shared room says which is which. If the sender wrote a note, that is where to look for what you are meant to listen for.
      • Fix The clipping warning used to explain itself the same way every time: the room, and a sine tone on one of its modes. That was the only thing that could reach the limit, so it was true — and it stopped being true the moment a headphone correction could add gain of its own after everything else. It now names whichever of the two is doing it, because there is no sense in moving your chair out of a corner when the boost is in a file you loaded.
      • Fix Pressing A or B could also flip Update while dragging. That is a setting about how you work, not one of the things being compared.
    7. v1.18

      • Fix A claim that was simply wrong: the page said a real loudspeaker cannot have linear phase, because you cannot change the phase without changing the magnitude. A passive crossover cannot, but an FIR filter can and plenty of people reading this have built one. What the switch is actually for is the comparison without the build — the same speaker in the same room, with and without the phase its crossover adds, changed between two notes.
      • Fix Several passages about how the page came to be the way it is have been taken out, along with the internal numbers that went with them. How something is built is not what you came here for; what it does, where it stops and what it does not attempt to do is. That is the standard the rest of the text will be held to as well — there is more of it to go through.
    8. v1.17

      • Fix Towards each surface was normalised whether or not the speaker’s own response was switched on, and it should not have been. Turn the response on and the white direct line is the real thing now, dips and all — the sound that actually leaves towards you rather than its shape. The way this was found is worth repeating, because the graph was not obviously wrong: point the speakers straight at the seat and the direct line drew perfectly flat, which reads as a flawless loudspeaker and is in fact the reference level looking at itself. Everything on the page now follows one switch: Directivity only normalises, the measured response does not, and the caption says which one you are reading. The dip figure beside each surface is unchanged, since it measures against a sliding one-octave average and subtracts any broadband response of its own — verified across all six surfaces, where it moved by at most 0.14 dB.
      • New The listening tests start somewhere else now. The first ones need nothing of yours: take one thing, change only that, and A/B it until you can say whether you hear a difference at all — if any being a real answer, and a more common one than the hobby admits. Calibrating the room to your own comes after that, as something worth doing rather than a prerequisite, and it is described as what it is: this will not be your room, it is six flat surfaces with one reflection each, but it can get close enough to be worth trusting and you are the only one who can decide when it has. The old introduction promised that you would be comparing loudspeakers in your room at your seat, which is more than a rectangular model can honestly offer.
    9. v1.16

      • Fix Sharing a speaker you imported yourself was being refused. When the import resolution went up to 1/48 octave earlier today the browser started building 480 bands, and the server was still set to accept 200 — so ticking the measurement into a link failed with a size error. A speaker imported before that had 60 bands and went through, which meant the fault was invisible to anyone testing with a file they already had. The limit is now the same number at both ends. It has not gone away: a polar drawn at this resolution costs 420–590 ms to lay out the first time a chart view is opened, against 63 ms at 1/6 octave, and that is the reason a ceiling exists at all. What it does not affect is the sound, which is convolved from the same data either way.
      • New A speaker can carry two texts of your own. The description is part of the speaker: it travels with an exported file, with a copy saved to your account, and with a shared link, so whoever opens your setup reads what the speaker is and what they are supposed to be listening for. The memo is yours — it is backed up to your account so you do not lose it when you change browsers, and it stays out of exported files and out of every link. That split is the whole point of having two fields rather than one: what a speaker is worth saying to somebody else, and what you wrote down for yourself, are rarely the same sentence.
      • New The page is called what it is now. It has sixteen listening tests in it and the old title said none of that — it described the model rather than what you do here. The front page leads with it too, instead of listing it as one card among the calculators.
      • Fix Pages are compressed on the way to your browser. This one is large enough that it was worth measuring: it arrives as roughly a third of what it used to be, which is most noticeable on a phone and on the first visit, when nothing is cached yet.
    10. v1.15

      • New Every release of this page is now listed at the bottom, newest first, and the version badge next to the title jumps to it. If you report something here or on diyAudio and it gets fixed, this is where you can see that it did.
      • Fix Hardened file access on the server.
      • Fix The cost of Shorter filters is now measured on every speaker on the list rather than most of them. Three were missing — including the 500 mm tower, which is the widest cabinet here and therefore the one the figure exists for — and the note above them claimed a wide baffle would not be reproduced at all without the full length. It is reproduced: it costs 0.75 dB rms against 0.05 for the same two-way in a bookshelf, and the band where it hurts moves down with the cabinet, from 2.1 kHz to 370 Hz. The measurement also refuses to write a partial result now, which is how three speakers went missing quietly in the first place.
    11. v1.14

      The table under the directivity graph says what its worst column can be. It reads dB rms per band and the line under it promised that all four columns were the cost of rounding your angle to the nearest cell — which is true of every speaker here whose pattern has no deep null in it, and wrong of the one that has, where the worst figure is the filter’s floor instead: there the chain is not approximating the measurement, it has stopped following it. The error map has said that about itself for a while; the table now says it too, rather than leaving the largest number on the page describing itself as something it is not. Two faults went with it. A/B could not tell you that a slot’s loudspeaker was gone — a saved comparison whose speaker you have since deleted, or a shared room naming one this browser does not have. The page dropped to an ideal pattern correctly but crashed on the way to saying so, so you got the pattern change with no explanation of it. And loading a speaker named by a preset or a shared link rebuilt the whole chain twice: fourteen impulse responses and a full redraw, once for nothing. Neither was visible in the result, which is why both needed a meter rather than a reading.

    12. v1.13

      Two floorstanders, and a fifth thing the list lets you compare: the cabinet. They are the same 6.5″/1″ two-way as the bookshelf already on the list — same fourth-order crossover, same one-wavelength driver spacing, same sharp edges — in a 180 mm wide tower and a 500 mm wide one, so the width of the front baffle is what changes and the drivers are not moved. The spheres added earlier today are the same question with no loudspeaker attached to it; these are the answer on something you might own. What the width does is where the speaker starts to become directional: 60 degrees off axis, the 180 mm cabinets drop 3 dB below their own axis at around 600 Hz and the 500 mm one at 265 Hz, a good octave lower. Height is not doing that work — the 180 mm tower and the 180 mm bookshelf are a sixth of an octave apart despite one being three times taller — which is worth knowing if you have been choosing between a tall box and a wide one for reasons of floor space. There is also something in the measurement that is reported rather than explained: the vertical null that the driver spacing produces stays where it was in frequency, as it should when the drivers have not moved, but it changes side and gets shallower in both towers, which looks like cabinet diffraction filling it in. The examples are exported at three metres like the others, and the same caution applies if you sit closer than two.

    13. v1.12

      The horizontal polar is read with its sign, and the pair is a mirrored pair. Until now the page took the angle off the speaker’s axis as a magnitude, so the left half of every measured horizontal response was never read: a reflection off the left wall and one off the right wall were given the same response, and no loudspeaker on the list could be asymmetric even if its measurement was. That was invisible on everything shipped here, because an ideal model and a sphere are symmetric by construction — which is exactly why the fix came before the speaker that needs it. There is now one such speaker: a classic three-way with a 375 mm baffle whose midrange and tweeter sit 62.5 mm off centre, so its response toward one side wall genuinely differs from the other. It is the left cabinet of a mirrored pair and the list says so, because hearing it as two identical boxes would be the wrong picture. The sign is not a guess: the export’s own convention places a positive angle on the listener’s right, which for the left loudspeaker is the inside of the stereo triangle. What stays an assumption is the pair — a mirrored pair reads inward as positive on both sides, whereas two cabinets of the same hand would not, and a measurement cannot tell you which you own. The curve set draws both halves when they differ, so an asymmetry you can hear is one you can also see: on this speaker a deep narrow null near 700 Hz appears on one side only. Cost, since it is not free: the directivity cache doubles for an asymmetric speaker and only for that speaker, 1178 cells to 2356, measured at 4.6 MiB.

    14. v1.11

      A / B now keeps what you are comparing and shares only what you are comparing it in. A setting both slots agree on still follows you into both — that is what stops an adjustment you never meant as a comparison from being thrown away when you switch — but that now applies to the room, its materials, which of its surfaces are live, where the speakers stand, where you sit and the movement locks, and no longer to the speaker itself, its directivity, its response and phase model, the equaliser, the binaural mode or muting one speaker of the pair. Which walls are live is part of the room; which speaker is playing is a test. Those had the same rule applied to them, and on a page built for comparing loudspeakers that made the most obvious comparison impossible to set up: with the same speaker in both slots, choosing a different one wrote it into both at once, so there was nothing left to switch between. The line under the buttons says the rule now instead of leaving it to be discovered, and the reference explains which side of it each control is on. Nothing about the test signal changed: the level, the source and the sine frequency still stay where they are, because a comparison that changed the signal with it would be two differences at once.

    15. v1.10

      A/B now switches the loudspeaker as well. Storing a slot always kept the speaker, and the line under the button listed it as one of the differences between A and B — but pressing the button restored everything except the speaker, so the state said one thing and the sound was still the other. On a page whose whole point is that what you see and what you hear are the same thing, a control that lists a difference it does not produce is the worst kind of error, because there is nothing to notice: both slots sound like whichever speaker happened to be loaded. It was also asymmetric, which is why it can have felt random rather than broken — every second press was correct by accident, whenever the slot you were switching to had the speaker that was already playing. Pressing A/B now loads the other slot’s speaker before it says it is listening, and if that measurement cannot be loaded it says so instead of claiming the switch happened. Two slots on the same speaker — the ordinary case, two seatings compared — are unchanged and just as immediate as before: nothing is fetched and nothing is rebuilt. Switching between two speakers you have already listened to does not go to the network either, and the crossfade between the two filter sets is the same one that keeps a single reflection from clicking, measured here across fourteen of them at once. The same release also finishes a note in the reference: the cost of Shorter filters was measured on eight speakers before the spheres existed, and the figure for the small two-ways survived the remeasurement unchanged — but the large end is no longer left as an adjective. The one metre sphere gives up ten times as much in rms and twenty times as much in its worst band, and the point where a cabinet crosses out of the small-speaker range is now a number rather than a hint.

    16. v1.9

      Ten numbers in the explanations were wrong, and this release is mostly about why. Raising the directivity resolution eightfold and changing the wall materials moved a lot of what the page prints, and the prose kept the old values: the error map’s cost was described as a fiftieth of what its own table read three lines above it, the band count was given as sixty when it is eight times that, one sentence counted thirteen paths and then listed fourteen, and the reference headings quoted example readings the app had stopped producing. None of it was hidden, all of it was checkable in under a minute, and that is the problem with it. The rule from here is that a number in an explanation is either printed from the same variable the audio uses or not written at all — so the map’s note now reads its resolution, its cell size, its filter length and its floor from the code, the reference headings show the shape of each line instead of an example of it, and the sentences that gave one figure for something that varies say what it depends on and point at the live reading. The map also says when its worst point is past the ends of the colour scale, because the table can read forty-five decibels while the map has coloured everything past one and a half the same. Two things are genuinely new. There is a procedure for anchoring the simulation to your own room — your speakers, your dimensions, your materials, then save it and change only the loudspeaker — because comparing speakers in your room is the thing this is for, and it was never written down in order. And the examples on the speaker list now say they were exported at three metres, what that means if you sit closer than two, and how to export your own at your own distance. The list has a new group at the bottom: nine ideal spheres from ten centimetres to a metre, a point source on the surface of each. They are not loudspeakers and they have no design choices in them at all — the only thing that changes from one to the next is size, which makes them the cleanest way to hear what a cabinet’s width does on its own. Their pattern depends on one quantity, so the whole set is one curve slid along the frequency axis: pick two that differ by a factor of two and the baffle step should move by an octave. Finally, the error map stops pretending that two different things are the same thing. It used to paint the deepest rear angles in the strongest colour on the scale, which read as a worse error when it is not an error of that kind at all: the filter is built with a floor, and below that floor it cannot follow the measurement rather than following it badly. Those points now have their own key beside the colour scale instead of the hottest colour in the ramp, and the scale’s own end labels were rounded to whole decibels, which had been quietly reporting a one-and-a-half decibel range as two.

    17. v1.8

      Three new loudspeakers, one replaced and one removed for being wrong. The three are the same 6.5″/1″ two-way with a fourth-order crossover, and only one thing changes between them, which is the point of having three: two of them differ in driver spacing — one wavelength at the crossover against 1.4 — and two differ in whether the cabinet edges are rounded. What the spacing does is worth listening for rather than reading about: the wider pair puts its deepest vertical null at twenty degrees off axis instead of forty, which is roughly where your ears are when the speaker is mounted a little too high. It is eighteen decibels shallower than the other one’s null and it is still the worse speaker, because the angle matters more than the depth. The rounded edges turn out to do something slightly different from what you would expect: they smooth the on-axis response more than they flatten the listening window — ripple halves, from 4.2 dB to 2.1 — and they drop the rear sector by nearly seven decibels, because diffraction is no longer filling it in from behind. The 8″ pair now differs only in crossover, second order against fourth, so each comparison on the list changes one thing. And the fifteen-inch example with the waveguide is gone. Its vertical data claimed the speaker was six decibels louder straight down than on axis at twenty hertz, which cannot happen — at that frequency the wavelength is seventeen metres and nothing that size has any directivity at all. The fault is in the model it was exported from rather than in this page, and raising the resolution earlier this week made it worse rather than better, because there are now eight times as many bands carrying it. It will come back when the export is fixed. Removing it also took out the one measurement that shipped inside the page itself: the directivity data for every speaker is now fetched when you pick it, and the default pattern needs none of it, so nothing measured is downloaded until you ask for a measured speaker. If a speaker you had selected is no longer here, or fails to load, the page says so and drops to an ideal pattern rather than quietly playing a different speaker at you.

    18. v1.7

      Walls and ceiling have a material instead of one absorption slider. The slider tied how much a surface absorbs to how that absorption is distributed across the spectrum, with a fixed rule that got it backwards: the harder the room, the more the model claimed it absorbed treble. Bare concrete does the opposite. Ten materials now carry two published bands each, and the colour range of the tail went from 3.7 dB the wrong way round to 12.5 dB the right way — so a concrete box and a curtained room are finally different things to listen to rather than the same grey tail at two levels. Gypsum board is the reason the list exists: as a panel resonator it absorbs bass more than treble, which only the panelled surfaces here do, and adding it exposed two faults that had been there all along. Reverberation time was clamped to 2.5 s per band independently, which flattened 5.00 s and 3.33 s in a concrete box to the same number and left a white tail; the clamp is now one factor shared by both bands, so the length is still limited but the ratio is not. And the band split of the tail was a subtraction rather than a filter, which let bass through the treble branch; it is an LR4 crossover now. Absorption curves are drawn in the reference section: the published octave-band data from 125 Hz to 4 kHz, and on top of it the two-band step the model actually uses, so you can see both whether the numbers are plausible and what the model simplifies away. They are typical published values rather than measurements, two entries are marked as estimates, and a consistency check flags where the published data and the number the model uses disagree instead of hiding it. That check compares each of the two numbers against the band it is tuned for, and it is worth saying which: the low figure is the published value at 125 Hz, because what it drives most audibly is the modal region below about 170 Hz. The same figure also colours reflections and the lower half of the tail up to 1.5 kHz, and there it is the wrong reference by roughly 1 dB for a resonant panel and 2.5 dB for a porous surface, in opposite directions. That residual is not hidden anywhere: it is the gap between the step and the curve in the charts, and closing it would need a third band rather than a compromise value in the two we have.And what you share now says what it means. Exporting a preset, saving one to your account or making a link used to attach the whole measurement of whichever speaker you were listening to — including this page’s own example speakers, which every copy of this page already has. Whoever opened it got a row called “From an imported preset” instead of the speaker’s name, so a setup made with a speaker they had in front of them arrived as an anonymous one. The page’s own speakers now travel as a name and are loaded on the other end, and only a measurement you brought in yourself travels as data. A room saved before today still opens: presets and saved rooms now carry a version that reads forwards, so an older file is brought up to date instead of refused, and a file from a newer version says so instead of quietly playing a different room. Before this, a preset made in one browser and opened in another could change the wall material without saying anything — and with it every decay time, the Schroeder frequency and the critical distance. And the listening tests link to the sharing card at the two points where a result actually appears.

    19. v1.4

      Your own loudspeaker is ready when you have added it. Bringing in a VituixCAD export used to end in a minute or two of solving behind a Prepare button and a locked screen, because the measurement was being approximated before it could be listened to. It is not approximated any more: what you hear is the measurement itself, and the wait is gone with the button. Nothing has to be stored and fetched back either, so a speaker travels as its measurement rather than as a solution to it, and a browser that clears its storage costs you nothing. What that also fixes is a fault that had been there since the twenty-first: switching to another speaker left the directivity out entirely — you were hearing a speaker with no pattern at all — until you happened to move something, and then it appeared. The directivity check now says what you are listening to rather than how well something was fitted: the dashed curve is the measurement in the six-degree cell your angle rounds to, which is what is playing, and the error map shows that rounding — a tenth of a decibel or two — instead of an approximation error that ran to seventeen. The graphs beside the plan follow you while you move, not only when you stop: the seat spectrum, the response towards each surface and the group delay redraw about eight times a second during a drag, and the ones that answer a question about the loudspeaker rather than about where you are sitting stay still, because they have nothing to say while you walk. And the equaliser is no longer built around the box: the high pass reaches ten kilohertz and the low pass comes down to a hundred, so the pair is a band pass as well — you can give the room a single octave, or listen to one driver's own band on its own. Run them across each other and the chain goes silent, which is honest but looks broken, so the page now says which of the two it is rather than blaming your computer for being too slow.

    20. v1.3

      Room modes now peak. Every mode was a bandpass with unity gain, so all of them stood the same height — which no room does, and it left the modal band nine decibels quieter than diffuse field theory says a room of this size is. Each mode is now weighted the way the modal expansion says, and the net of it is a tilt that makes the lowest modes the loudest: the bottom octave is around five decibels above the anechoic reference instead of six below it, which is the low end a room gives you and the field outdoors does not. Peaks and nulls at one seat are now some twenty decibels apart, so equalising this room is the same exercise as equalising a real one. A shared link now says whose room you are listening to: the name travels into the tool itself rather than stopping at the landing page, and beside it is a button that puts everything back the way the link had it — so you can move the seat, change the room and still return to what was shared. A and B travel with the link as well, which means a shared setup can carry the comparison its author set up rather than just one seat. A / B itself says what it is doing now: the line under the buttons names which one you are listening to and what the two actually differ in, so a switch that changes nothing is visibly a switch that changes nothing rather than a button that seems broken. And a setting the two agree on now follows you into both of them — adjusting the absorption while comparing two speaker positions no longer throws that adjustment away on the next switch, because a setting both slots share is one you are using rather than one you are comparing. A shared link can be yours now. Pressing the button twice no longer makes two links — a link is made from the settings, so the same settings give you back the same address, and a new one appears when you have actually changed something. On top of that a Pro link is named rather than numbered: you choose the address, and the page it lands on can carry a message of up to 280 characters, your nickname and one link back to your own thread or site. The message is the part that does the work — “listen to the 45° ceiling reflection and tell me if you hear it” is a reason to open a link, a pile of slider values is not, and it is what the forum preview shows instead of the room dimensions. The link back is marked nofollow and that is said out loud beside the field, because the value of it is the people who click it rather than anything a search engine does with it. Text can be fixed afterwards without the address changing, which matters because by then the address is already in somebody's post — and a named link does not expire, nor does it stop working when a Pro period ends: a dead link would punish the reader rather than the person who stopped paying.

    21. v1.0

      Out of prototype. The version badge said “prototype” for eleven days and this release is the point where that stopped being the honest word: the model has been calibrated against itself rather than against a guess — the late tail against the early reflections, the mode bank against an average of listening positions, the directivity model against the measurement it is fitted to — and every number the page prints now says which of those it is reading. What changed here is what you see rather than what you hear. The page no longer promises a prediction of your room: it models an idealised rectangular one, and the opening paragraph now says so before it says anything else, because the value is the controls a real room will not give you rather than a forecast of the one you have. The controls are laid out for the screen you have: on a wide display the settings, library and impulse response cards fill the space beside the graphs instead of stretching across the bottom of the page, and the spectrum and directivity graphs sit directly under the plan view they answer. Long explanations moved out of the cards and behind the same (?) links as everything else, so the directivity graph is no longer sixty lines of prose away from itself. And the saved library has honest limits: two rooms and one loudspeaker of your own for free, a hundred of each with Pro — importing a measurement and listening to it stay free, as they always were.

    22. v0.9

      Sixteen listening tests at the bottom of the page, with the two things worth saying before you start — set the late tail first, and turn the modes off so the bass does not distract you — and two limitations said out loud rather than left to be discovered: floor and ceiling reflections do not sound very natural, and height is the axis where a generic HRTF is at its weakest. After the tests there is a listening guide written in the first person, because what the critical distance sounds like on either side of it is one listener calibrating himself rather than a claim about what you should hear. The numbers beside the sliders are numbers now: every live line was prose whose length changed with the value, so the whole card reflowed while you were moving — exactly when you are reading it. The explanations moved to a Reference section at the end of the page, and each line has a (?) that links to its entry. Warnings stayed on the line, because they are things happening rather than things explained. And the paywall is a button rather than a missing button: a Pro feature is now visible to everyone and the click raises a window that says what it costs, instead of the feature being hidden from the people who might buy it. The free version keeps one speaker of your own at a time — importing and listening stay free, and Pro is what lets you keep several and compare them. And the HRTF is a listening switch now, not just an export option: turning Ears off in the Listener card drops the whole chain to plain amplitude panning while you listen, so direction still follows where you face but nothing goes through a head. It is the quickest way to hear how much of what you are hearing is the browser’s generic HRTF rather than the room — the floor and ceiling reflections in particular become level and delay only, which is worth knowing before you judge how natural they sound. The impulse response reads the same switch, so the file you render is always what you just listened to

    23. v0.7

      Locking your head to the speakers now aims at the speaker that is playing: mute one and you are on its axis, which is what you want when you are listening to a single speaker. Worth knowing when you use muting as an A/B — the head turns with it, so the comparison is one speaker on axis against two in front of you rather than the same seat twice. Adding a speaker no longer loses what you typed: clicking outside the dialog or pressing Escape asks once before discarding. The dialog also says where the export comes from in VituixCAD, that a complete set is not required, and what actually arrived — how many angles on each plane, the step between them, the widest gap, and what a partial export means for the reflections it cannot cover. Files that could not be read are now named instead of silently skipped. Underneath: the reverb tail is no longer rebuilt when the room changed too little to hear it, which was a 12–16 ms pause in the middle of every adjustment, and the load meter stops its loop on a paused page. Saved rooms and speakers can also be opened straight from your account library: the link brings the item here and, for a speaker, keeps its precomputed model instead of solving it again

    24. v0.6

      A speaker library. Ideal patterns, the three example measurements and your own VituixCAD exports are now one list, and adding your own is a dialog with a name, notes, the files and the polar map drawn straight away so you can see whether the right data arrived. Each speaker carries its own precomputed directivity model: it is solved in the background when you add the speaker and stored with it, the three examples ship with theirs already solved, and the Live / Precomputed buttons are gone because the model is a property of the speaker rather than a setting. That also makes an A/B between two speakers a comparison of speakers rather than of two approximations, which it was not before. And a saved speaker can now travel with your account, taking its precomputed directivity model with it: on the second machine the speaker is ready to listen to immediately instead of after a minute of solving. The same copy is what brings a model back when the browser has cleaned it out to make room, so Prepare asks the account before it asks the solver. Backing up, fetching and removing are three separate buttons because they mean three different things: deleting a speaker from this browser leaves the copy in your account, and removing it from the account leaves the copy in this browser. Rooms and speakers now have separate limits — saving a speaker no longer quietly costs a room

    25. v0.4

      Turning your head, and moving without the mouse: yaw with a slider, a pair of hold-to-turn buttons and a draggable sight line on the plan, plus arrow keys, WASD and N/M for everything that used to need a drag. Front-back confusion is the weakest point of a generic HRTF, and turning is the only way to hear it. Directivity check: the measured polar plotted against the filter model as curves, as a polar map and as an error map, so the approximation is visible instead of described. The error map immediately showed two faults in the model and both were fixed the same day: the fit could not see the bass at all, and the lowest shelf was too high to reach it. Optional precomputed model solved in a background worker — twelve free filters in 434 directions on all sixty measured bands as they were then, taking the live model error from 1.4 and 1.6 dB rms to 1.0, switchable against it. Late tail level calibrated against the early reflections rather than on its own. Critical distance and the measured direct-to-room ratio beside the listening position

    26. v0.1

      First public version. Prototype: the mode bank level and the modal Q are not calibrated yet