Source: https://guthlabs.ai/docs/instruments/pan-law-stereo-balance-level-calculator/

instrument / verified-clean

# Pan Law / Stereo Balance Level Calculator

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/pan-law-stereo-balance-level-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/pan-law-stereo-balance-level-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/pan-law-stereo-balance-level-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/pan-law-stereo-balance-level-calculator/qualification/>)

## Ledger state

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

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

**Tranche**: tranche-5

**Evidence ID**: t5-106

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The instrument cannot be honestly labeled as computing standard -3 dB, -4.5 dB, and -6 dB center pan laws until panLawGain semantics, pan-position mapping, output-unit conversion, and the exact pan-law curve are specified. The empty honest_label is a concern: the current behavior should not be marketed as a standard pan-law calculator without those definitions.

### Formula and scope findings

- The formula produces linear amplitude gains, but the declared outputs are gains in dB; each nonzero result requires conversion with gain_dB=20*log10(gain_linear).

- panLawGain is undefined: the spec does not state whether it is 10^(panLaw_dB/20), a center-channel gain, or another normalized factor.

- If panLawGain=10^(panLaw_dB/20), the stated pan-law value is not actually the center-channel output at theta=45 degrees: the center result is panLaw_dB-3.0103 dB because cos(45°)=sin(45°)=0.7071.

- A standard constant-power pan law normally uses L=cos(theta), R=sin(theta), with the center attenuation determined by the curve or an explicit normalization. Multiplying both channels by one global panLawGain does not clearly implement standard -3 dB, -4.5 dB, and -6 dB center laws.

- The mapping from the user-facing pan position to theta is unspecified: the spec does not say whether input is 0-1, -1 to +1, a percentage, or degrees, nor which endpoint is left or right.

### Unit assumptions

- The test vectors assume pan position is supplied directly in degrees, with 0°=full left, 90°=full right, and 45°=center.

- The test vectors assume panLawGain=10^(panLaw_dB/20), where panLaw_dB is a negative attenuation relative to unity amplitude.

- Linear gains are dimensionless amplitude ratios referenced to unity gain, and dB outputs use 20*log10(amplitude ratio).

- A zero linear gain is represented as -Infinity dB; JSON has no numeric representation for negative infinity, so it is represented as the string "-Infinity" in expected_outputs.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

Hard-left and hard-right positions produce a zero linear gain on one channel. Converting that channel to dB requires log10(0), so a finite numeric dB output is undefined; the instrument must explicitly return -Infinity or reject the result. The specification also does not state the pan-position convention or explicitly define the linear-to-dB conversion.

## 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": {
    "pan_position_degrees": 0,
    "pan_law_db": -3
  },
  "expected_outputs": {
    "left_gain_linear": 0.70794578,
    "right_gain_linear": 0,
    "left_gain_db": -3,
    "right_gain_db": "-Infinity"
  },
  "working": "panLawGain=10^(-3/20)=10^(-0.15)=0.70794578. theta=0°. L=cos(0°)*0.70794578=1*0.70794578=0.70794578. R=sin(0°)*0.70794578=0*0.70794578=0. 20*log10(0.70794578)=-3 dB. 20*log10(0)=-Infinity dB."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## 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-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
