Source: https://guthlabs.ai/docs/instruments/room-modes-calculator-axial/

instrument / verified-clean

# Room Modes Calculator (Axial)

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/room-modes-calculator-axial/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/room-modes-calculator-axial/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/room-modes-calculator-axial/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/room-modes-calculator-axial/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Audio, Music, Photography & Color

**Tranche**: tranche-2

**Evidence ID**: t2-049

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The honest label correctly states that tangential and oblique modes are ignored, but the implementation must enforce exactly one nonzero mode-order component for every reported mode. Verdict is NEEDS_REVIEW because axial-mode input constraints and the mode-overlap warning criterion are not specified.

### Formula and scope findings

- The formula f=(c/2)*sqrt((nx/Lx)^2+(ny/Ly)^2+(nz/Lz)^2) is the standard rectangular-room modal formula, but it computes axial, tangential, and oblique modes depending on the mode-order vector. For axial-only output, exactly two of nx, ny, nz must be zero and the remaining order must be a positive integer.

- The specification does not define how mode orders are supplied or constrain them to nonnegative integers.

- The all-zero mode vector produces 0 Hz mathematically but is the DC/static mode, not a room resonance, and should be rejected or excluded.

- Mode-overlap warnings are underspecified: no frequency tolerance or definition of overlap is provided. Exact equality is insufficient for practical acoustic overlap warnings.

### Unit assumptions

- Lx, Ly, and Lz are positive room dimensions in metres.

- c is in metres per second; c=343 m/s corresponds approximately to air at 20 degrees C.

- nx, ny, and nz are dimensionless nonnegative integers.

- Frequencies are returned in hertz.

- For axial modes, each mode vector has exactly one positive order and two zero orders.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification exposes an undefined result for a zero room dimension and ambiguity around zero-order, non-axial, and signed mode-order inputs. A robust implementation must validate positive dimensions, handle the all-zero mode explicitly, and enforce or clearly flag the axial-only selection rule.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "room_length": 5,
    "room_width": 4,
    "room_height": 2.5,
    "dimension_unit": "m",
    "speed_of_sound": 343,
    "axial_modes": {
      "x": [
        1,
        2,
        3
      ],
      "y": [
        1,
        2,
        3
      ],
      "z": [
        1,
        2,
        3
      ]
    }
  },
  "expected_outputs": {
    "frequencies_hz": [
      {
        "mode": [
          1,
          0,
          0
        ],
        "frequency": 34.3
      },
      {
        "mode": [
          2,
          0,
          0
        ],
        "frequency": 68.6
      },
      {
        "mode": [
          3,
          0,
          0
        ],
        "frequency": 102.9
      },
      {
        "mode": [
          0,
          1,
          0
        ],
        "frequency": 42.875
      },
      {
        "mode": [
          0,
          2,
          0
        ],
        "frequency": 85.75
      },
      {
        "mode": [
          0,
          3,
          0
        ],
        "frequency": 128.625
      },
      {
        "mode": [
          0,
          0,
          1
        ],
        "frequency": 68.6
      },
      {
        "mode": [
          0,
          0,
          2
        ],
        "frequency": 137.2
      },
      {
        "mode": [
          0,
          0,
          3
        ],
        "frequency": 205.8
      }
    ],
    "mode_overlap_warnings": [
      {
        "modes": [
          [
            2,
            0,
            0
          ],
          [
            0,
            0,
            1
          ]
        ],
        "frequency_hz": 68.6,
        "reason": "exact frequency match"
      }
    ]
  },
  "working": "c/2 = 343/2 = 171.5. Length-axis base: 171.5/5 = 34.3 Hz, so orders 1,2,3 give 34.3, 2*34.3 = 68.6, and 3*34.3 = 102.9 Hz. Width-axis base: 171.5/4 = 42.875 Hz, so orders 1,2,3 give 42.875, 2*42.875 = 85.75, and 3*42.875 = 128.625 Hz. Height-axis base: 171.5/2.5 = 68.6 Hz, so orders 1,2,3 give 68.6, 2*68.6 = 137.2, and 3*68.6 = 205.8 Hz. The length-axis second mode and height-axis first mode both equal 68.6 Hz."
}
````

## Related workflows

[Audio Engineer's Rackroom](<https://guthlabs.ai/docs/instrument-workflows/audio-rack/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche2/tranche2-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
