Rozciąganie czasu: tempo, rytm i brzmienie

Management Summary
Rozciąganie czasu przyspiesza lub zwalnia nagranie, starając się zachować wysokość dźwięków. W produkcji muzycznej pozwala dopasować materiał do innego tempa bez zmiany melodii. Wybór metody ma znaczenie, ponieważ uderzenia perkusji, długie dźwięki i relacja lewej oraz prawej strony mogą zmieniać się w różny sposób. Porównanie wyjaśnia, dlaczego jedno ustawienie nie pasuje do każdego nagrania, a dokładne położenie dźwięków w czasie nie wystarcza do oceny brzmienia.
Spis treści
Rozciąganie czasu zmienia tempo nagrania, starając się zachować wysokość dźwięku. Pomiar objął dwa filtry FFmpeg i syntetyczne sygnały testowe: atempo oraz rubberband. Wyniki mocno zależą od sygnału i ustawień. Te pomiary nie wskazują ogólnego zwycięzcy pod względem brzmienia.
Tempo to nie długość: Współczynnik 0,9 zmienia 120 BPM na 108 BPM. Nagranie staje się wtedy teoretycznie o 11,11 procent dłuższe. Współczynnik 1,1 daje 132 BPM i nagranie krótsze o 9,09 procent. BPM oznacza uderzenia na minutę. Pary wartości w tabelach dotyczą tempa 0,9 / 1,1.

Co obejmował pomiar
Archiwalna seria korzystała z FFmpeg 7.1.5, Rubber Band Library 3.3.0, częstotliwości próbkowania 44,1 kHz i wyjścia 32-bit float. Wyniki opisują te wersje i sygnały. Nie przeprowadzono testu odsłuchowego.
- Czas: 20 krótkich kliknięć co 0,5 sekundy. Sprawdzono długość wyjścia, wykryte kliknięcia i przesunięcie w czasie.
- Uderzenia: łącznie dwanaście pojedynczych uderzeń, na przemian sześć stóp i sześć werbli. Zmienne odstępy pozwoliły umieścić uderzenia w różnych miejscach przetwarzanych fragmentów. Krzywa poziomu wygładzona w oknie 3 ms opisuje narastanie. Za początek przyjęto pierwsze osiągnięcie 50 procent szczytu tej krzywej dla danego uderzenia.
- Tony: pięciosekundowe sinusoidy 110, 440 i 1760 Hz oraz tony piłokształtne 55, 110, 220 i 440 Hz. Oprócz tempa 0,9 i 1,1 sprawdzono 0,95 oraz 1,05. Sinusoida zawiera jedną częstotliwość, a piła również wiele harmonicznych.
- Stereo: syntetyczne miksy o długości 16 sekund z perkusją, basem, padem i partią prowadzącą. Składniki losowe i fazy początkowe różnią się między przebiegami. Tabela porównuje więc podobne miksy testowe, a nie jeden identyczny plik wejściowy we wszystkich próbach.
atempo łączy nakładające się fragmenty dźwięku w możliwie podobnych miejscach. Ta metoda nazywa się WSOLA. Przy 44,1 kHz sprawdzony kod używa okien po 2048 próbek, czyli około 46,4 ms. rubberband korzysta z Rubber Band Library i reguł obsługi szybkich początków dźwięku, zwanych transjentami.
Czas: przesunięcie i pozostały błąd to różne wielkości
Druga kolumna liczbowa pokazuje medianę przesunięć kliknięć, czyli środek uporządkowanych wyników. Ostatnia kolumna przedstawia inną wielkość: największy pozostały błąd pozycji dwunastu uderzeń po odjęciu tego przesunięcia kliknięć. Błąd 0,58 ms nie oznacza więc trafienia w pierwotny czas docelowy z dokładnością do 0,58 ms.
| Metoda | Błąd długości, 0,9 / 1,1 | Mediana przesunięć kliknięć, 0,9 / 1,1 | Największy pozostały błąd uderzenia po korekcie przesunięcia, 0,9 / 1,1 |
|---|---|---|---|
atempo |
−26,6 / −20,7 ms | −15,2 / −19,9 ms | 10,84 / 8,35 ms |
rubberband, domyślnie (crisp) |
0,0 / 0,0 ms | −3,7 / +3,0 ms | 0,40 / 0,58 ms |
rubberband, transients=mixed |
0,0 / 0,0 ms | −3,7 / +3,0 ms | 1,50 / 2,04 ms |
rubberband, transients=smooth |
0,0 / 0,0 ms | −4,2 / +3,7 ms | 0,39 / 0,56 ms |
rubberband, window=long |
0,0 / 0,0 ms | −7,3 / +5,7 ms | 0,78 / 0,57 ms |
rubberband, channels=together |
0,0 / 0,0 ms | −3,6 / +3,0 ms | 0,37 / 0,52 ms |
Pozostałe błędy uderzeń przeliczono z archiwalnego audio, używając właściwego wejścia dla każdego przebiegu. Wcześniejsza analiza korzystała ze wspólnego odniesienia werbla, mimo różnych składników losowych. Dlatego część wartości czasu się zmienia. Zmiany szczytów dotyczą obwiedni wygładzonej w oknie 0,25 ms, a nie surowych szczytów próbek. Początek i poziomy przed początkiem korzystają z okna 3 ms.
Wartości ujemne oznaczają krótszy czas lub wcześniejszą pozycję niż cel obliczeniowy. Wykryto wszystkie 20 kliknięć. Długość wyjścia rubberband różniła się od celu o mniej niż jedną próbkę; 0,0 ms w tabeli to wynik zaokrąglenia. Mediany kliknięć znajdowały się jednak około 3,0–7,3 ms przed celem lub za celem, zależnie od ustawienia.
W atempo sekwencja kliknięć była za krótka o około 21–27 ms. Mediana wypadała około 15–20 ms przed celem. Po odjęciu tej mediany błędy uderzeń nadal sięgały odpowiednio 10,84 i 8,35 ms. To dwie różne wielkości. Mediana kliknięć nie dowodzi też, że każdy fragment muzyki przesuwa się o stałą wartość.
Początki uderzeń i poziomy szczytowe
Zmiany szczytów są średnimi z sześciu uderzeń danego dźwięku, a nie granicą dla każdego pojedynczego uderzenia. Ostatnie kolumny pokazują najwyższy poziom spośród dwunastu uderzeń, zmierzony 10 lub 20 ms przed własnym początkiem na poziomie 50 procent. W tych kolumnach 0 dB oznacza szczyt własnej wygładzonej krzywej danego uderzenia.
| Metoda | Średnia zmiana szczytu obwiedni stopy, 0,9 / 1,1 | Średnia zmiana szczytu obwiedni werbla, 0,9 / 1,1 | Poziom 10 ms przed początkiem, 0,9 / 1,1 | Poziom 20 ms przed początkiem, 0,9 / 1,1 |
|---|---|---|---|---|
atempo |
−0,11 / −0,20 dB | −0,24 / −0,06 dB | −24,8 / −39,6 dB | dolna granica analizy (−240 dB) |
rubberband, domyślnie (crisp) |
−1,43 / −0,67 dB | −1,99 / −1,75 dB | −22,8 / −16,3 dB | −35,9 / −29,3 dB |
rubberband, transients=mixed |
−0,90 / −1,64 dB | −0,54 / −1,82 dB | −14,5 / −12,3 dB | −25,6 / −20,6 dB |
rubberband, transients=smooth |
−0,73 / −1,28 dB | −0,88 / −1,60 dB | −20,3 / −14,9 dB | −33,1 / −30,4 dB |
rubberband, window=long |
−1,15 / −1,14 dB | −1,77 / −1,61 dB | −14,1 / −14,7 dB | −20,0 / −17,1 dB |
rubberband, channels=together |
−0,93 / −1,31 dB | −1,63 / −1,19 dB | −21,4 / −17,9 dB | −33,8 / −34,3 dB |
W rubberband sygnał jest obecny już przed tak zdefiniowanym początkiem. Szczególnie window=long osiąga nawet −17,1 dB na 20 ms wcześniej. To opis rozmycia narastania w czasie. W atempo wartość dla 20 ms znajdowała się na dolnej granicy analizy, czyli −240 dB. Procedura ogranicza tam bardzo małe wartości; „całkowity brak sygnału” byłby mocniejszym twierdzeniem.
Małe średnie straty szczytów w atempo nie dotyczą każdego uderzenia. Jeden werbel stracił około 0,86 dB przy tempie 0,9. Średnie dla rubberband również ukrywają większe pojedyncze straty. Wykres przedstawia jeden wybrany werbel i nie zastępuje całej serii.
Sinusoidy: krótkie spadki poziomu
RMS opisuje poziom skuteczny krótkiego fragmentu sygnału. Tutaj najmniejszą wartość RMS w oknie 10 ms porównano z medianą tych wartości, pomijając pierwszą i ostatnią sekundę. −11,5 dB oznacza, że najcichszy badany fragment znalazł się 11,5 dB poniżej typowego poziomu. Krótkie okno RMS może wykazywać niewielkie wahania także w oryginalnej sinusoidzie.
| Metoda | Sinus 110 Hz, 0,9 / 1,1 | Sinus 440 Hz, 0,9 / 1,1 | Sinus 1760 Hz, 0,9 / 1,1 |
|---|---|---|---|
atempo |
−0,4 / −0,4 dB | −0,1 / −0,1 dB | 0,0 / 0,0 dB |
rubberband, domyślnie (crisp) |
−1,7 / −2,0 dB | −4,4 / −7,4 dB | −7,6 / −11,5 dB |
rubberband, transients=mixed |
−1,7 / −2,0 dB | −0,1 / −0,2 dB | −7,6 / −11,5 dB |
rubberband, transients=smooth |
−0,3 / −0,3 dB | −0,1 / −0,1 dB | −0,1 / −2,7 dB |
Domyślne ustawienie crisp daje wyraźne spadki przy kilku częstotliwościach. smooth zwykle zmniejsza spadki, ale nie usuwa wszystkich: przy 1760 Hz i tempie 1,1 pozostaje −2,7 dB. mixed pomaga w tej tabeli przy 440 Hz, ale nie przy wszystkich trzech częstotliwościach.
Dokumentacja producenta opisuje różne reguły resetowania faz. Seria pomiarowa nie zapisuje tych wewnętrznych zdarzeń. Nie ustala więc pewnej przyczyny każdego spadku. Brakuje również odsłuchu oceniającego słyszalność zmian.
Tony piłokształtne: energia poza obszarami harmonicznych
Harmoniczne leżą przy wielokrotnościach częstotliwości podstawowej. Analiza obejmuje dwusekundowy fragment z oknem Blackmana, które ścisza brzegi na potrzeby analizy częstotliwości. W paśmie od 50 Hz do 18 kHz pominięto wąskie obszary wokół oszacowanych harmonicznych. Pozostałą energię podzielono przez całkowitą energię w tym paśmie. Powstaje udział energii resztkowej, a nie bezpośrednia ocena brzmienia.
Pierwszy wiersz tabeli podaje ten udział w oryginale w dB. Kolejne wiersze pokazują zmianę względem oryginału. Przykład: −50,1 dB plus 40,3 dB daje około −9,8 dB. Nie oznacza to tonu głośniejszego o 40,3 dB ani ogólnie „o 40,3 dB więcej słyszalnych zniekształceń”.
| Metoda, tempo 0,9 | 55 Hz | 110 Hz | 220 Hz | 440 Hz |
|---|---|---|---|---|
| Udział energii resztkowej oryginału | −50,1 dB | −47,1 dB | −43,9 dB | −41,0 dB |
atempo |
+40,3 dB | +1,4 dB | +10,5 dB | +3,4 dB |
rubberband, domyślnie (crisp) |
+40,7 dB | +41,4 dB | +37,2 dB | +28,8 dB |
rubberband, transients=mixed |
+40,8 dB | +41,0 dB | +24,8 dB | +23,3 dB |
rubberband, transients=smooth |
+26,1 dB | +4,2 dB | +10,5 dB | +15,3 dB |
atempo wyraźnie wyróżnia się przy 55 Hz i tempie 0,9. Przy 110 Hz wynik jest znacznie bliższy oryginałowi. Również smooth nie wygrywa w każdej kolumnie. Wynik zależy od długości okna, oszacowania częstotliwości podstawowej i pomijanych obszarów. Poszerzenie lub przesunięcie linii widma może zwiększać udział resztkowy. Nie zmierzono konkretnej wewnętrznej przyczyny.
Kanały stereo, poziom i czas obliczeń
Korelacja opisuje tutaj podobieństwo przebiegu lewego i prawego sygnału. Wartość +1 oznacza takie same przebiegi, ewentualnie przy różnych poziomach. −1 oznacza przeciwne przebiegi; po zsumowaniu część sygnału może się znosić. Przed obróbką wartość wynosiła około 0,918–0,921, zależnie od miksu testowego. Podobna wartość po obróbce sama nie dowodzi zachowania obrazu stereo ani dobrego brzmienia w mono.
| Metoda | Podobieństwo kanałów po obróbce, 0,9 / 1,1 | Zmiana RMS, 0,9 / 1,1 | Długość wejścia / czas obliczeń, 0,9 / 1,1 |
|---|---|---|---|
atempo |
0,922 / 0,919 | −0,03 / −0,05 dB | 26,0 / 18,9 raza |
rubberband, domyślnie (crisp) |
0,894 / 0,903 | −0,55 / −0,65 dB | 6,5 / 6,9 raza |
rubberband, transients=mixed |
0,749 / 0,757 | −1,10 / −1,34 dB | 5,6 / 7,1 raza |
rubberband, transients=smooth |
0,531 / 0,495 | −2,61 / −2,95 dB | 5,0 / 5,5 raza |
rubberband, window=long |
0,906 / 0,909 | −0,44 / −0,71 dB | 3,7 / 6,2 raza |
rubberband, channels=together |
0,920 / 0,919 | −0,55 / −0,65 dB | 5,1 / 4,7 raza |
rubberband, smooth i together |
0,911 / 0,912 | −2,66 / −3,03 dB | 5,0 / 7,4 raza |
rubberband, mixed i together |
0,940 / 0,935 | −1,12 / −1,35 dB | 5,5 / 8,1 raza |
channels=together silniej wiąże przetwarzanie kanałów. W sprawdzonych kombinacjach wartości przekraczały 0,91. To przydatny wariant do porównania materiału stereo, a nie ogólna gwarancja jakości. Miernik korelacji stereo i mid/side wspiera kontrolę techniczną. Nadal potrzebne jest porównanie odsłuchowe w stereo i mono.
Kolumna poziomu przedstawia zmianę RMS, a nie głośność zmierzoną w LUFS. Na przykład −3 dB RMS nie oznacza automatycznie, że podniesienie całości o 3 dB jest bezpieczne: szczyty mogą stać się zbyt wysokie. Po zmianie poziomu potrzebny jest ponowny pomiar szczytów i głośności.
Wskaźnik szybkości to 16 sekund wejścia podzielone przez najkrótszy z trzech czasów działania procesu na Raspberry Pi 4. Wynik obejmuje operacje plikowe i wpływ zmiennego obciążenia komputera. Opisuje te próby, a nie gwarantowaną szybkość dla dowolnych plików lub projektu z wieloma równoczesnymi efektami.
Wnioski praktyczne
Dla materiału rytmicznego warto porównać rubberband z channels=together oraz atempo. Znaczenie mają zarówno rzeczywiste pozycje uderzeń, jak i kształt narastania. Dla długich tonów kolejnym wariantem jest transients=smooth. Pomiary nie uzasadniają stałej rekomendacji dla wokalu: głosy, nagrania akustyczne i pogłos nie były testowane.
Kalkulator BPM i czasu delay pomaga obliczyć długości nut i opóźnienia dla nowego tempa. Wybraną obróbkę nadal trzeba sprawdzić na rzeczywistym materiale dźwiękowym.
Pytania i odpowiedzi
Czy oddzielnie przetwarzane ścieżki pozostaną zsynchronizowane?
Ten sam współczynnik tempa i te same opcje tego nie gwarantują. Przetwarzanie reaguje na zawartość każdej ścieżki. Z różnicy przesunięć kliknięć dla dwóch ustawień nie wynika więc stała różnica dla dowolnej perkusji i pada. Kliknięcie na początku sprawdza tylko początek, a nie całe nagranie.
Powiązane ścieżki mikrofonowe wymagają obróbki wspólnie zachowującej wzajemne położenie w czasie, na przykład przeznaczonej do tego funkcji grupowej w programie audio. Następnie potrzebna jest kontrola wspólnych zdarzeń na początku, w środku i na końcu oraz wspólnego brzmienia w mono.
Czy window=long zmniejsza sygnał przed uderzeniem?
Nie w tym pomiarze: największa wartość 20 ms przed początkiem wynosiła −17,1 dB. Odpowiednie maksima dla crisp, smooth i channels=together były niższe. Wynik dotyczy badanych uderzeń i ustawień.
Czy porównanie obejmuje silnik R3?
Nie. Sprawdzony kod FFmpeg 7.1 uruchamia Rubber Band w trybie czasu rzeczywistego i nie ma osobnego wyboru silnika. Bez flagi R3 używany jest R2. Inne integracje i późniejsze wersje FFmpeg wymagają oddzielnej kontroli. Zmierzone przesunięcia nie są uniwersalnymi wartościami opóźnienia biblioteki.