{"id":20347,"date":"2026-09-24T11:13:01","date_gmt":"2026-09-24T09:13:01","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/"},"modified":"2026-09-24T11:13:01","modified_gmt":"2026-09-24T09:13:01","slug":"tempo-converter-time-stretch-factor-length-pitch","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/","title":{"rendered":"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107"},"content":{"rendered":"<div class=\"lw-tu\" id=\"tu-wurzel\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<style>\n.lw-tu { --tu-warn: #e8a33d; }\n:root[data-theme=\"light\"] .lw-tu { --tu-warn: #8f5300; }\n.lw-tu .tu-felder { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }\n.lw-tu label { display: block; font-size: 0.8rem; color: var(--text-secondary, #a0a0b0); margin-bottom: 4px; }\n.lw-tu input, .lw-tu select { width: 100%; box-sizing: border-box; background: var(--bg-body, #14141a); color: var(--text-primary, #e8e8ee); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 9px 10px; font-family: monospace; font-size: 1rem; }\n.lw-tu input.tu-falsch { border-color: var(--fehler, #f0857a); }\n.lw-tu .tu-kacheln { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 18px 0 4px; }\n.lw-tu .tu-kachel { background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 11px 14px; min-width: 0; }\n.lw-tu .tu-kachel-name { font-size: 0.74rem; color: var(--text-secondary, #a0a0b0); text-transform: uppercase; letter-spacing: 0.4px; }\n.lw-tu .tu-kachel-wert { font-family: monospace; font-size: 1.4rem; font-weight: 700; color: var(--text-primary, #e8e8ee); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.lw-tu .tu-hinweis { border-radius: 8px; padding: 10px 14px; margin-top: 12px; border: 1px solid var(--border, #2a2a35); background: var(--bg-body, #14141a); font-size: 0.86rem; color: var(--text-secondary, #a0a0b0); line-height: 1.55; }\n.lw-tu .tu-hinweis strong { color: var(--tu-warn); }\n.lw-tu .tu-tabelle { overflow-x: auto; margin-top: 6px; }\n.lw-tu table { border-collapse: collapse; width: 100%; font-size: 0.86rem; }\n.lw-tu th, .lw-tu td { text-align: left; padding: 6px 10px; border-bottom: 1px solid var(--border, #2a2a35); vertical-align: top; }\n.lw-tu th { color: var(--text-primary, #e8e8ee); }\n.lw-tu td { color: var(--text-primary, #e8e8ee); }\n.lw-tu td.tu-wert { font-family: monospace; color: var(--text-secondary, #a0a0b0); white-space: nowrap; }\n.lw-tu .tu-befehl-name { font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.88rem; margin: 14px 0 4px; }\n.lw-tu .tu-befehl { font-family: monospace; font-size: 0.84rem; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 10px 12px; overflow-wrap: anywhere; color: var(--text-primary, #e8e8ee); }\n.lw-tu .tu-h { font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 24px 0 8px; }\n.lw-tu .tu-klein { font-size: 0.84rem; color: var(--text-secondary, #a0a0b0); line-height: 1.55; }\n.lw-tu .tu-knopf { background: transparent; color: var(--text-secondary, #a0a0b0); border: 1px solid var(--border, #2a2a35); padding: 9px 14px; border-radius: 6px; cursor: pointer; font-size: 0.9rem; margin-top: 12px; }\n.lw-tu .tu-fehler { color: var(--fehler, #f0857a); font-size: 0.88rem; margin-top: 12px; }\n.lw-tu a { color: var(--accent, #2ba6df); }\n@media (max-width: 600px) {\n    .lw-tu .tu-kacheln { grid-template-columns: 1fr 1fr; gap: 8px; }\n    .lw-tu .tu-kachel-wert { font-size: 1.15rem; }\n    .lw-tu table.tu-karten thead { display: none; }\n    .lw-tu table.tu-karten tr { display: block; padding: 8px 0; border-bottom: 1px solid var(--border, #2a2a35); }\n    .lw-tu table.tu-karten td { display: block; border: none; padding: 1px 0; }\n    .lw-tu table.tu-karten td:first-child { font-weight: 700; }\n    .lw-tu table.tu-karten td.tu-wert { white-space: normal; }\n    .lw-tu table.tu-karten td[data-name]::before { content: attr(data-name) \": \"; color: var(--text-secondary, #a0a0b0); font-family: inherit; }\n}\n<\/style>\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 18px;\">Przelicza jedno tempo na drugie na potrzeby rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa dla atempo i rubberband, now\u0105 d\u0142ugo\u015b\u0107 pliku w czasie i pr\u00f3bkach, d\u0142ugo\u015bci uderze\u0144 i takt\u00f3w oraz zmian\u0119 wysoko\u015bci, jak\u0105 przynios\u0142aby zmiana pr\u0119dko\u015bci bez rozci\u0105gania w czasie (varispeed). Polecenia ffmpeg wynikaj\u0105 z pomiaru w artykule o rozci\u0105ganiu w czasie.<\/p>\n<div class=\"tu-felder\">\n<div><label for=\"tu-von\">Tempo wyj\u015bciowe (BPM)<\/label><input id=\"tu-von\" type=\"text\" inputmode=\"decimal\" value=\"128\" autocomplete=\"off\" data-mp-mask><\/div>\n<div><label for=\"tu-nach\">Tempo docelowe (BPM)<\/label><input id=\"tu-nach\" type=\"text\" inputmode=\"decimal\" value=\"124\" autocomplete=\"off\" data-mp-mask><\/div>\n<div><label for=\"tu-prozent\">Zmiana tempa (%)<\/label><input id=\"tu-prozent\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-mp-mask><\/div>\n<div><label for=\"tu-halbtoene\">P\u00f3\u0142tony (varispeed)<\/label><input id=\"tu-halbtoene\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-mp-mask><\/div>\n<\/p><\/div>\n<div class=\"tu-felder\" style=\"margin-top: 12px;\">\n<div><label for=\"tu-dauer\">D\u0142ugo\u015b\u0107 pliku (opcjonalnie)<\/label><input id=\"tu-dauer\" type=\"text\" inputmode=\"decimal\" placeholder=\"3:30\" autocomplete=\"off\" data-mp-mask><\/div>\n<div><label for=\"tu-rate\">Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<\/label><select id=\"tu-rate\"><option value=\"44100\">44100 Hz<\/option><option value=\"48000\">48000 Hz<\/option><option value=\"88200\">88200 Hz<\/option><option value=\"96000\">96000 Hz<\/option><\/select><\/div>\n<div><label for=\"tu-schlaege\">Uderzenia w takcie<\/label><input id=\"tu-schlaege\" type=\"text\" inputmode=\"numeric\" value=\"4\" autocomplete=\"off\" data-mp-mask><\/div>\n<\/p><\/div>\n<p class=\"tu-klein\" style=\"margin: 10px 0 0;\">Tempo docelowe, procent i p\u00f3\u0142tony s\u0105 powi\u0105zane: pole edytowane jako ostatnie wyznacza tempo docelowe. D\u0142ugo\u015b\u0107 w sekundach, m:ss lub h:mm:ss.<\/p>\n<div id=\"tu-fehler\" class=\"tu-fehler\" data-mp-mask hidden><\/div>\n<div id=\"tu-ausgabe\" data-mp-mask aria-live=\"polite\">\n<div id=\"tu-kacheln\" class=\"tu-kacheln\"><\/div>\n<div id=\"tu-hinweise\"><\/div>\n<div class=\"tu-h\">D\u0142ugo\u015bci<\/div>\n<div class=\"tu-tabelle\">\n<table class=\"tu-karten\">\n<thead>\n<tr>\n<th>Co<\/th>\n<th>Tempo wyj\u015bciowe<\/th>\n<th>Tempo docelowe<\/th>\n<th>Pr\u00f3bki w tempie docelowym<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"tu-laengen\"><\/tbody>\n<\/table><\/div>\n<div class=\"tu-h\">Polecenia ffmpeg<\/div>\n<div id=\"tu-befehle\"><\/div>\n<p>        <button id=\"tu-kopieren\" type=\"button\" class=\"tu-knopf\">Kopiowanie wyniku<\/button><br \/>\n        <span id=\"tu-kopiert\" class=\"tu-klein\" style=\"margin-left: 10px;\"><\/span>\n    <\/div>\n<div class=\"tu-h\">Jak przebiega obliczenie<\/div>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Wsp\u00f3\u0142czynnik tempa to tempo docelowe podzielone przez tempo wyj\u015bciowe: ze 120 na 132 BPM to tempo 1,1, ze 128 na 124 BPM to 0,96875. Plik wyd\u0142u\u017ca si\u0119 o odwrotno\u015b\u0107. Polecenia przekazuj\u0105 wsp\u00f3\u0142czynnik jako dok\u0142adny u\u0142amek, np. 124\/128; ffmpeg oblicza go jako wyra\u017cenie. atempo przyjmuje od 0,5 do 100, ale wed\u0142ug dokumentacji powy\u017cej 2 pomija pojedyncze pr\u00f3bki, dlatego narz\u0119dzie dzieli wi\u0119ksze i mniejsze wsp\u00f3\u0142czynniki na \u0142a\u0144cuch.<\/p>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Wyb\u00f3r metody wynika z pomiaru przy tempie od 0,9 do 1,1: z channels=together rubberband utrzyma\u0142 ka\u017cde uderzenie w granicach 0,48\u00a0ms od jego miejsca, a obraz stereo przy korelacji 0,92, za cen\u0119 narastania przed ka\u017cdym uderzeniem i spadk\u00f3w na r\u00f3wnych tonach. transients=smooth pozostawi\u0142 czyste tony prawie bez zmian, ale \u015bciszy\u0142 miks o 2,6 do 3,0\u00a0dB. atempo najlepiej zachowa\u0142 brzmienie i poziom, ale przesuwa\u0142 pojedyncze uderzenia nawet o 10,84\u00a0ms i uszkodzi\u0142 ton 55\u00a0Hz.<\/p>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Sprawdzono w ffmpeg 7.1.5 na 10-sekundowym sygnale testowym przy wsp\u00f3\u0142czynnikach od 0,4 do 2,5: oba polecenia rubberband trafi\u0142y w obliczon\u0105 d\u0142ugo\u015b\u0107 co do pr\u00f3bki we wszystkich siedmiu przypadkach, varispeed z dok\u0142adno\u015bci\u0105 do jednej pr\u00f3bki, a obliczon\u0105 wysoko\u015b\u0107 z dok\u0142adno\u015bci\u0105 do 0,01 p\u00f3\u0142tonu. atempo odbiega\u0142o o \u221230,4 do +8,0\u00a0ms, w zmierzonym zakresie od 0,9 do 1,1 najwy\u017cej o 4,6\u00a0ms; przy zmianie ze 128 na 124 BPM brakowa\u0142o 4,58\u00a0ms.<\/p>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Podr\u0119cznik ISRC (4. wydanie 2021, A.10.2) rozr\u00f3\u017cnia: je\u015bli nagranie zmienia d\u0142ugo\u015b\u0107 tylko przez tempo lub wyciszenie, nowy ISRC jest wymagany od r\u00f3\u017cnicy 10 sekund; poni\u017cej nagranie zachowuje kod.<\/p>\n<div class=\"tu-h\">Artyku\u0142y na ten temat<\/div>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Jak atempo i rubberband przy \u00b15 i \u00b110\u00a0% radz\u0105 sobie z timingiem, transjentami, czystymi i bogatymi w alikwoty tonami oraz obrazem stereo, mierzy artyku\u0142 \u201e<span class=\"lw-artikel-geplant\">Rozci\u0105ganie w czasie o 10 procent w atempo i rubberband<\/span>\u201d.<\/p>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Kiedy nowa wersja potrzebuje w\u0142asnego ISRC, \u0142\u0105cznie z regu\u0142\u0105 10 sekund dla zmian tempa, pokazuje poradnik \u201e<a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/music-production-pl\/tutorials-pl-music-production-pl\/metadane-wydawnictwa-isrc-upc-iswc-nadawanie-zapis-sprawdzanie-krok-po-kroku\/\">Metadane wydawnictwa 2026<\/a>\u201d.<\/p>\n<p class=\"tu-klein\" style=\"margin: 0 0 6px;\">Jak DAW w 2026 roku rozci\u0105gaj\u0105 audio do tempa projektu, z warpingiem Ableton Live jako punktem odniesienia, por\u00f3wnuje artyku\u0142 \u201e<a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/music-production-pl\/top-5-daw-2026-porownanie-fl-studio-ableton-logic-cubase-bitwig\/\">Top 5 DAW w 2026 roku<\/a>\u201d.<\/p>\n<p class=\"tu-klein\" style=\"margin: 20px 0 0;\">\u0179r\u00f3d\u0142a:<br \/>\n        <a href=\"https:\/\/ffmpeg.org\/ffmpeg-filters.html#atempo\" rel=\"noopener\">ffmpeg Filters Documentation (atempo, rubberband, asetrate)<\/a> \u00b7<br \/>\n        <a href=\"https:\/\/breakfastquay.com\/rubberband\/\" rel=\"noopener\">Rubber Band Library<\/a> \u00b7<br \/>\n        <a href=\"https:\/\/isrc.ifpi.org\/images\/downloads\/ISRC_Handbook.pdf\" rel=\"noopener\">ISRC Handbook, 4th Edition 2021, A.10.2 (IFPI)<\/a>\n    <\/p>\n<p class=\"tu-klein\" style=\"font-size: 0.8rem; margin: 14px 0 0;\">Obliczenie zak\u0142ada sta\u0142e tempo; zmiany tempa w obr\u0119bie pliku i swing nie s\u0105 uwzgl\u0119dniane. asetrate przyjmuje tylko ca\u0142e herce, wi\u0119c varispeed odbiega od dok\u0142adnej cz\u0119stotliwo\u015bci najwy\u017cej o 0,5\u00a0Hz, czyli najwy\u017cej o 0,02 centa. Kt\u00f3ra metoda brzmi lepiej, pomiar nie rozstrzyga\u0142 testem ods\u0142uchowym.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';\n    const T = {\"dezimal\":\",\",\"tausender\":\" \",\"einleitung\":\"Przelicza jedno tempo na drugie na potrzeby rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa dla atempo i rubberband, now\u0105 d\u0142ugo\u015b\u0107 pliku w czasie i pr\u00f3bkach, d\u0142ugo\u015bci uderze\u0144 i takt\u00f3w oraz zmian\u0119 wysoko\u015bci, jak\u0105 przynios\u0142aby zmiana pr\u0119dko\u015bci bez rozci\u0105gania w czasie (varispeed). Polecenia ffmpeg wynikaj\u0105 z pomiaru w artykule o rozci\u0105ganiu w czasie.\",\"f_von\":\"Tempo wyj\u015bciowe (BPM)\",\"f_nach\":\"Tempo docelowe (BPM)\",\"f_prozent\":\"Zmiana tempa (%)\",\"f_halbtoene\":\"P\u00f3\u0142tony (varispeed)\",\"f_dauer\":\"D\u0142ugo\u015b\u0107 pliku (opcjonalnie)\",\"f_rate\":\"Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania\",\"f_schlaege\":\"Uderzenia w takcie\",\"felder_hinweis\":\"Tempo docelowe, procent i p\u00f3\u0142tony s\u0105 powi\u0105zane: pole edytowane jako ostatnie wyznacza tempo docelowe. D\u0142ugo\u015b\u0107 w sekundach, m:ss lub h:mm:ss.\",\"k_faktor\":\"Wsp\u00f3\u0142czynnik tempa\",\"k_laenge\":\"Zmiana d\u0142ugo\u015bci\",\"k_tonhoehe\":\"Wysoko\u015b\u0107 przy varispeed\",\"k_dauer\":\"Nowa d\u0142ugo\u015b\u0107\",\"st\":\"pt\",\"achtung\":\"Uwaga:\",\"hinweis_gleich\":\"Oba tempa s\u0105 r\u00f3wne; nie ma czego rozci\u0105ga\u0107.\",\"hinweis_ausserhalb\":\"Zmiana o {p} le\u017cy poza zakresem zmierzonym w artykule (\u00b110\u00a0%); uwagi o metodach poni\u017cej opieraj\u0105 si\u0119 na tym zakresie.\",\"hinweis_isrc_neu\":\"D\u0142ugo\u015b\u0107 zmienia si\u0119 o {d}. Wed\u0142ug podr\u0119cznika ISRC zmiana tempa o 10\u00a0s lub wi\u0119cej wymaga nowego ISRC.\",\"hinweis_isrc_bleibt\":\"D\u0142ugo\u015b\u0107 zmienia si\u0119 o {d}. Wed\u0142ug podr\u0119cznika ISRC zmiana tempa o mniej ni\u017c 10\u00a0s zachowuje ISRC, o ile nic innego si\u0119 nie zmienia.\",\"hinweis_varispeed\":\"Varispeed, czyli zmiana pr\u0119dko\u015bci bez rozci\u0105gania w czasie jak w gramofonie, przesun\u0119\u0142aby wysoko\u015b\u0107 o {st} p\u00f3\u0142tonu ({ct} cent\u00f3w). Rozci\u0105ganie w czasie zachowuje wysoko\u015b\u0107.\",\"h_laengen\":\"D\u0142ugo\u015bci\",\"sp_was\":\"Co\",\"sp_alt\":\"Tempo wyj\u015bciowe\",\"sp_neu\":\"Tempo docelowe\",\"sp_werte\":\"Pr\u00f3bki w tempie docelowym\",\"z_schlag\":\"Jedno uderzenie\",\"z_takt\":\"Jeden takt (uderze\u0144: {n})\",\"z_vier\":\"Cztery takty\",\"z_datei\":\"Plik\",\"h_befehle\":\"Polecenia ffmpeg\",\"werte\":\"pr\u00f3bek\",\"b_schlag\":\"Perkusja i ca\u0142e miksy (liczy si\u0119 timing)\",\"b_flaeche\":\"Plamy, wokal i wytrzymane d\u017awi\u0119ki\",\"b_atempo\":\"atempo (bez sta\u0142ych uderze\u0144 i bez niskich ton\u00f3w)\",\"b_atempo_kette\":\"atempo jako \u0142a\u0144cuch (bez sta\u0142ych uderze\u0144 i bez niskich ton\u00f3w)\",\"b_varispeed\":\"Varispeed: tempo i wysoko\u015b\u0107 razem\",\"keine_befehle\":\"Przy wsp\u00f3\u0142czynniku 1 polecenie jest zb\u0119dne.\",\"knopf_kopieren\":\"Kopiowanie wyniku\",\"kopiert\":\"skopiowano\",\"kopieren_fehler\":\"kopiowanie niemo\u017cliwe\",\"bericht_kopf\":\"Przeliczenie tempa\",\"fehler_bpm\":\"Oba tempa musz\u0105 le\u017ce\u0107 mi\u0119dzy 1 a 999 BPM.\",\"fehler_dauer\":\"D\u0142ugo\u015b\u0107 jest nieczytelna; poprawne s\u0105 sekundy, m:ss lub h:mm:ss, np. 3:30 albo 210,5.\",\"fehler_schlaege\":\"Uderzenia w takcie: liczba ca\u0142kowita od 1 do 32.\",\"h_erklaerung\":\"Jak przebiega obliczenie\",\"erkl_faktor\":\"Wsp\u00f3\u0142czynnik tempa to tempo docelowe podzielone przez tempo wyj\u015bciowe: ze 120 na 132 BPM to tempo 1,1, ze 128 na 124 BPM to 0,96875. Plik wyd\u0142u\u017ca si\u0119 o odwrotno\u015b\u0107. Polecenia przekazuj\u0105 wsp\u00f3\u0142czynnik jako dok\u0142adny u\u0142amek, np. 124\\\/128; ffmpeg oblicza go jako wyra\u017cenie. atempo przyjmuje od 0,5 do 100, ale wed\u0142ug dokumentacji powy\u017cej 2 pomija pojedyncze pr\u00f3bki, dlatego narz\u0119dzie dzieli wi\u0119ksze i mniejsze wsp\u00f3\u0142czynniki na \u0142a\u0144cuch.\",\"erkl_verfahren\":\"Wyb\u00f3r metody wynika z pomiaru przy tempie od 0,9 do 1,1: z channels=together rubberband utrzyma\u0142 ka\u017cde uderzenie w granicach 0,48\u00a0ms od jego miejsca, a obraz stereo przy korelacji 0,92, za cen\u0119 narastania przed ka\u017cdym uderzeniem i spadk\u00f3w na r\u00f3wnych tonach. transients=smooth pozostawi\u0142 czyste tony prawie bez zmian, ale \u015bciszy\u0142 miks o 2,6 do 3,0\u00a0dB. atempo najlepiej zachowa\u0142 brzmienie i poziom, ale przesuwa\u0142 pojedyncze uderzenia nawet o 10,84\u00a0ms i uszkodzi\u0142 ton 55\u00a0Hz.\",\"erkl_laenge\":\"Sprawdzono w ffmpeg 7.1.5 na 10-sekundowym sygnale testowym przy wsp\u00f3\u0142czynnikach od 0,4 do 2,5: oba polecenia rubberband trafi\u0142y w obliczon\u0105 d\u0142ugo\u015b\u0107 co do pr\u00f3bki we wszystkich siedmiu przypadkach, varispeed z dok\u0142adno\u015bci\u0105 do jednej pr\u00f3bki, a obliczon\u0105 wysoko\u015b\u0107 z dok\u0142adno\u015bci\u0105 do 0,01 p\u00f3\u0142tonu. atempo odbiega\u0142o o \u221230,4 do +8,0\u00a0ms, w zmierzonym zakresie od 0,9 do 1,1 najwy\u017cej o 4,6\u00a0ms; przy zmianie ze 128 na 124 BPM brakowa\u0142o 4,58\u00a0ms.\",\"erkl_isrc\":\"Podr\u0119cznik ISRC (4. wydanie 2021, A.10.2) rozr\u00f3\u017cnia: je\u015bli nagranie zmienia d\u0142ugo\u015b\u0107 tylko przez tempo lub wyciszenie, nowy ISRC jest wymagany od r\u00f3\u017cnicy 10 sekund; poni\u017cej nagranie zachowuje kod.\",\"h_artikel\":\"Artyku\u0142y na ten temat\",\"art_ts_vor\":\"Jak atempo i rubberband przy \u00b15 i \u00b110\u00a0% radz\u0105 sobie z timingiem, transjentami, czystymi i bogatymi w alikwoty tonami oraz obrazem stereo, mierzy artyku\u0142 \u201e\",\"art_ts_titel\":\"Rozci\u0105ganie w czasie o 10 procent w atempo i rubberband\",\"art_ts_nach\":\"\u201d.\",\"art_isrc_vor\":\"Kiedy nowa wersja potrzebuje w\u0142asnego ISRC, \u0142\u0105cznie z regu\u0142\u0105 10 sekund dla zmian tempa, pokazuje poradnik \u201e\",\"art_isrc_titel\":\"Metadane wydawnictwa 2026\",\"art_isrc_nach\":\"\u201d.\",\"art_daw_vor\":\"Jak DAW w 2026 roku rozci\u0105gaj\u0105 audio do tempa projektu, z warpingiem Ableton Live jako punktem odniesienia, por\u00f3wnuje artyku\u0142 \u201e\",\"art_daw_titel\":\"Top 5 DAW w 2026 roku\",\"art_daw_nach\":\"\u201d.\",\"quellen_titel\":\"\u0179r\u00f3d\u0142a\",\"grenze\":\"Obliczenie zak\u0142ada sta\u0142e tempo; zmiany tempa w obr\u0119bie pliku i swing nie s\u0105 uwzgl\u0119dniane. asetrate przyjmuje tylko ca\u0142e herce, wi\u0119c varispeed odbiega od dok\u0142adnej cz\u0119stotliwo\u015bci najwy\u017cej o 0,5\u00a0Hz, czyli najwy\u017cej o 0,02 centa. Kt\u00f3ra metoda brzmi lepiej, pomiar nie rozstrzyga\u0142 testem ods\u0142uchowym.\"};<\/p>\n<p>    \/\/ KERN-ANFANG ------------------------------------------------------------\n    \/\/ Tempo-Umrechner: Tempo-Faktor, neue Laenge, Tonhoehe bei Varispeed und die ffmpeg-Befehle.\n    var GEMESSEN = 0.1;            \/\/ im Timestretching-Artikel gemessen: Tempo 0,9 bis 1,1\n    var ISRC_S = 10;               \/\/ ISRC-Handbuch, 4. Auflage 2021, A.10.2: ab 10 s Laengenunterschied neue ISRC\n    var MIN_BPM = 1, MAX_BPM = 999;<\/p>\n<p>    function halbtoene(f) { return 12 * Math.log(f) \/ Math.LN2; }\n    function ausHalbtoenen(st) { return Math.pow(2, st \/ 12); }<\/p>\n<p>    \/\/ Dauer als Sekunden, m:ss, h:mm:ss, jeweils mit Punkt oder Komma als Dezimaltrenner\n    function dauerLesen(s) {\n        s = String(s === undefined || s === null ? '' : s).trim().replace(',', '.');\n        if (s === '') { return null; }\n        if (!\/^\\d+(:\\d{1,2}){0,2}(\\.\\d+)?$\/.test(s)) { return NaN; }\n        var teile = s.split(':'), sek = 0, i;\n        for (i = 0; i < teile.length; i++) {\n            var v = parseFloat(teile[i]);\n            if (i > 0 && v >= 60) { return NaN; }\n            sek = sek * 60 + v;\n        }\n        return sek;\n    }\n    function zahlLesen(s) {\n        s = String(s === undefined || s === null ? '' : s).trim().replace(',', '.').replace('\u2212', '-');\n        if (s === '' || !\/^[-+]?\\d*\\.?\\d+$\/.test(s)) { return NaN; }\n        return parseFloat(s);\n    }<\/p>\n<p>    \/\/ Kurzform einer Zahl fuer Befehle: hoechstens zehn Nachkommastellen, ohne Nullen am Ende\n    function kurz(v) { return Number(v.toFixed(10)).toString(); }<\/p>\n<p>    \/\/ Tempo-Faktor als Ausdruck: exakt als Bruch, wenn beide Tempi ganze Zahlen oder kurze Dezimalzahlen sind\n    function bruch(nach, von) { return von === nach ? '1' : kurz(nach) + '\/' + kurz(von); }<\/p>\n<p>    \/\/ atempo nimmt 0,5 bis 100; ueber 2 ueberspringt es laut Dokumentation Werte, deshalb ab 2 als Kette\n    function atempoKette(f) {\n        var teile = [], rest = f;\n        while (rest > 2) { teile.push(2); rest \/= 2; }\n        while (rest < 0.5) { teile.push(0.5); rest \/= 0.5; }\n        return { teile: teile, rest: rest };\n    }\n\n    function rechnen(e) {\n        var von = e.von, nach = e.nach, schlaege = e.schlaege === undefined ? 4 : e.schlaege, rate = e.rate || 44100;\n        if (!(von >= MIN_BPM && von <= MAX_BPM) || !(nach >= MIN_BPM && nach <= MAX_BPM)) { return { fehler: 'bpm' }; }\n        if (!(schlaege >= 1 && schlaege <= 32 &#038;&#038; Math.round(schlaege) === schlaege)) { return { fehler: 'schlaege' }; }\n        var f = nach \/ von, lf = von \/ nach, r = {\n            von: von, nach: nach, faktor: f, laenge: lf, tempo_prozent: (f - 1) * 100, laenge_prozent: (lf - 1) * 100,\n            halbtoene: halbtoene(f), rate: rate, schlaege: schlaege,\n            schlag_alt_ms: 60000 \/ von, schlag_neu_ms: 60000 \/ nach,\n            takt_alt_ms: schlaege * 60000 \/ von, takt_neu_ms: schlaege * 60000 \/ nach,\n            ausserhalb: Math.abs(f - 1) > GEMESSEN + 1e-9, gleich: Math.abs(f - 1) < 1e-12\n        };\n        \/\/ vier Takte im neuen Tempo in Abtastwerten: ganzzahlig oder nicht (Schleifen)\n        r.vier_takte_werte = 4 * schlaege * 60 \/ nach * rate;\n        r.vier_takte_ganz = Math.abs(r.vier_takte_werte - Math.round(r.vier_takte_werte)) < 1e-6;\n        if (e.dauer_s !== null &#038;&#038; e.dauer_s !== undefined) {\n            if (!(e.dauer_s > 0 && e.dauer_s < 86400)) { return { fehler: 'dauer' }; }\n            r.dauer_alt_s = e.dauer_s;\n            r.dauer_neu_s = e.dauer_s * lf;\n            r.dauer_diff_s = r.dauer_neu_s - e.dauer_s;\n            r.werte_alt = Math.round(e.dauer_s * rate);\n            r.werte_neu = Math.round(r.werte_alt * lf);\n            r.isrc_neu = Math.abs(r.dauer_diff_s) >= ISRC_S;\n        }\n        \/\/ Varispeed: asetrate nimmt eine ganze Zahl, damit weicht der Faktor minimal ab\n        r.asetrate = Math.round(rate * f);\n        r.varispeed_faktor = r.asetrate \/ rate;\n        return r;\n    }<\/p>\n<p>    function befehle(r) {\n        if (!r || r.fehler || r.gleich) { return null; }\n        var t = bruch(r.nach, r.von), k = atempoKette(r.faktor), at;\n        if (!k.teile.length) { at = 'atempo=' + t; }\n        else { at = k.teile.map(function (x) { return 'atempo=' + x; }).concat(['atempo=' + kurz(k.rest)]).join(','); }\n        function ff(filter) { return 'ffmpeg -i ein.wav -af \"' + filter + '\" aus.wav'; }\n        return {\n            schlag: ff('rubberband=tempo=' + t + ':channels=together'),\n            flaeche: ff('rubberband=tempo=' + t + ':transients=smooth:channels=together'),\n            atempo: ff(at),\n            varispeed: ff('asetrate=' + r.asetrate + ',aresample=' + r.rate),\n            kette: k.teile.length > 0\n        };\n    }\n    \/\/ KERN-ENDE --------------------------------------------------------------<\/p>\n<p>    function el(id) { return document.getElementById(id); }\n    var NB = ' ';\n    function satz(k, w) { return (T[k] || '').replace(\/\\{(\\w+)\\}\/g, function (_, x) { return w && w[x] !== undefined ? w[x] : ''; }); }\n    function zahl(v, st) {\n        if (v === null || v === undefined || !isFinite(v)) { return '\u2013'; }\n        var s = Number(v).toFixed(st === undefined ? 2 : st);\n        if (\/^-0(\\.0+)?$\/.test(s)) { s = s.slice(1); }\n        s = s.replace('-', '\u2212');\n        return T.dezimal === ',' ? s.replace('.', ',') : s;\n    }\n    function vorz(v, st) { var s = zahl(v, st); return isFinite(v) && Number(Number(v).toFixed(st)) > 0 ? '+' + s : s; }\n    function tausend(n) { return String(n).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, T.tausender); }\n    function dauer(s) {\n        var h = Math.floor(s \/ 3600), m = Math.floor((s - 3600 * h) \/ 60), r = s - 3600 * h - 60 * m;\n        var rs = zahl(r, 3); if (r < 10) { rs = '0' + rs; }\n        return (h ? h + ':' + (m < 10 ? '0' : '') : '') + m + ':' + rs;\n    }\n    function ms(v) { return zahl(v, v >= 1000 ? 1 : 2) + NB + 'ms'; }<\/p>\n<p>    \/\/ gekoppelte Felder: das zuletzt bearbeitete von Zieltempo, Prozent und Halbtoenen bestimmt das Zieltempo\n    var fuehrt = 'nach', letztes = null;\n    function eingaben() {\n        var von = zahlLesen(el('tu-von').value), nach;\n        if (fuehrt === 'prozent') { nach = von * (1 + zahlLesen(el('tu-prozent').value) \/ 100); }\n        else if (fuehrt === 'halbtoene') { nach = von * ausHalbtoenen(zahlLesen(el('tu-halbtoene').value)); }\n        else { nach = zahlLesen(el('tu-nach').value); }\n        return { von: von, nach: nach, dauer_s: dauerLesen(el('tu-dauer').value), rate: parseInt(el('tu-rate').value, 10),\n            schlaege: zahlLesen(el('tu-schlaege').value) };\n    }<\/p>\n<p>    function zeile(t, werte) {\n        var tr = document.createElement('tr'), namen = [T.sp_was, T.sp_alt, T.sp_neu, T.sp_werte];\n        werte.forEach(function (w, i) {\n            var td = document.createElement('td');\n            if (i > 0) { td.className = 'tu-wert'; td.setAttribute('data-name', namen[i]); }\n            td.textContent = w; tr.appendChild(td);\n        });\n        t.appendChild(tr);\n    }\n    function kachel(name, wert) {\n        var d = document.createElement('div'); d.className = 'tu-kachel';\n        var a = document.createElement('div'); a.className = 'tu-kachel-name'; a.textContent = name;\n        var b = document.createElement('div'); b.className = 'tu-kachel-wert'; b.textContent = wert;\n        d.appendChild(a); d.appendChild(b);\n        return d;\n    }\n    function hinweis(text, warn) {\n        var d = document.createElement('div'); d.className = 'tu-hinweis';\n        if (warn) { var s = document.createElement('strong'); s.textContent = warn + ' '; d.appendChild(s); }\n        d.appendChild(document.createTextNode(text));\n        el('tu-hinweise').appendChild(d);\n    }<\/p>\n<p>    function darstellen(r, e) {\n        var f = el('tu-fehler'), aus = el('tu-ausgabe');\n        ['tu-von', 'tu-nach', 'tu-prozent', 'tu-halbtoene', 'tu-dauer', 'tu-schlaege'].forEach(function (id) { el(id).classList.remove('tu-falsch'); });\n        if (r.fehler) {\n            f.textContent = T['fehler_' + r.fehler]; f.hidden = false; aus.hidden = true;\n            el({ bpm: fuehrt === 'nach' ? 'tu-nach' : 'tu-' + fuehrt, dauer: 'tu-dauer', schlaege: 'tu-schlaege' }[r.fehler]).classList.add('tu-falsch');\n            if (r.fehler === 'bpm' && !(e.von >= MIN_BPM && e.von <= MAX_BPM)) { el('tu-von').classList.add('tu-falsch'); }\n            letztes = null;\n            return r;\n        }\n        f.hidden = true; aus.hidden = false;\n        \/\/ die nicht fuehrenden Felder nachziehen\n        if (fuehrt !== 'nach') { el('tu-nach').value = zahl(r.nach, 3).replace(\/[.,]?0+$\/, ''); }\n        if (fuehrt !== 'prozent') { el('tu-prozent').value = zahl(r.tempo_prozent, 3).replace(\/[.,]?0+$\/, '').replace('\u2212', '-'); }\n        if (fuehrt !== 'halbtoene') { el('tu-halbtoene').value = zahl(r.halbtoene, 3).replace(\/[.,]?0+$\/, '').replace('\u2212', '-'); }\n        var k = el('tu-kacheln');\n        k.textContent = '';\n        k.appendChild(kachel(T.k_faktor, zahl(r.faktor, 5)));\n        k.appendChild(kachel(T.k_laenge, vorz(r.laenge_prozent, 2) + NB + '%'));\n        k.appendChild(kachel(T.k_tonhoehe, vorz(r.halbtoene, 2) + NB + T.st));\n        k.appendChild(kachel(T.k_dauer, r.dauer_neu_s !== undefined ? dauer(r.dauer_neu_s) : '\u2013'));\n        el('tu-hinweise').textContent = '';\n        if (r.gleich) { hinweis(T.hinweis_gleich); }\n        if (r.ausserhalb) { hinweis(satz('hinweis_ausserhalb', { p: vorz(r.tempo_prozent, 1) + NB + '%' }), T.achtung); }\n        if (r.dauer_neu_s !== undefined) {\n            hinweis(satz(r.isrc_neu ? 'hinweis_isrc_neu' : 'hinweis_isrc_bleibt', { d: vorz(r.dauer_diff_s, 2) + NB + 's' }), r.isrc_neu ? T.achtung : '');\n        }\n        hinweis(satz('hinweis_varispeed', { st: vorz(r.halbtoene, 2), ct: vorz(r.halbtoene * 100, 0) }));\n        var t = el('tu-laengen');\n        t.textContent = '';\n        zeile(t, [T.z_schlag, ms(r.schlag_alt_ms), ms(r.schlag_neu_ms), tausend(Math.round(r.schlag_neu_ms * r.rate \/ 1000))]);\n        zeile(t, [satz('z_takt', { n: r.schlaege }), ms(r.takt_alt_ms), ms(r.takt_neu_ms), tausend(Math.round(r.takt_neu_ms * r.rate \/ 1000))]);\n        zeile(t, [T.z_vier, ms(4 * r.takt_alt_ms), ms(4 * r.takt_neu_ms),\n            (r.vier_takte_ganz ? '' : '\u2248 ') + tausend(Math.round(r.vier_takte_werte))]);\n        if (r.dauer_neu_s !== undefined) { zeile(t, [T.z_datei, dauer(r.dauer_alt_s), dauer(r.dauer_neu_s), tausend(r.werte_neu)]); }\n        var b = befehle(r), bb = el('tu-befehle');\n        bb.textContent = '';\n        if (b) {\n            [['b_schlag', b.schlag], ['b_flaeche', b.flaeche], [b.kette ? 'b_atempo_kette' : 'b_atempo', b.atempo], ['b_varispeed', b.varispeed]].forEach(function (x) {\n                var n = document.createElement('div'); n.className = 'tu-befehl-name'; n.textContent = T[x[0]];\n                var c = document.createElement('div'); c.className = 'tu-befehl'; c.textContent = x[1];\n                bb.appendChild(n); bb.appendChild(c);\n            });\n        } else {\n            var p = document.createElement('p'); p.className = 'tu-klein'; p.textContent = T.keine_befehle; bb.appendChild(p);\n        }\n        letztes = r;\n        return r;\n    }\n\n    function aktualisieren() { var e = eingaben(); return darstellen(rechnen(e), e); }\n\n    function bericht(r) {\n        if (!r) { return ''; }\n        var z = [T.bericht_kopf + ': ' + zahl(r.von, 3).replace(\/[.,]?0+$\/, '') + ' \u2192 ' + zahl(r.nach, 3).replace(\/[.,]?0+$\/, '') + ' BPM'];\n        z.push(T.k_faktor + ': ' + zahl(r.faktor, 6) + ' | ' + T.k_laenge + ': ' + vorz(r.laenge_prozent, 3) + ' % | ' + T.k_tonhoehe + ': ' + vorz(r.halbtoene, 3) + ' ' + T.st);\n        if (r.dauer_neu_s !== undefined) { z.push(T.z_datei + ': ' + dauer(r.dauer_alt_s) + ' \u2192 ' + dauer(r.dauer_neu_s) + ' (' + r.werte_neu + ' ' + T.werte + ')'); }\n        var b = befehle(r);\n        if (b) { z.push(b.schlag, b.flaeche, b.atempo, b.varispeed); }\n        return z.join('\\n');\n    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.TU = { T: T, rechnen: rechnen, befehle: befehle, dauerLesen: dauerLesen, zahlLesen: zahlLesen, atempoKette: atempoKette,\n        aktualisieren: aktualisieren, bericht: bericht, fuehren: function (x) { fuehrt = x; }, letztes: function () { return letztes; } };\n\n    if (!el('tu-von')) { return; }\n    el('tu-nach').addEventListener('input', function () { fuehrt = 'nach'; aktualisieren(); });\n    el('tu-prozent').addEventListener('input', function () { fuehrt = 'prozent'; aktualisieren(); });\n    el('tu-halbtoene').addEventListener('input', function () { fuehrt = 'halbtoene'; aktualisieren(); });\n    ['tu-von', 'tu-dauer', 'tu-schlaege'].forEach(function (id) { el(id).addEventListener('input', aktualisieren); });\n    el('tu-rate').addEventListener('change', aktualisieren);\n    var kop = el('tu-kopieren'), kopiert = el('tu-kopiert');\n    kop.addEventListener('click', function () {\n        var t = bericht(letztes);\n        if (!t) { return; }\n        if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) {\n            navigator.clipboard.writeText(t).then(function () { kopiert.textContent = T.kopiert; }, function () { kopiert.textContent = T.kopieren_fehler; });\n        } else { kopiert.textContent = T.kopieren_fehler; }\n    });\n    aktualisieren();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Przelicza tempo wyj\u015bciowe na docelowe na potrzeby rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa dla atempo i rubberband, nowa d\u0142ugo\u015b\u0107 w czasie i pr\u00f3bkach, d\u0142ugo\u015bci uderze\u0144 i takt\u00f3w, zmiana wysoko\u015bci przy varispeed i regu\u0142a ISRC dla zmian d\u0142ugo\u015bci, z poleceniami ffmpeg opartymi na pomiarze.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92906],"class_list":["post-20347","page","type-page","status-publish","hentry","tag-music-production-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - 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\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Przelicza tempo wyj\u015bciowe na docelowe na potrzeby rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa dla atempo i rubberband, nowa d\u0142ugo\u015b\u0107 w czasie i pr\u00f3bkach, d\u0142ugo\u015bci uderze\u0144 i takt\u00f3w, zmiana wysoko\u015bci przy varispeed i regu\u0142a ISRC dla zmian d\u0142ugo\u015bci, z poleceniami ffmpeg opartymi na pomiarze.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/tempo-converter-time-stretch-factor-length-pitch\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/tempo-converter-time-stretch-factor-length-pitch\\\/\",\"name\":\"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-24T09:13:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/tempo-converter-time-stretch-factor-length-pitch\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/tempo-converter-time-stretch-factor-length-pitch\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/tempo-converter-time-stretch-factor-length-pitch\\\/#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-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107\"}]},{\"@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":"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - 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\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/","og_locale":"en_US","og_type":"article","og_title":"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - Lukas Wojcik - Blog","og_description":"Przelicza tempo wyj\u015bciowe na docelowe na potrzeby rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa dla atempo i rubberband, nowa d\u0142ugo\u015b\u0107 w czasie i pr\u00f3bkach, d\u0142ugo\u015bci uderze\u0144 i takt\u00f3w, zmiana wysoko\u015bci przy varispeed i regu\u0142a ISRC dla zmian d\u0142ugo\u015bci, z poleceniami ffmpeg opartymi na pomiarze.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/","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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/","name":"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107 - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-24T09:13:01+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/tempo-converter-time-stretch-factor-length-pitch\/#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-3\/"},{"@type":"ListItem","position":3,"name":"Przelicznik tempa do rozci\u0105gania w czasie: wsp\u00f3\u0142czynnik tempa, nowa d\u0142ugo\u015b\u0107 i wysoko\u015b\u0107"}]},{"@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\/20347","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=20347"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/20347\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=20347"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=20347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}