AB's meter appeared to halt for a day and a half. Nothing had halted: the capture child had run continuously since the machine was restarted, never stalled, never exited, and was delivering twenty frames a second. Every one of them was digital silence, because Dante Via stopped passing audio after the reboot — the Timers module's LTC listener, on channel 16 of the same device, had been reporting no signal for exactly as long. The module's part in that was reporting "ok" through all of it and drawing a steady -83, which is the -200 floor plus the +117 calibration offset. A plausible number on a wall is believed, and a green dot beside it says the number is worth believing. That is worse than showing nothing. So silence is now a state the module names. Below -150 dBFS unweighted the input is not quiet, it is absent: a microphone in a silent room still reads about -83, and even a muted converter dithers. Five seconds of that on every channel and health() goes to error naming the device and how long it has been dead, the tiles stop drawing a level and say "No audio" with how long, and the status dot goes red. Verified both directions, which is the half that matters: BlackHole with nothing routed into it is caught in five seconds, and a real microphone in a quiet room at -49 dBFS is never flagged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
95 lines
2.6 KiB
JSON
95 lines
2.6 KiB
JSON
{
|
|
"id": "spl-meter",
|
|
"name": "SPL Meter",
|
|
"version": "0.4.0",
|
|
"proddash": ">=1.5.0",
|
|
"description": "Calibrated sound level, Leq and RTA from an audio input on this machine",
|
|
"permissions": [
|
|
{
|
|
"kind": "microphone",
|
|
"reason": "Measuring sound level from an audio input on this machine"
|
|
}
|
|
],
|
|
"client": "client.js",
|
|
"server": "server.js",
|
|
"style": "style.css",
|
|
"minSize": {
|
|
"w": 2,
|
|
"h": 1
|
|
},
|
|
"defaultSize": {
|
|
"w": 3,
|
|
"h": 2
|
|
},
|
|
"configGroups": {
|
|
"Input": {
|
|
"toggle": "enabled"
|
|
},
|
|
"Measurement": {
|
|
"columns": 2
|
|
},
|
|
"Calibration": {
|
|
"collapsed": "whenSet",
|
|
"help": "A sound level calibrator fits over the microphone capsule and emits a known level, almost always 94 dB at 1 kHz. Put it on, press Measure beside the channel, and copy the offset it reports into the box. Without this the meter still works, but it reads in dB relative to full scale and every tile says so."
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"enabled": {
|
|
"type": "switch",
|
|
"label": "Sound level measurement",
|
|
"group": "Input",
|
|
"default": false
|
|
},
|
|
"device": {
|
|
"type": "select",
|
|
"label": "Audio device",
|
|
"group": "Input",
|
|
"showWhen": "enabled",
|
|
"default": "",
|
|
"optionsRoute": "/devices"
|
|
},
|
|
"channels": {
|
|
"type": "string",
|
|
"label": "Channels on that device (1-based, comma separated)",
|
|
"group": "Input",
|
|
"showWhen": "enabled",
|
|
"default": "1",
|
|
"help": "One meter per channel — \"1\" for a single measurement mic, \"1,2\" for a stereo pair."
|
|
},
|
|
"weighting": {
|
|
"type": "select",
|
|
"label": "Weighting",
|
|
"group": "Measurement",
|
|
"default": "A",
|
|
"options": [
|
|
{
|
|
"value": "A",
|
|
"label": "A — how loud it sounds"
|
|
},
|
|
{
|
|
"value": "C",
|
|
"label": "C — keeps the low end"
|
|
},
|
|
{
|
|
"value": "Z",
|
|
"label": "Z — no weighting at all"
|
|
}
|
|
]
|
|
},
|
|
"bands": {
|
|
"type": "switch",
|
|
"label": "Spectrum analysis",
|
|
"group": "Measurement",
|
|
"default": true,
|
|
"help": "1/48-octave bands for the RTA and spectrogram tiles, which each fold them to their own banding. Turn it off if you only ever show the number."
|
|
},
|
|
"calibration": {
|
|
"type": "string",
|
|
"label": "Offsets in dB, one per channel",
|
|
"group": "Calibration",
|
|
"default": "",
|
|
"help": "Leave empty and every reading is dB relative to full scale, labelled dBFS so nobody mistakes it for real SPL."
|
|
}
|
|
}
|
|
}
|