Sound level exponential decay calculator
This sound level exponential decay calculator finds the sound pressure level remaining after a specified time.
Run — free
Enter the initial level in decibels, a decay rate in decibels per second, and elapsed time in seconds. The calculator applies the corresponding exponential reduction in sound pressure and returns the final decibel level, total level drop, and remaining pressure ratio. It is useful for acoustics exercises, reverberation estimates, envelope design, test-data generation, and any simplified model where a constant decibel decay rate is appropriate.
Why exponential pressure decay becomes a linear decibel drop
Sound pressure level is logarithmic rather than a direct measurement of pressure. A level difference is defined from the base-ten logarithm of a pressure ratio, so an exponentially decreasing pressure amplitude appears as a constant decrease in decibels per unit time. If the initial sound pressure level is L0, the specified decay rate is r decibels per second, and elapsed time is t seconds, the resulting level is L(t) = L0 - r × t. The associated pressure-amplitude ratio is 10^(-r × t / 20). That ratio describes the remaining pressure relative to its initial value, while the final_level_db field describes the resulting sound pressure level on the same reference scale as the initial input. For example, a 20 dB total drop leaves one tenth of the initial pressure amplitude, and a 6 dB drop leaves approximately half. The calculator returns the total level_drop_db and pressure_ratio alongside the final level, making both views of the same exponential process explicit. It does not repeatedly subtract rounded intermediate values; it evaluates the full elapsed interval directly, so a single calculation remains deterministic and avoids cumulative rounding error.
How to supply the three inputs and read the output
Enter initial_level_db as any finite decibel value on the sound-level reference scale used by your source data. For conventional SPL work that usually means dB re 20 micropascals in air, but the equation also works for another consistent reference because it operates on level differences. Enter decay_rate_db_per_second as a nonnegative number. A rate of zero represents no decay, while a larger rate produces a faster reduction. Enter time_seconds as a nonnegative elapsed duration; zero returns the initial level unchanged. The result includes final_level_db, calculated by subtracting decay rate multiplied by time, and level_drop_db, which reports that product separately. pressure_ratio is the remaining sound-pressure amplitude divided by the initial amplitude. The response also echoes all inputs and states the formula for traceability. Negative final decibel values are allowed: decibels express a ratio to a reference, and a negative level can be mathematically valid even though a particular measurement setup may not detect it. Missing fields, numeric strings, NaN, infinity, negative time, negative decay rate, and magnitudes that cause non-finite arithmetic are rejected as invalid input instead of being silently converted or clipped.
Assumptions, useful applications, and model limits
Use this calculator when the decay can reasonably be described by one constant rate in decibels per second. That is a compact model for an exponential amplitude envelope and is convenient for textbook problems, simplified room-acoustics estimates, audio fade specifications, simulation fixtures, alarm-level projections, and laboratory sanity checks. It does not infer a rate from recordings, calculate frequency-dependent absorption, model reflections, or predict how a real room changes over time. Real acoustic fields can contain several decay slopes, background noise, modal behaviour, air absorption, directional sources, and measurement-system limits. Once a decaying signal approaches a noise floor, a measured level may stop following the ideal straight line even though the isolated signal component continues to decay. Treat the returned value as the result of the stated mathematical model, not as a substitute for calibrated measurement or a complete reverberation analysis. Confirm that the initial level and decay rate refer to compatible weighting, bandwidth, and reference conditions. Identical valid inputs always return identical output because the calculation has no network access, random values, stored state, or clock dependency. The browser calculation is free, and an automated API request costs $0.002.
What you can do with it
Project a decaying alarm level
Estimate the idealized SPL after a known number of seconds when an alarm envelope has a specified constant dB-per-second decay.
Design an audio amplitude envelope
Convert a linear decibel slope over time into a final level and remaining pressure-amplitude ratio for a deterministic fade.
Check an acoustics exercise
Verify the final level, total decibel loss, and exponential pressure ratio without manually combining logarithmic relationships.
FAQ
What formula does the calculator use?
It uses final level = initial level - decay rate × time. The corresponding pressure ratio is 10 raised to the power of -(decay rate × time) / 20.
Why is the process called exponential if decibels decrease linearly?
The physical pressure amplitude decreases exponentially. Because decibels are logarithmic, that exponential pressure change is represented by a straight, constant-rate level decrease.
Can the final sound level be negative?
Yes. A negative decibel value means the pressure is below the chosen reference level; it is not automatically a calculation error.
Can I enter a negative decay rate or negative time?
No. This capability models decay after a nonnegative elapsed time. Use a different growth model if the level is intended to increase.
How much does an API calculation cost?
Each successful API request costs $0.002. The same deterministic calculation is free to run in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/optics/sound-level-exponential-decay \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"initial_level_db":90,"decay_rate_db_per_second":6,"time_seconds":3}'const res = await fetch("https://api.kit.forhosting.com/optics/sound-level-exponential-decay", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"initial_level_db": 90,
"decay_rate_db_per_second": 6,
"time_seconds": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/sound-level-exponential-decay",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"initial_level_db": 90,
"decay_rate_db_per_second": 6,
"time_seconds": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/sound-level-exponential-decay", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"initial_level_db":90,"decay_rate_db_per_second":6,"time_seconds":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"initial_level_db":90,"decay_rate_db_per_second":6,"time_seconds":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/sound-level-exponential-decay", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"initial_level_db": 90,
"decay_rate_db_per_second": 6,
"time_seconds": 3
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.sound_level_exponential_decay",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |