{"id":18766,"date":"2026-09-17T11:24:07","date_gmt":"2026-09-17T09:24:07","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/bpm-delay-time-calculator\/"},"modified":"2026-09-17T11:24:07","modified_gmt":"2026-09-17T09:24:07","slug":"bpm-delay-time-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-calculator\/","title":{"rendered":"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer"},"content":{"rendered":"<div class=\"lw-bpm\" id=\"bpm-wurzel\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<style>\n.lw-bpm .bpm-reihe { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: flex-end; }\n.lw-bpm label.bpm-feld { display: flex; flex-direction: column; gap: 6px; font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); }\n.lw-bpm input[type=number], .lw-bpm 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-bpm input.bpm-tempo { width: 140px; font-family: monospace; font-size: 1.45rem; font-weight: 700; padding: 6px 10px; }\n.lw-bpm .bpm-tap { background: var(--accent, #2ba6df); color: var(--on-accent, #0b1114); border: none; padding: 14px 30px; border-radius: 8px; font-weight: 700; cursor: pointer; font-size: 1.05rem; user-select: none; -webkit-user-select: none; touch-action: manipulation; }\n.lw-bpm .bpm-tap.bpm-blink { filter: brightness(1.25); }\n.lw-bpm .bpm-knopf2 { background: transparent; color: var(--text-secondary, #a0a0b0); border: 1px solid var(--border, #2a2a35); padding: 10px 14px; border-radius: 6px; cursor: pointer; font-size: 0.9rem; }\n.lw-bpm .bpm-tabelle { overflow-x: auto; margin-top: 10px; }\n.lw-bpm table { border-collapse: collapse; width: 100%; font-size: 0.88rem; }\n.lw-bpm th, .lw-bpm td { text-align: right; padding: 6px 10px; border-bottom: 1px solid var(--border, #2a2a35); white-space: nowrap; }\n.lw-bpm th:first-child, .lw-bpm td:first-child { text-align: left; }\n.lw-bpm th { color: var(--text-primary, #e8e8ee); font-weight: 700; }\n.lw-bpm td { color: var(--text-primary, #e8e8ee); font-family: monospace; }\n.lw-bpm td.bpm-name { font-family: inherit; color: var(--text-secondary, #a0a0b0); }\n.lw-bpm tr.bpm-viertel td { background: var(--bg-body, #14141a); }\n.lw-bpm .bpm-h { font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.98rem; margin: 28px 0 8px; }\n.lw-bpm .bpm-klein { font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); line-height: 1.55; }\n.lw-bpm .bpm-ergebnis { font-family: monospace; font-size: 1.15rem; font-weight: 700; color: var(--text-primary, #e8e8ee); margin: 12px 0 4px; min-height: 1.4em; }\n.lw-bpm .bpm-fehler { color: var(--fail, #ff7b72); }\n@media (max-width: 480px) {\n    .lw-bpm table { font-size: 0.8rem; }\n    .lw-bpm th, .lw-bpm td { padding: 6px 6px; }\n    .lw-bpm .bpm-tap { padding: 14px 22px; }\n}\n<\/style>\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 18px;\">Delay-Zeiten, LFO-Raten, Kompressor-Release und Hallfahnen sitzen enger im Mix, wenn sie dem Tempo folgen. Der Rechner \u00fcbersetzt ein Tempo in Notenl\u00e4ngen in Millisekunden, Hertz und Samples, teilt eine Notenl\u00e4nge in Pre-Delay und Nachhall auf, macht aus einer Zahl von Takten eine Dauer und rechnet von einer Delay-Zeit zur\u00fcck auf das Tempo.<\/p>\n<div class=\"bpm-reihe\">\n        <label class=\"bpm-feld\">Tempo (BPM) <input id=\"bpm-tempo\" class=\"bpm-tempo\" type=\"number\" min=\"20\" max=\"400\" step=\"0.01\" value=\"120\" inputmode=\"decimal\"><\/label><br \/>\n        <button id=\"bpm-tap\" type=\"button\" class=\"bpm-tap\">Tap<\/button><br \/>\n        <button id=\"bpm-neu\" type=\"button\" class=\"bpm-knopf2\">Taps zur\u00fccksetzen<\/button><br \/>\n        <label class=\"bpm-feld\">Abtastrate <select id=\"bpm-rate\"><\/select><\/label>\n    <\/div>\n<p id=\"bpm-tapinfo\" class=\"bpm-klein\" style=\"margin: 10px 0 0;\" aria-live=\"polite\">Tap-Tempo: Taste T oder Knopf mehrmals im Takt; nach mehr als zwei Sekunden Pause beginnt eine neue Messung.<\/p>\n<div class=\"bpm-h\">Notenl\u00e4ngen<\/div>\n<div class=\"bpm-tabelle\">\n<table>\n<thead>\n<tr>\n<th>Note<\/th>\n<th>Gerade (ms)<\/th>\n<th>Punktiert (ms)<\/th>\n<th>Triole (ms)<\/th>\n<th>Gerade (Hz)<\/th>\n<th>Gerade (Samples)<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"bpm-noten\"><\/tbody>\n<\/table><\/div>\n<p class=\"bpm-klein\" style=\"margin: 8px 0 0;\">Punktierte Noten dauern das 1,5-Fache des geraden Werts, Triolen zwei Drittel davon. Hz ist die Rate eines Zyklus dieser L\u00e4nge, etwa f\u00fcr einen LFO.<\/p>\n<div class=\"bpm-h\">Hall, der im Raster endet<\/div>\n<div class=\"bpm-reihe\"><label class=\"bpm-feld\">Pre-Delay <select id=\"bpm-predelay\"><\/select><\/label><\/div>\n<div class=\"bpm-tabelle\">\n<table>\n<thead>\n<tr>\n<th>Hall endet nach<\/th>\n<th>L\u00e4nge (ms)<\/th>\n<th>Pre-Delay (ms)<\/th>\n<th>Decay (ms)<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"bpm-hall\"><\/tbody>\n<\/table><\/div>\n<p class=\"bpm-klein\" style=\"margin: 8px 0 0;\">Pre-Delay und Decay ergeben zusammen die gew\u00e4hlte L\u00e4nge, die Hallfahne endet also vor der n\u00e4chsten Note dieses Werts. Plugins messen Decay unterschiedlich (RT60 oder bis zur Stille), der Wert ist deshalb ein Ausgangspunkt.<\/p>\n<div class=\"bpm-h\">Takte in Dauer<\/div>\n<div class=\"bpm-reihe\">\n        <label class=\"bpm-feld\">Takte <input id=\"bpm-takte\" type=\"number\" min=\"1\" max=\"10000\" step=\"1\" value=\"8\" style=\"width: 110px;\"><\/label><br \/>\n        <label class=\"bpm-feld\">Taktart <select id=\"bpm-taktart\"><\/select><\/label>\n    <\/div>\n<p id=\"bpm-dauer\" class=\"bpm-ergebnis\" aria-live=\"polite\">\n<div class=\"bpm-h\">Von der Delay-Zeit zum Tempo<\/div>\n<div class=\"bpm-reihe\">\n        <label class=\"bpm-feld\">Delay-Zeit (ms) <input id=\"bpm-rueck-ms\" type=\"number\" min=\"0.01\" max=\"60000\" step=\"0.01\" value=\"375\" style=\"width: 130px;\"><\/label><br \/>\n        <label class=\"bpm-feld\">Entspricht <select id=\"bpm-rueck-note\"><\/select><\/label>\n    <\/div>\n<p id=\"bpm-rueck\" class=\"bpm-ergebnis\" aria-live=\"polite\">\n<div class=\"bpm-h\">So wird gerechnet<\/div>\n<p class=\"bpm-klein\" style=\"margin: 0 0 6px;\">Eine Viertelnote dauert 60.000 \u00f7 BPM Millisekunden, bei 120 BPM also 500 ms. Alle anderen geraden Notenwerte ergeben sich durch Verdoppeln oder Halbieren.<\/p>\n<p class=\"bpm-klein\" style=\"margin: 0 0 6px;\">Punktiert = gerade \u00d7 1,5, Triole = gerade \u00d7 2\/3, Frequenz in Hz = 1000 \u00f7 L\u00e4nge in ms, Samples = L\u00e4nge in ms \u00d7 Abtastrate \u00f7 1000.<\/p>\n<p class=\"bpm-klein\" style=\"margin: 0 0 6px;\">Ein Takt dauert Z\u00e4hler \u00d7 4 \u00f7 Nenner Viertelnoten; ein 6\/8-Takt entspricht damit drei Viertelnoten.<\/p>\n<p class=\"bpm-klein\" style=\"font-size: 0.8rem; margin: 14px 0 0;\">Alles wird im Browser berechnet. DAWs und Plugins runden Delay-Zeiten teils oder zeigen sie als Notenwert an; die Tabellen nennen die exakten Werte.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Delay-Zeiten, LFO-Raten, Kompressor-Release und Hallfahnen sitzen enger im Mix, wenn sie dem Tempo folgen. Der Rechner \u00fcbersetzt ein Tempo in Notenl\u00e4ngen in Millisekunden, Hertz und Samples, teilt eine Notenl\u00e4nge in Pre-Delay und Nachhall auf, macht aus einer Zahl von Takten eine Dauer und rechnet von einer Delay-Zeit zur\u00fcck auf das Tempo.\",\"tempo\":\"Tempo (BPM)\",\"knopf_tap\":\"Tap\",\"knopf_neu\":\"Taps zur\u00fccksetzen\",\"abtastrate\":\"Abtastrate\",\"tap_hinweis\":\"Tap-Tempo: Taste T oder Knopf mehrmals im Takt; nach mehr als zwei Sekunden Pause beginnt eine neue Messung.\",\"tap_status\":\"{taps} Taps \u00b7 mittlerer Abstand {intervall} ms \u00b7 gr\u00f6\u00dfte Abweichung {abweichung} ms\",\"tap_zu_wenig\":\"F\u00fcr ein Tempo ist noch ein Tap n\u00f6tig.\",\"fehler_tempo\":\"Das Tempo muss zwischen 20 und 400 BPM liegen.\",\"fehler_takte\":\"Die Zahl der Takte muss mindestens 1 sein.\",\"fehler_ms\":\"Die Delay-Zeit muss gr\u00f6\u00dfer als 0 ms sein.\",\"h_noten\":\"Notenl\u00e4ngen\",\"sp_note\":\"Note\",\"sp_gerade\":\"Gerade (ms)\",\"sp_punktiert\":\"Punktiert (ms)\",\"sp_triole\":\"Triole (ms)\",\"sp_hz\":\"Gerade (Hz)\",\"sp_samples\":\"Gerade (Samples)\",\"noten_hinweis\":\"Punktierte Noten dauern das 1,5-Fache des geraden Werts, Triolen zwei Drittel davon. Hz ist die Rate eines Zyklus dieser L\u00e4nge, etwa f\u00fcr einen LFO.\",\"note_1\":\"1\\\/1 Ganze\",\"note_2\":\"1\\\/2 Halbe\",\"note_4\":\"1\\\/4 Viertel\",\"note_8\":\"1\\\/8 Achtel\",\"note_16\":\"1\\\/16 Sechzehntel\",\"note_32\":\"1\\\/32 Zweiunddrei\u00dfigstel\",\"note_64\":\"1\\\/64 Vierundsechzigstel\",\"art_gerade\":\"gerade\",\"art_punktiert\":\"punktiert\",\"art_triole\":\"Triole\",\"h_hall\":\"Hall, der im Raster endet\",\"predelay_als\":\"Pre-Delay\",\"predelay_0\":\"keins (0 ms)\",\"pd_128\":\"1\\\/128-Note\",\"pd_64\":\"1\\\/64-Note\",\"pd_32\":\"1\\\/32-Note\",\"sp_hall_bis\":\"Hall endet nach\",\"sp_laenge\":\"L\u00e4nge (ms)\",\"sp_predelay\":\"Pre-Delay (ms)\",\"sp_decay\":\"Decay (ms)\",\"hall_viertel\":\"1\\\/4-Note\",\"hall_halbe\":\"1\\\/2-Note\",\"hall_takt\":\"1 Takt (4\\\/4)\",\"hall_zwei_takte\":\"2 Takte (4\\\/4)\",\"hall_hinweis\":\"Pre-Delay und Decay ergeben zusammen die gew\u00e4hlte L\u00e4nge, die Hallfahne endet also vor der n\u00e4chsten Note dieses Werts. Plugins messen Decay unterschiedlich (RT60 oder bis zur Stille), der Wert ist deshalb ein Ausgangspunkt.\",\"h_takte\":\"Takte in Dauer\",\"takte\":\"Takte\",\"taktart\":\"Taktart\",\"dauer_satz\":\"{dauer} \u00b7 {sekunden} s \u00b7 {samples} Samples bei {rate}\",\"h_rueck\":\"Von der Delay-Zeit zum Tempo\",\"rueck_ms\":\"Delay-Zeit (ms)\",\"rueck_note\":\"Entspricht\",\"rueck_satz\":\"{bpm} BPM\",\"h_formeln\":\"So wird gerechnet\",\"formel_1\":\"Eine Viertelnote dauert 60.000 \u00f7 BPM Millisekunden, bei 120 BPM also 500 ms. Alle anderen geraden Notenwerte ergeben sich durch Verdoppeln oder Halbieren.\",\"formel_2\":\"Punktiert = gerade \u00d7 1,5, Triole = gerade \u00d7 2\\\/3, Frequenz in Hz = 1000 \u00f7 L\u00e4nge in ms, Samples = L\u00e4nge in ms \u00d7 Abtastrate \u00f7 1000.\",\"formel_3\":\"Ein Takt dauert Z\u00e4hler \u00d7 4 \u00f7 Nenner Viertelnoten; ein 6\\\/8-Takt entspricht damit drei Viertelnoten.\",\"grenze\":\"Alles wird im Browser berechnet. DAWs und Plugins runden Delay-Zeiten teils oder zeigen sie als Notenwert an; die Tabellen nennen die exakten Werte.\",\"dezimal\":\",\",\"tausend\":\".\"};<\/p>\n<p>    var NOTEN = [1, 2, 4, 8, 16, 32, 64];\n    var ARTEN = ['gerade', 'punktiert', 'triole'];\n    var RATEN = [44100, 48000, 88200, 96000];\n    var TAKTARTEN = [[4, 4], [3, 4], [2, 4], [5, 4], [6, 8], [7, 8], [12, 8]];\n    var PREDELAY = [0, 128, 64, 32];\n    var TAP_PAUSE = 2000;   \/\/ ms ohne Tap: neue Messung\n    var TAP_FENSTER = 8;    \/\/ gemittelt ueber die letzten 8 Abstaende\n    var MIN_BPM = 20, MAX_BPM = 400;<\/p>\n<p>    \/\/ --- Rechnen ------------------------------------------------------------\n    function viertelMs(bpm) { return 60000 \/ bpm; }\n    function artFaktor(art) { return art === 'punktiert' ? 1.5 : (art === 'triole' ? 2 \/ 3 : 1); }\n    function noteMs(bpm, teiler, art) { return viertelMs(bpm) * 4 \/ teiler * artFaktor(art); }\n    function hz(ms) { return 1000 \/ ms; }\n    function samples(ms, rate) { return Math.round(ms * rate \/ 1000); }\n    function taktMs(bpm, zaehler, nenner) { return viertelMs(bpm) * zaehler * 4 \/ nenner; }\n    function bpmAusMs(ms, teiler, art) { return 60000 * (4 \/ teiler) * artFaktor(art) \/ ms; }\n    function tempoGueltig(bpm) { return typeof bpm === 'number' && isFinite(bpm) && bpm >= MIN_BPM && bpm <= MAX_BPM; }\n\n    \/\/ Taps: Zeitstempel in ms; eine Pause ueber TAP_PAUSE beginnt neu.\n    function tapHinzu(zeiten, t) {\n        if (zeiten.length &#038;&#038; t - zeiten[zeiten.length - 1] > TAP_PAUSE) { zeiten.length = 0; }\n        zeiten.push(t);\n        while (zeiten.length > TAP_FENSTER + 1) { zeiten.shift(); }\n        return zeiten;\n    }\n    function tapAuswerten(zeiten) {\n        if (zeiten.length < 2) { return null; }\n        var n = zeiten.length - 1;\n        var mittel = (zeiten[n] - zeiten[0]) \/ n;\n        var abw = 0;\n        for (var i = 1; i <= n; i++) { abw = Math.max(abw, Math.abs((zeiten[i] - zeiten[i - 1]) - mittel)); }\n        return { bpm: 60000 \/ mittel, intervall: mittel, taps: zeiten.length, abweichung: abw };\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 text(schluessel, werte) {\n        return String(T[schluessel]).replace(\/\\{(\\w+)\\}\/g, function (m, k) { return werte && werte[k] !== undefined ? werte[k] : m; });\n    }\n    function dauerText(ms) {\n        var gesamt = Math.round(ms), h = Math.floor(gesamt \/ 3600000), m = Math.floor(gesamt \/ 60000) % 60;\n        var s = Math.floor(gesamt \/ 1000) % 60, rest = gesamt % 1000;\n        var ss = (s < 10 ? '0' : '') + s + T.dezimal + ('00' + rest).slice(-3);\n        return h > 0 ? h + ':' + (m < 10 ? '0' : '') + m + ':' + ss : m + ':' + ss;\n    }\n    function rateText(rate) { return zahl(rate \/ 1000, 1) + ' kHz'; }\n    function notenName(teiler) { return T['note_' + teiler]; }\n    function el(id) { return document.getElementById(id); }\n    function zelle(tr, inhalt, name) {\n        var td = document.createElement('td');\n        td.textContent = inhalt;\n        if (name) { td.className = 'bpm-name'; }\n        tr.appendChild(td);\n    }\n\n    function notenTabelle(bpm, rate) {\n        var tbody = el('bpm-noten');\n        if (!tbody) { return; }\n        tbody.textContent = '';\n        NOTEN.forEach(function (teiler) {\n            var tr = document.createElement('tr');\n            if (teiler === 4) { tr.className = 'bpm-viertel'; }\n            var gerade = noteMs(bpm, teiler, 'gerade');\n            zelle(tr, notenName(teiler), true);\n            zelle(tr, zahl(gerade, 2));\n            zelle(tr, zahl(noteMs(bpm, teiler, 'punktiert'), 2));\n            zelle(tr, zahl(noteMs(bpm, teiler, 'triole'), 2));\n            zelle(tr, zahl(hz(gerade), 3));\n            zelle(tr, ganz(samples(gerade, rate)));\n            tbody.appendChild(tr);\n        });\n    }\n\n    function hallTabelle(bpm, predelayTeiler) {\n        var tbody = el('bpm-hall');\n        if (!tbody) { return; }\n        tbody.textContent = '';\n        var pd = predelayTeiler ? noteMs(bpm, predelayTeiler, 'gerade') : 0;\n        [['hall_viertel', noteMs(bpm, 4, 'gerade')], ['hall_halbe', noteMs(bpm, 2, 'gerade')],\n         ['hall_takt', taktMs(bpm, 4, 4)], ['hall_zwei_takte', 2 * taktMs(bpm, 4, 4)]].forEach(function (z) {\n            var tr = document.createElement('tr');\n            zelle(tr, T[z[0]], true);\n            zelle(tr, zahl(z[1], 2));\n            zelle(tr, zahl(pd, 2));\n            zelle(tr, zahl(z[1] - pd, 2));\n            tbody.appendChild(tr);\n        });\n    }\n\n    function dauerZeigen(bpm, rate) {\n        var ziel = el('bpm-dauer'), takte = parseFloat(el('bpm-takte').value), ta = TAKTARTEN[parseInt(el('bpm-taktart').value, 10) || 0];\n        if (!ziel) { return; }\n        if (!(takte >= 1)) { ziel.textContent = T.fehler_takte; ziel.classList.add('bpm-fehler'); return; }\n        ziel.classList.remove('bpm-fehler');\n        var ms = takte * taktMs(bpm, ta[0], ta[1]);\n        ziel.textContent = text('dauer_satz', { dauer: dauerText(ms), sekunden: zahl(ms \/ 1000, 3), samples: ganz(samples(ms, rate)), rate: rateText(rate) });\n    }<\/p>\n<p>    function rueckZeigen() {\n        var ziel = el('bpm-rueck'), ms = parseFloat(String(el('bpm-rueck-ms').value).replace(',', '.'));\n        var wahl = String(el('bpm-rueck-note').value).split(':');\n        if (!ziel) { return; }\n        if (!(ms > 0)) { ziel.textContent = T.fehler_ms; ziel.classList.add('bpm-fehler'); return; }\n        ziel.classList.remove('bpm-fehler');\n        ziel.textContent = text('rueck_satz', { bpm: zahl(bpmAusMs(ms, parseInt(wahl[0], 10), wahl[1]), 2) });\n    }<\/p>\n<p>    function tempoLesen() {\n        var v = parseFloat(String(el('bpm-tempo').value).replace(',', '.'));\n        return isFinite(v) ? v : NaN;\n    }<\/p>\n<p>    function aktualisieren() {\n        var bpm = tempoLesen(), rate = parseInt(el('bpm-rate').value, 10) || 48000;\n        var info = el('bpm-tapinfo');\n        if (!tempoGueltig(bpm)) {\n            el('bpm-noten').textContent = '';\n            el('bpm-hall').textContent = '';\n            el('bpm-dauer').textContent = '';\n            if (info) { info.textContent = T.fehler_tempo; info.classList.add('bpm-fehler'); }\n            rueckZeigen();\n            return false;\n        }\n        if (info && info.classList.contains('bpm-fehler')) { info.textContent = T.tap_hinweis; info.classList.remove('bpm-fehler'); }\n        notenTabelle(bpm, rate);\n        hallTabelle(bpm, parseInt(el('bpm-predelay').value, 10) || 0);\n        dauerZeigen(bpm, rate);\n        rueckZeigen();\n        return true;\n    }<\/p>\n<p>    \/\/ --- Taps -----------------------------------------------------------------\n    var taps = [];\n    function tap(t) {\n        tapHinzu(taps, t);\n        var e = tapAuswerten(taps), info = el('bpm-tapinfo');\n        if (!e) {\n            if (info) { info.textContent = T.tap_zu_wenig; info.classList.remove('bpm-fehler'); }\n            return null;\n        }\n        var bpm = Math.round(e.bpm * 100) \/ 100;\n        if (tempoGueltig(bpm)) { el('bpm-tempo').value = bpm; }\n        if (info) {\n            info.textContent = text('tap_status', { taps: e.taps, intervall: zahl(e.intervall, 1), abweichung: zahl(e.abweichung, 1) });\n            info.classList.remove('bpm-fehler');\n        }\n        aktualisieren();\n        return e;\n    }\n    function tapsZuruecksetzen() {\n        taps.length = 0;\n        var info = el('bpm-tapinfo');\n        if (info) { info.textContent = T.tap_hinweis; info.classList.remove('bpm-fehler'); }\n    }<\/p>\n<p>    \/\/ --- Auswahllisten ----------------------------------------------------------\n    function option(sel, wert, beschriftung, gewaehlt) {\n        var o = document.createElement('option');\n        o.value = wert; o.textContent = beschriftung;\n        if (gewaehlt) { o.selected = true; }\n        sel.appendChild(o);\n    }\n    function listenFuellen() {\n        RATEN.forEach(function (r) { option(el('bpm-rate'), r, rateText(r), r === 48000); });\n        PREDELAY.forEach(function (p) { option(el('bpm-predelay'), p, p ? T['pd_' + p] : T.predelay_0, p === 64); });\n        TAKTARTEN.forEach(function (ta, i) { option(el('bpm-taktart'), i, ta[0] + '\/' + ta[1], i === 0); });\n        NOTEN.forEach(function (teiler) {\n            ARTEN.forEach(function (art) {\n                option(el('bpm-rueck-note'), teiler + ':' + art, notenName(teiler) + ' \u00b7 ' + T['art_' + art], teiler === 8 && art === 'punktiert');\n            });\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.BPM = {\n        T: T, NOTEN: NOTEN, TAKTARTEN: TAKTARTEN, noteMs: noteMs, hz: hz, samples: samples, taktMs: taktMs, bpmAusMs: bpmAusMs,\n        tempoGueltig: tempoGueltig, tapHinzu: tapHinzu, tapAuswerten: tapAuswerten, zahl: zahl, ganz: ganz, dauerText: dauerText,\n        aktualisieren: aktualisieren, tap: tap, tapsZuruecksetzen: tapsZuruecksetzen, taps: taps\n    };<\/p>\n<p>    if (!el('bpm-wurzel') || !el('bpm-noten')) { return; }\n    listenFuellen();\n    ['bpm-tempo', 'bpm-takte', 'bpm-rueck-ms'].forEach(function (id) { el(id).addEventListener('input', aktualisieren); });\n    ['bpm-rate', 'bpm-predelay', 'bpm-taktart', 'bpm-rueck-note'].forEach(function (id) { el(id).addEventListener('change', aktualisieren); });\n    var knopf = el('bpm-tap');\n    function tapKnopf(ev) {\n        if (ev) { ev.preventDefault(); }\n        tap(window.performance ? performance.now() : Date.now());\n        knopf.classList.add('bpm-blink');\n        setTimeout(function () { knopf.classList.remove('bpm-blink'); }, 90);\n    }\n    knopf.addEventListener('pointerdown', tapKnopf);\n    knopf.addEventListener('keydown', function (ev) { if (ev.key === 'Enter' || ev.key === ' ') { tapKnopf(ev); } });\n    el('bpm-neu').addEventListener('click', tapsZuruecksetzen);\n    document.addEventListener('keydown', function (ev) {\n        if (ev.key !== 't' && ev.key !== 'T') { return; }\n        if (ev.ctrlKey || ev.metaKey || ev.altKey) { return; }\n        var ziel = ev.target, tag = ziel && ziel.tagName;\n        if (tag === 'INPUT' || tag === 'SELECT' || tag === 'TEXTAREA' || (ziel && ziel.isContentEditable)) { return; }\n        tapKnopf(ev);\n    });\n    aktualisieren();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rechnet ein eingegebenes oder getipptes Tempo in Notenl\u00e4ngen in Millisekunden, Hertz und Samples f\u00fcr gerade, punktierte und triolische Noten um, teilt eine Notenl\u00e4nge in Pre-Delay und Decay f\u00fcr Hall auf und macht aus Takten eine Dauer.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92903],"class_list":["post-18766","page","type-page","status-publish","hentry","tag-music-production-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - 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\/de\/werkzeuge\/bpm-delay-time-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Rechnet ein eingegebenes oder getipptes Tempo in Notenl\u00e4ngen in Millisekunden, Hertz und Samples f\u00fcr gerade, punktierte und triolische Noten um, teilt eine Notenl\u00e4nge in Pre-Delay und Decay f\u00fcr Hall auf und macht aus Takten eine Dauer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-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\\\/de\\\/werkzeuge\\\/bpm-delay-time-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/bpm-delay-time-calculator\\\/\",\"name\":\"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-17T09:24:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/bpm-delay-time-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/bpm-delay-time-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/bpm-delay-time-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\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer\"}]},{\"@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":"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - 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\/de\/werkzeuge\/bpm-delay-time-calculator\/","og_locale":"en_US","og_type":"article","og_title":"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - Lukas Wojcik - Blog","og_description":"Rechnet ein eingegebenes oder getipptes Tempo in Notenl\u00e4ngen in Millisekunden, Hertz und Samples f\u00fcr gerade, punktierte und triolische Noten um, teilt eine Notenl\u00e4nge in Pre-Delay und Decay f\u00fcr Hall auf und macht aus Takten eine Dauer.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-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\/de\/werkzeuge\/bpm-delay-time-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-calculator\/","name":"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-17T09:24:07+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/bpm-delay-time-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\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"BPM-Delay-Rechner: Tap-Tempo, Notenl\u00e4ngen in ms und Hz, Pre-Delay f\u00fcr Hall und Taktdauer"}]},{"@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\/18766","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=18766"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/18766\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=18766"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=18766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}