LOUDCHECK. ← Back to LoudCheck
ENGINEERING DOCUMENTATION

SOFTWARE • DSP • ARCHITECTURE

How LoudCheck is engineered.

A developer-level look at the architecture, signal-processing pipeline, measurement layer, validation engine and software principles behind LoudCheck.

CORE PRINCIPLE

Measure first. Interpret second.

LoudCheck is designed so that objective audio measurements are produced by deterministic algorithms before those measurements are interpreted by rules, findings and readiness logic.

ENGINEERING INDEX

Inside the system.

01 / ARCHITECTURE

System architecture

LoudCheck separates the web application from the computational audio-analysis service. The browser presents results; the analysis service is responsible for producing them.

PRESENTATION

LoudCheck Web UI

PHP • JavaScript • Tailwind

APPLICATION

PHP Application Layer

Authentication • upload handling • request forwarding

API

Python FastAPI Analysis Service

Audio processing • analysis orchestration • JSON response

Signal Analysis

PCM / channels

Measurement

LUFS / peaks / dynamics

Classification

content characteristics

DECISION

Validation & Readiness Engine

Findings • severity • readiness status

OUTPUT

Structured JSON

UI • reports • exports • future clients

DESIGN PRINCIPLE

The measurement layer should not depend on the presentation layer, and the presentation layer should not contain the logic that determines whether an audio signal passes a technical rule.

02 / PROCESSING PIPELINE

Audio processing pipeline

An uploaded file is processed through defined stages. Each stage has a specific responsibility instead of placing the entire analysis inside one monolithic function.

01

Decode

Convert source audio into an analysis-ready signal.

02

Validate

Check duration, sample rate, channels and signal validity.

03

Measure

Run independent signal-analysis modules.

04

Evaluate

Apply explicit rules to measured values.

05

Report

Serialize the result into structured JSON.

conceptual pipeline
audio_file
    │
    ▼
decode()
    │
    ▼
validate_input()
    │
    ▼
create_analysis_context()
    │
    ├── loudness analysis
    ├── true-peak analysis
    ├── dynamic analysis
    ├── frequency analysis
    └── channel / stereo analysis
    │
    ▼
derive_metrics()
    │
    ▼
classify_content()
    │
    ▼
evaluate_rules()
    │
    ▼
generate_findings()
    │
    ▼
generate_readiness()
    │
    ▼
serialize_json()

03 / MEASUREMENT ENGINE

Measurement engine

LoudCheck treats measurements as first-class software outputs. A measurement should have a defined input, algorithm, output and unit before it becomes part of a technical decision.

LOUDNESS

LUFS / loudness

Integrated and time-varying loudness measurements provide a quantitative description of programme loudness.

DYNAMICS

LRA / RMS / PLR

Multiple measurements describe loudness variation, signal energy and the relationship between peak level and perceived programme loudness.

PEAK

True peak

Peak analysis can account for inter-sample behaviour rather than relying exclusively on discrete sample peaks.

SPECTRUM

Frequency characteristics

Frequency-domain analysis provides measurable information about spectral distribution without requiring generative inference.

CHANNELS

Stereo / multichannel

Channel topology is retained where the analysis requires channel-aware processing.

CLASSIFICATION

Signal characteristics

Measured characteristics can be combined into deterministic content classes such as dense music or wide dynamic range.

MEASUREMENT ≠ INTERPRETATION

A value such as -12.4 LUFS is a measurement. A statement such as "the master may be too loud for the selected target" is an interpretation. LoudCheck keeps these concepts separate so the reasoning can be inspected.

04 / DETERMINISTIC DESIGN

Why the core measurement layer does not require AI.

Generative AI can be useful for explanation, assistance and higher-level interpretation. It is not necessary for calculating an objective numerical property of an audio signal when that property can be defined algorithmically.

              SAME AUDIO INPUT
                       │
                       ▼
              ┌─────────────────┐
              │ Defined         │
              │ algorithm       │
              └────────┬────────┘
                       │
                       ▼
                NUMERIC RESULT
                       │
                       ▼
              ┌─────────────────┐
              │ Explicit rules  │
              └────────┬────────┘
                       │
                       ▼
                 FINDING / STATUS

