{"id":19820,"date":"2026-09-17T16:44:43","date_gmt":"2026-09-17T14:44:43","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/toolbox\/audio-latency-buffer-calculator\/"},"modified":"2026-09-17T16:44:43","modified_gmt":"2026-09-17T14:44:43","slug":"audio-latency-buffer-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/","title":{"rendered":"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance"},"content":{"rendered":"<div class=\"lw-lat\" id=\"lat-wurzel\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<style>\n.lw-lat .lat-reihe { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: flex-end; }\n.lw-lat label.lat-feld { display: flex; flex-direction: column; gap: 6px; font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); }\n.lw-lat input[type=number], .lw-lat select { padding: 8px 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-size: 1rem; }\n.lw-lat input.lat-gross { width: 140px; font-family: monospace; font-size: 1.35rem; font-weight: 700; padding: 6px 10px; }\n.lw-lat .lat-kacheln { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-top: 16px; }\n.lw-lat .lat-kachel { background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 10px 12px; }\n.lw-lat .lat-k-titel { font-size: 0.78rem; color: var(--text-secondary, #a0a0b0); }\n.lw-lat .lat-k-wert { font-family: monospace; font-size: 1.12rem; font-weight: 700; color: var(--text-primary, #e8e8ee); margin-top: 4px; word-break: break-word; }\n.lw-lat .lat-tabelle { overflow-x: auto; margin-top: 10px; }\n.lw-lat table { border-collapse: collapse; width: 100%; font-size: 0.88rem; }\n.lw-lat th, .lw-lat td { text-align: right; padding: 6px 10px; border-bottom: 1px solid var(--border, #2a2a35); white-space: nowrap; }\n.lw-lat th:first-child, .lw-lat td:first-child { text-align: left; }\n.lw-lat th { color: var(--text-primary, #e8e8ee); font-weight: 700; }\n.lw-lat td { color: var(--text-primary, #e8e8ee); font-family: monospace; }\n.lw-lat tr.lat-aktiv td { background: var(--bg-body, #14141a); font-weight: 700; }\n.lw-lat .lat-h { font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.98rem; margin: 28px 0 8px; }\n.lw-lat .lat-klein { font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); line-height: 1.55; }\n.lw-lat .lat-fehler { color: var(--fail, #ff7b72); }\n@media (max-width: 480px) {\n    .lw-lat input.lat-gross { width: 120px; font-size: 1.2rem; }\n    .lw-lat table { font-size: 0.8rem; }\n    .lw-lat th, .lw-lat td { padding: 6px 6px; }\n}\n<\/style>\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 18px;\">The buffer determines how long an audio interface or DAW collects samples before processing them. The calculator converts buffer size and sample rate into milliseconds, adds the extra delays for input and output, estimates the path from input to output and shows how far sound travels in the same time.<\/p>\n<div class=\"lat-reihe\">\n        <label class=\"lat-feld\">Buffer size (samples) <input id=\"lat-puffer\" class=\"lat-gross\" type=\"number\" min=\"1\" max=\"16384\" step=\"1\" value=\"512\" list=\"lat-puffer-liste\"><\/label><br \/>\n        <label class=\"lat-feld\">Sample rate <select id=\"lat-rate\"><\/select><\/label>\n    <\/div>\n<p>    <datalist id=\"lat-puffer-liste\"><\/datalist><\/p>\n<div class=\"lat-reihe\" style=\"margin-top: 14px;\">\n        <label class=\"lat-feld\">Extra input latency (samples) <input id=\"lat-extra-ein\" type=\"number\" min=\"0\" max=\"100000\" step=\"1\" value=\"0\" style=\"width: 130px;\"><\/label><br \/>\n        <label class=\"lat-feld\">Extra output latency (samples) <input id=\"lat-extra-aus\" type=\"number\" min=\"0\" max=\"100000\" step=\"1\" value=\"0\" style=\"width: 130px;\"><\/label>\n    <\/div>\n<p id=\"lat-meldung\" data-mp-mask class=\"lat-klein\" style=\"margin: 10px 0 0;\" aria-live=\"polite\">The two lower fields take additional delays for converters and safety buffers, as far as the driver or the DAW shows them; without such values both stay at 0.<\/p>\n<div id=\"lat-kacheln\" class=\"lat-kacheln\" data-mp-mask aria-live=\"polite\"><\/div>\n<div class=\"lat-h\">Buffer sizes in milliseconds<\/div>\n<div class=\"lat-tabelle\">\n<table>\n<thead id=\"lat-kopf\" data-mp-mask><\/thead>\n<tbody id=\"lat-tabelle\" data-mp-mask><\/tbody>\n<\/table><\/div>\n<p class=\"lat-klein\" style=\"margin: 8px 0 0;\">The highlighted row is the current buffer size. At 44.1 kHz, 441 and 880 samples correspond to the 10 and roughly 20 ms named in the FL Studio manual.<\/p>\n<div class=\"lat-h\">Samples and milliseconds<\/div>\n<div class=\"lat-reihe\">\n        <label class=\"lat-feld\">Samples <input id=\"lat-samples\" type=\"number\" min=\"0\" step=\"1\" value=\"256\" style=\"width: 140px;\"><\/label><br \/>\n        <label class=\"lat-feld\">Milliseconds <input id=\"lat-ms\" type=\"number\" min=\"0\" step=\"0.001\" value=\"5.805\" style=\"width: 140px;\" inputmode=\"decimal\"><\/label>\n    <\/div>\n<p id=\"lat-umrechnung\" data-mp-mask class=\"lat-klein\" style=\"margin: 10px 0 0;\" aria-live=\"polite\">Both fields use the sample rate above, for example for a delay compensation given in samples.<\/p>\n<div class=\"lat-h\">How it is calculated<\/div>\n<p class=\"lat-klein\" style=\"margin: 0 0 6px;\">Latency in ms = samples \u00f7 sample rate \u00d7 1000. 441 samples at 44.1 kHz give 10 ms, 512 samples 11.61 ms.<\/p>\n<p class=\"lat-klein\" style=\"margin: 0 0 6px;\">Round trip = input buffer + output buffer + both extra latencies. The calculator assumes the same buffer size for input and output.<\/p>\n<p class=\"lat-klein\" style=\"margin: 0 0 6px;\">Sound travel = latency \u00d7 speed of sound; at 20 \u00b0C sound covers about 344 m per second in air, 0.344 m per millisecond.<\/p>\n<p class=\"lat-klein\" style=\"font-size: 0.8rem; margin: 14px 0 0;\">Everything is calculated in the browser. Actual latency also depends on the driver, the converters and plugins with look-ahead; a loopback measurement with the audio interface shows the real value. According to the FL Studio manual, the delay between playing and hearing is at least equal to the buffer setting.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"The buffer determines how long an audio interface or DAW collects samples before processing them. The calculator converts buffer size and sample rate into milliseconds, adds the extra delays for input and output, estimates the path from input to output and shows how far sound travels in the same time.\",\"feld_puffer\":\"Buffer size (samples)\",\"abtastrate\":\"Sample rate\",\"feld_extra_ein\":\"Extra input latency (samples)\",\"feld_extra_aus\":\"Extra output latency (samples)\",\"hinweis_extra\":\"The two lower fields take additional delays for converters and safety buffers, as far as the driver or the DAW shows them; without such values both stay at 0.\",\"fehler_puffer\":\"The buffer size has to be a whole number from 1 to 16,384 samples.\",\"fehler_extra\":\"Extra latency has to be a whole number from 0 to 100,000 samples.\",\"fehler_samples\":\"The number of samples has to be 0 or more.\",\"fehler_ms\":\"The time has to be 0 ms or more.\",\"k_puffer\":\"Buffer latency\",\"k_aus\":\"Output with extra latency\",\"k_ein\":\"Input with extra latency\",\"k_rund\":\"Round trip (input + output)\",\"k_abstand\":\"Sound travel in the output latency\",\"k_einordnung\":\"Rating in the FL Studio manual\",\"stufe_unter1\":\"below 1 ms: not rated\",\"stufe_1_4\":\"1\u20134 ms: \u201ccutting edge\u201d\",\"stufe_5_10\":\"5\u201310 ms: excellent\",\"stufe_11_20\":\"11\u201320 ms: good\",\"stufe_ueber20\":\"above 20 ms: not rated\",\"h_tabelle\":\"Buffer sizes in milliseconds\",\"sp_puffer\":\"Buffer (samples)\",\"tabelle_hinweis\":\"The highlighted row is the current buffer size. At 44.1 kHz, 441 and 880 samples correspond to the 10 and roughly 20 ms named in the FL Studio manual.\",\"h_umrechnen\":\"Samples and milliseconds\",\"feld_samples\":\"Samples\",\"feld_ms\":\"Milliseconds\",\"hinweis_umrechnen\":\"Both fields use the sample rate above, for example for a delay compensation given in samples.\",\"h_formeln\":\"How it is calculated\",\"formel_1\":\"Latency in ms = samples \u00f7 sample rate \u00d7 1000. 441 samples at 44.1 kHz give 10 ms, 512 samples 11.61 ms.\",\"formel_2\":\"Round trip = input buffer + output buffer + both extra latencies. The calculator assumes the same buffer size for input and output.\",\"formel_3\":\"Sound travel = latency \u00d7 speed of sound; at 20 \u00b0C sound covers about 344 m per second in air, 0.344 m per millisecond.\",\"grenze\":\"Everything is calculated in the browser. Actual latency also depends on the driver, the converters and plugins with look-ahead; a loopback measurement with the audio interface shows the real value. According to the FL Studio manual, the delay between playing and hearing is at least equal to the buffer setting.\",\"dezimal\":\".\",\"tausend\":\",\"};<\/p>\n<p>    var RATEN = [44100, 48000, 88200, 96000, 176400, 192000];\n    var TABELLE_RATEN = [44100, 48000, 88200, 96000];\n    var PUFFER = [32, 64, 128, 192, 256, 441, 512, 880, 1024, 2048, 4096];\n    var PUFFER_MAX = 16384, EXTRA_MAX = 100000;\n    var SCHALL_M_JE_MS = 0.344; \/\/ 344 m\/s in Luft bei 20 \u00b0C<\/p>\n<p>    \/\/ --- Rechnen ------------------------------------------------------------\n    function ms(samples, rate) { return samples \/ rate * 1000; }\n    function samplesAusMs(zeit, rate) { return Math.round(zeit * rate \/ 1000); }\n    function rundweg(puffer, rate, extraEin, extraAus) { return ms(2 * puffer + extraEin + extraAus, rate); }\n    function schallweg(zeit) { return zeit * SCHALL_M_JE_MS; }\n    function ganzzahl(x, min, max) { return typeof x === 'number' && isFinite(x) && Math.floor(x) === x && x >= min && x <= max; }\n    \/\/ Einordnung nach den Stufen im FL-Studio-Handbuch (ganze Millisekunden: 1-4, 5-10, 11-20)\n    function stufe(zeit) {\n        if (zeit < 0.5) { return 'unter1'; }\n        var g = Math.round(zeit);\n        if (g <= 4) { return '1_4'; }\n        if (g <= 10) { return '5_10'; }\n        if (g <= 20) { return '11_20'; }\n        return 'ueber20';\n    }\n    function zahlLesen(v) {\n        var s = String(v).trim();\n        if (s === '') { return NaN; }\n        var x = Number(s.replace(',', '.'));\n        return isFinite(x) ? x : NaN;\n    }\n\n    \/\/ --- Darstellung --------------------------------------------------------\n    function zahl(x, stellen) {\n        if (typeof x !== 'number' || !isFinite(x)) { return '\u2013'; }\n        var s = x.toFixed(stellen);\n        if (s.indexOf('.') !== -1) { s = s.replace(\/0+$\/, '').replace(\/\\.$\/, ''); }\n        if (s === '-0') { s = '0'; }\n        return s.replace('.', T.dezimal);\n    }\n    function ganz(x) {\n        var s = String(Math.round(x)), aus = '';\n        while (s.length > 3) { aus = T.tausend + s.slice(-3) + aus; s = s.slice(0, -3); }\n        return s + aus;\n    }\n    function rateText(rate) { return zahl(rate \/ 1000, 1) + ' kHz'; }\n    function el(id) { return document.getElementById(id); }<\/p>\n<p>    function eingaben() {\n        return { puffer: zahlLesen(el('lat-puffer').value), rate: parseInt(el('lat-rate').value, 10) || 44100,\n                 extraEin: zahlLesen(el('lat-extra-ein').value), extraAus: zahlLesen(el('lat-extra-aus').value) };\n    }<\/p>\n<p>    function berechnen(e) {\n        if (!ganzzahl(e.puffer, 1, PUFFER_MAX)) { return { ok: false, fehler: T.fehler_puffer }; }\n        if (!ganzzahl(e.extraEin, 0, EXTRA_MAX) || !ganzzahl(e.extraAus, 0, EXTRA_MAX)) { return { ok: false, fehler: T.fehler_extra }; }\n        var puffer = ms(e.puffer, e.rate);\n        var aus = ms(e.puffer + e.extraAus, e.rate);\n        return { ok: true, puffer: puffer, aus: aus, ein: ms(e.puffer + e.extraEin, e.rate),\n                 rund: rundweg(e.puffer, e.rate, e.extraEin, e.extraAus), abstand: schallweg(aus), stufe: stufe(puffer) };\n    }<\/p>\n<p>    function kacheln(r) {\n        var ziel = el('lat-kacheln');\n        ziel.textContent = '';\n        [['k_puffer', zahl(r.puffer, 2) + ' ms'], ['k_aus', zahl(r.aus, 2) + ' ms'], ['k_ein', zahl(r.ein, 2) + ' ms'],\n         ['k_rund', zahl(r.rund, 2) + ' ms'], ['k_abstand', zahl(r.abstand, 2) + ' m'], ['k_einordnung', T['stufe_' + r.stufe]]].forEach(function (k) {\n            var d = document.createElement('div'), t = document.createElement('div'), w = document.createElement('div');\n            d.className = 'lat-kachel'; t.className = 'lat-k-titel'; w.className = 'lat-k-wert';\n            t.textContent = T[k[0]]; w.textContent = k[1];\n            w.setAttribute('data-kachel', k[0]);\n            d.appendChild(t); d.appendChild(w); ziel.appendChild(d);\n        });\n    }<\/p>\n<p>    function tabelle(puffer) {\n        var kopf = el('lat-kopf'), tbody = el('lat-tabelle');\n        kopf.textContent = ''; tbody.textContent = '';\n        var tr = document.createElement('tr');\n        [T.sp_puffer].concat(TABELLE_RATEN.map(rateText)).forEach(function (t) {\n            var th = document.createElement('th'); th.textContent = t; tr.appendChild(th);\n        });\n        kopf.appendChild(tr);\n        PUFFER.forEach(function (p) {\n            var zeile = document.createElement('tr');\n            if (p === puffer) { zeile.className = 'lat-aktiv'; }\n            [ganz(p)].concat(TABELLE_RATEN.map(function (r) { return zahl(ms(p, r), 2); })).forEach(function (inhalt) {\n                var td = document.createElement('td'); td.textContent = inhalt; zeile.appendChild(td);\n            });\n            tbody.appendChild(zeile);\n        });\n    }<\/p>\n<p>    function aktualisieren() {\n        var e = eingaben(), r = berechnen(e), meldung = el('lat-meldung');\n        tabelle(r.ok ? e.puffer : null);\n        if (!r.ok) {\n            el('lat-kacheln').textContent = '';\n            meldung.textContent = r.fehler;\n            meldung.classList.add('lat-fehler');\n            umrechnen();\n            return r;\n        }\n        meldung.textContent = T.hinweis_extra;\n        meldung.classList.remove('lat-fehler');\n        kacheln(r);\n        umrechnen();\n        return r;\n    }<\/p>\n<p>    \/\/ Samples <-> Millisekunden: das zuletzt bearbeitete Feld bleibt stehen.\n    var umrechnungQuelle = 'samples';\n    function umrechnen(art) {\n        if (art) { umrechnungQuelle = art; }\n        var rate = eingaben().rate, meldung = el('lat-umrechnung');\n        if (umrechnungQuelle === 'samples') {\n            var s = zahlLesen(el('lat-samples').value);\n            if (!(s >= 0)) { meldung.textContent = T.fehler_samples; meldung.classList.add('lat-fehler'); return false; }\n            el('lat-ms').value = String(Math.round(ms(s, rate) * 1000) \/ 1000);\n        } else {\n            var z = zahlLesen(el('lat-ms').value);\n            if (!(z >= 0)) { meldung.textContent = T.fehler_ms; meldung.classList.add('lat-fehler'); return false; }\n            el('lat-samples').value = String(samplesAusMs(z, rate));\n        }\n        meldung.textContent = T.hinweis_umrechnen;\n        meldung.classList.remove('lat-fehler');\n        return true;\n    }<\/p>\n<p>    \/\/ --- Auswahllisten --------------------------------------------------------\n    function listenFuellen() {\n        RATEN.forEach(function (r) {\n            var o = document.createElement('option');\n            o.value = r; o.textContent = rateText(r);\n            if (r === 44100) { o.selected = true; }\n            el('lat-rate').appendChild(o);\n        });\n        PUFFER.forEach(function (p) {\n            var o = document.createElement('option');\n            o.value = p;\n            el('lat-puffer-liste').appendChild(o);\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.LAT = {\n        T: T, PUFFER: PUFFER, RATEN: RATEN, ms: ms, samplesAusMs: samplesAusMs, rundweg: rundweg, schallweg: schallweg, stufe: stufe,\n        berechnen: berechnen, zahl: zahl, ganz: ganz, aktualisieren: aktualisieren, umrechnen: umrechnen\n    };<\/p>\n<p>    if (!el('lat-wurzel') || !el('lat-kacheln')) { return; }\n    listenFuellen();\n    ['lat-puffer', 'lat-extra-ein', 'lat-extra-aus'].forEach(function (id) { el(id).addEventListener('input', aktualisieren); });\n    el('lat-rate').addEventListener('change', aktualisieren);\n    el('lat-samples').addEventListener('input', function () { umrechnen('samples'); });\n    el('lat-ms').addEventListener('input', function () { umrechnen('ms'); });\n    aktualisieren();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Converts buffer size and sample rate into latency in milliseconds, adds extra input and output latency, estimates the round trip, shows how far sound travels in the same time, rates the buffer against the FL Studio manual and converts between samples and milliseconds.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":38,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92901],"class_list":["post-19820","page","type-page","status-publish","hentry","tag-music-production"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Converts buffer size and sample rate into latency in milliseconds, adds extra input and output latency, estimates the round trip, shows how far sound travels in the same time, rates the buffer against the FL Studio manual and converts between samples and milliseconds.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/audio-latency-buffer-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/audio-latency-buffer-calculator\\\/\",\"name\":\"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-17T14:44:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/audio-latency-buffer-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/audio-latency-buffer-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/audio-latency-buffer-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/toolbox\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog","og_description":"Converts buffer size and sample rate into latency in milliseconds, adds extra input and output latency, estimates the round trip, shows how far sound travels in the same time, rates the buffer against the FL Studio manual and converts between samples and milliseconds.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/","name":"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-17T14:44:43+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/audio-latency-buffer-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/"},{"@type":"ListItem","position":3,"name":"Audio Latency Calculator: buffer size, sample rate, milliseconds, round trip and sound travel distance"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/19820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=19820"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/19820\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/38"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=19820"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=19820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}