ENGINEERING PRINCIPLE

AI should not become the authority for an objective measurement.

If a result can be calculated from the signal using a defined mathematical or DSP procedure, that procedure should remain the authoritative measurement mechanism.

05 / MEASUREMENT CONTRACTS

Every measurement has a contract.

A useful engineering pattern is to treat every metric as a contract: defined input → defined algorithm → defined output → defined unit.

Measurement Input Output Unit Deterministic
Integrated loudness PCM samples / channel configuration Programme loudness LUFS Yes
Short-term loudness PCM signal blocks Time-varying loudness LUFS Yes
Loudness range Loudness blocks Statistical range LU Yes
True peak PCM samples Estimated inter-sample peak dBTP Yes
RMS PCM samples Signal energy measure dBFS Yes
PLR Loudness + peak Peak/loudness relationship dB Yes
Frequency bands PCM samples Band characteristics dB / relative Yes
Stereo balance Channel signals Channel relationship dB / ratio Yes

06 / MULTICHANNEL PROCESSING

Channel topology is part of the input.

Audio analysis cannot always treat a multichannel signal as if it were mono. Channel count and channel role can affect the measurement algorithm.

example of a shortcut that requires scrutiny
# Convenient, but not automatically equivalent to
# a channel-aware loudness measurement.

y_mono = np.mean(y, axis=0)

loudness = meter.integrated_loudness(y_mono)

PROBLEM

Transformation ≠ specification

Reducing channels to a mono average may be mathematically valid for a particular purpose, but it must not automatically be treated as equivalent to a channel-aware standards-based loudness measurement.

PRINCIPLE

Preserve channel information

When a measurement definition depends on channel configuration, LoudCheck should retain that information throughout the relevant analysis path.

For standards-based loudness work, the implementation and the applicable ITU-R BS.1770 revision should be explicitly identified. The current in-force recommendation is BS.1770-5.

View ITU-R BS.1770-5 →

07 / RULES & FINDINGS

Rules are downstream from measurements.

A measurement should not directly become a user-facing warning. The rule engine evaluates the measurement against an explicit condition and creates a structured finding.

measurement
    │
    ▼
┌─────────────────────────┐
│ Rule evaluation         │
│                         │
│ value < threshold ?     │
│ value > threshold ?     │
│ value within range ?    │
└────────────┬────────────┘
             │
             ▼
      ┌──────────────┐
      │ Finding      │
      │ code         │
      │ severity     │
      │ message      │
      │ evidence     │
      └──────┬───────┘
             │
             ▼
       readiness engine
illustrative finding object
{
  "code": "TRUE_PEAK_HIGH",
  "severity": "high",
  "metric": "true_peak_dbtp",
  "value": -0.20,
  "unit": "dBTP",
  "rule_version": "1.0"
}

08 / READINESS ENGINE

Readiness is a derived decision.

Readiness should be generated from measurements and findings rather than calculated independently by the browser.

READY

No blocking findings

The analysed material satisfies the active technical rules without a blocking finding.

CONDITIONALLY READY

Review recommended

The material can proceed, but one or more findings require attention or review.

NOT READY

Blocking issue

One or more high-impact findings indicate that the material should be reviewed before release.

09 / JSON CONTRACT

Machine-readable output.

JSON provides the boundary between the analysis service and presentation clients. This allows the same analysis engine to support the current web interface and future clients without duplicating measurement logic.

illustrative LoudCheck analysis response
{
  "analysis": {
    "engine": "LoudCheck",
    "engine_version": "1.x.x",
    "duration_seconds": 222.4,
    "sample_rate": 48000,
    "channels": 2
  },

  "measurements": {
    "integrated_lufs": -14.2,
    "lra_lu": 6.8,
    "true_peak_dbtp": -1.1,
    "rms_dbfs": -16.4,
    "plr_db": 2.2
  },

  "classification": {
    "content_type": "dense_music"
  },

  "findings": [],

  "readiness": {
    "status": "ready"
  }
}

API BOUNDARY PRINCIPLE

The browser should consume analysis results. It should not need to know how LUFS, true peak or spectral measurements were calculated.

10 / TESTING & VALIDATION

Numerical output must be tested.

Audio analysis requires more than checking whether an HTTP endpoint returns status code 200. The numerical output itself must be validated.

UNIT TESTS

Test individual calculations.

Controlled signals and known mathematical relationships can validate individual measurement functions.

REFERENCE VECTORS

Compare against known material.

Reference audio with expected measurement ranges helps identify algorithmic regressions.

INTEGRATION

Test the complete path.

Verify the path from uploaded file through the FastAPI service to the final JSON response.

EDGE CASES

Test unusual inputs.

Silence, short files, mono, stereo, multichannel, high sample rates, clipping and unusual channel layouts should be deliberately tested.

conceptual regression test
def test_reference_loudness():

    result = analyze("reference.wav")

    assert result.integrated_lufs >= expected_min
    assert result.integrated_lufs <= expected_max

REGRESSION PRINCIPLE

If a change to the analysis engine causes a known reference signal to produce a materially different result, that change should be treated as a measurement regression until the difference is understood.

11 / VERSIONING

Analysis must be traceable.

Audio measurements can depend on implementation details, dependencies and standards revisions. Analysis results should therefore identify the software and algorithm versions that generated them.

recommended metadata
{
  "engine": "LoudCheck",
  "engine_version": "1.0.0",
  "loudness_standard": "ITU-R BS.1770",
  "loudness_revision": "BS.1770-5",
  "ruleset_version": "1.0.0"
}

The version shown above is an architectural example. Production reports should contain the actual algorithm and dependency versions used by the deployed analysis engine.

12 / AI BOUNDARY

AI has a place. It is not the measurement layer.

LoudCheck does not need generative AI to calculate its core measurements. This is an architectural decision, not an omission.

AUTHORITATIVE

Deterministic layer

  • DSP and mathematical calculations
  • Standards-based measurement
  • Thresholds and rules
  • Findings and severity
  • Readiness decisions

OPTIONAL

Intelligence layer

  • Natural-language explanations
  • Educational assistance
  • Workflow assistance
  • Higher-level interpretation
                         AUDIO
                           │
                           ▼
                 ┌───────────────────┐
                 │ DSP / MEASUREMENT │
                 └─────────┬─────────┘
                           │
                      AUTHORITATIVE
                           │
                           ▼
                 ┌───────────────────┐
                 │ RULES / FINDINGS  │
                 └─────────┬─────────┘
                           │
                           ▼
                       READINESS
                           │
                           ├──────────────► REPORT
                           │
                           ▼
                    OPTIONAL AI
                    EXPLANATION

13 / FUTURE ARCHITECTURE

ELTY Song Intelligence.

A future ELTY music product can extend this architecture without changing the authority of LoudCheck's measurement layer.

PRODUCT DIRECTION

Understand what is happening inside the song.

ELTY Song Intelligence could analyse tempo, key, structure, energy progression, spectral characteristics, instrumentation, arrangement density and other higher-level musical features.

INPUT

DAW / Audio File

ELTY SONG INTELLIGENCE

Feature Extraction & Analysis

Deterministic DSP

measurable features

Optional AI

explanation / interpretation

OUTPUT

Music Intelligence

The long-term principle is straightforward: use deterministic signal processing when the system needs to measure the audio, and use AI where probabilistic or natural-language reasoning provides additional value.

ENGINEERING POSITION

Make the result traceable.

The closer every user-facing conclusion remains to the signal, the measurement, the evidence and the rule that produced it, the easier the system becomes to test, explain and improve.

Signal Measurement Evidence Finding Decision