Hi‑End vinyl digitalizálás · Linux workflow

Bakelittől a FLAC-ig

Teljes útmutató: Ubuntu Studio dual‑boot telepítéstől a kalibrált, veszteségmentes lemezfelvételig — pontosan úgy, ahogy megépítettük.

01 · analógPioneer PL‑200
02 · riaaFosi phono előfok
03 · ad/daBehringer UMC204HD
04 · linuxUbuntu Studio · ALSA
05 · archívum192 kHz / 32 bit FLAC

Tartalom

  1. A rendszer és a cél
  2. Ubuntu Studio dual‑boot telepítés
  3. GRUB: Windows legyen az alapértelmezett
  4. Hardver bekötése
  5. Miért nem látta a rendszer a hangkártyát?
  6. Az első teszt‑felvétel
  7. Stabilitás: alvás és USB autosuspend
  8. A rögzítési munkafolyamat
  9. Minőség‑ellenőrzés
  10. Csatorna‑kiegyenlítés és normalizálás
  11. Zeneszámokra vágás
  12. FLAC konvertálás
  13. Fájlmegosztás és webre töltés
  14. Parancs‑gyűjtemény
01

A rendszer és a cél

A cél egy régi bakelit lemez digitalizálása volt, amilyen jó minőségben csak lehetséges, meglévő, 40–45 éves hi‑fi lánccal indulva:

A lánc gyenge pontja tudottan a Fosi és az FF15 — de a cél az volt, hogy induljunk el ezzel, és a digitalizáló oldalt (interfész, szoftver, workflow) építsük fel hi‑end szinten.

02

Ubuntu Studio dual‑boot telepítés

A Windows 11 mellé natív (nem virtuális gépes!) dual‑bootban települt az Ubuntu Studio — ez fontos, mert a valós idejű, alacsony‑latency audio‑rögzítéshez natív hardveres hozzáférés kell, VM‑es passthrough‑val ez megbízhatatlan.

1. Hely felszabadítása Windows alatt

Lemezkezelés → C: meghajtó → Kötet zsugorítása. Ha a Windows kevesebb szabad helyet enged zsugorítani, mint amennyi ténylegesen szabad, ennek tipikus okai:

# Hibernálás kikapcsolása (felszabadítja a hiberfil.sys helyét)
powercfg /h off

# Lemez‑töredezettségmentesítés, hogy a szabad hely összefüggő legyen
# (Start menü → "Lemezek töredezettségmentesítése és optimalizálása")

2. BitLocker és gyors indítás

Dual boot előtt érdemes ellenőrizni a BitLocker állapotát:

manage-bde -status C:
Ha a kimenetben Protection Status: Protection Off és Key Protectors: None Found szerepel, nincs aktív titkosítás — a particionálás biztonságos, nincs szükség helyreállítási kulcsra.

A Gyors indítás kikapcsolása is ajánlott (Vezérlőpult → Energiagazdálkodás), mert enélkül a Windows nem zárja le teljesen a fájlrendszert kikapcsoláskor, ami dual boot esetén hibát okozhat.

3. Telepítő USB elkészítése

Az Ubuntu Studio ISO‑t ubuntustudio.org/download-ról, a Rufus-t rufus.ie-ről töltve, majd Rufus‑szal írva egy min. 8 GB‑os pendrive‑ra vagy SD‑kártyára (utóbbihoz USB‑kártyaolvasó kellett).

4. Telepítés

Boot menü (a ProBook‑on F9 vagy ESC) → telepítő indítás → nyelv: Magyar, billentyűzet: Hungarian → particionálásnál „Telepítés Windows mellé” — ez automatikusan a felszabadított, particionálatlan helyre teszi az új rendszert, a Windows partíciót nem bántja.

03

GRUB: Windows legyen az alapértelmezett

Alapból a GRUB az Ubuntu‑t indítja el automatikusan, gyors, elrejtett menüvel. Ha inkább Windows induljon automatikusan, de a menü is látszódjon és válaszható legyen:

sudo nano /etc/default/grub

Állítsd be ezeket az értékeket:

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=-1
GRUB_DISABLE_OS_PROBER=false

A GRUB_TIMEOUT=-1 azt jelenti: a menü végtelenig vár, amíg kézzel nem választasz — nincs automatikus időzített indítás.

A Windows előre hozása a listában

Alapból az os-prober (ami megtalálja a Windows Boot Managert) később fut le, mint a natív Linux‑bejegyzések generálása, ezért kerül a lista végére. Az átnevezéssel előrébb hozható:

sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-prober
sudo update-grub

Az update-grub kimenetében meg kell jelennie egy Found Windows Boot Manager on ... sornak — ez a megerősítés, hogy sikerült a felismerés.

04

Hardver bekötése

A UMC204HD bemenetei

A UMC204HD két bemenete Neutrik combo aljzat (XLR + 6,35 mm jack egyben, egy foglalatban) — ide XLR mikrofon vagy jack dugó is köthető, a kettő nem egyszerre. A Fosi RCA kimenetéhez tehát egy átalakító kábel kellett:

2× RCA – 2× 6,35 mm mono (TS) jack kábelnem egyetlen sztereó jack, mert a UMC két bemenete két teljesen független mono csatorna.
Fosi kimenetSzínUMC bemenet
Bal (Left)Fehér1‑es
Jobb (Right)Piros2‑es

Beállítások a UMC-n

A laptop beépített mikrofon‑bemenetébe soha ne kösd a phono előfok kimenetét: más a szint (line vs. mikrofon), gyakran mono a bemenet, és sok laptop plug‑in power feszültséget küld ki rajta, ami zajt/torzítást okoz.
05

Miért nem látta a rendszer a hangkártyát?

A UMC204HD USB‑szinten (lsusb) és ALSA‑szinten (aplay -l / arecord -l) rendben látszott, de a PipeWire saját eszközlistájában (pactl list short sources) nem jelent meg. A WirePlumber (a PipeWire session‑manager‑e) egyszerűen nem vette fel Device‑ként.

# ALSA szinten látta:
arecord -l
# card 1: U192k [UMC204HD 192k], device 0: USB Audio

# PipeWire szinten viszont hiányzott:
pactl list short sources

A megoldás: megkerülni a PipeWire‑t, és közvetlenül ALSA‑n keresztül rögzíteni arecord-dal:

arecord -D hw:1,0 -f S32_LE -c 2 -r 192000 teszt.wav
Ez az egyetlen parancs önmagában megoldotta a felismerési problémát — nincs szükség PipeWire‑konfigurálásra vagy JACK‑re, ha a cél egyszerű, közvetlen rögzítés.

„Device or resource busy” hiba

Ha az arecord/ffmpeg ezt a hibát adja, valószínűleg egy másik program (pl. egy nyitva felejtett Ardour‑munkamenet) tartja lefoglalva az eszközt:

sudo fuser -v /dev/snd/pcmC1D0c
# majd a kiírt PID leállítása:
kill <PID>
06

Az első teszt‑felvétel

A formátum ellenőrzésére három eszköz is jó:

soxi teszt.wav
ffprobe teszt.wav
file teszt.wav

A cél formátum: 192 kHz, 32 bit, sztereó PCM — ezt mindhárom eszköznek egyeznie kell:

Channels       : 2
Sample Rate    : 192000
Precision      : 32-bit
Sample Encoding: 32-bit Signed Integer PCM

A UMC204HD natívan 32 biten ad ki adatot ALSA‑n keresztül (a hasznos 24 bites tartalmat 32 bites keretben) — ez nem veszteség, hanem a hardver natív working formátuma.

07

Stabilitás: alvás és USB autosuspend

Hosszabb (10–20 perces) felvételeknél előfordulhat, hogy az USB‑hangkártya energiatakarékossági okból „elalszik” félidőben:

Leállítva. Újrakezdési kísérlet. Sikertelen. Újraindítás. Kész.

Ez egy rövid hang‑kihagyást/pattanást okoz a felvételben. Két beavatkozással kizárható:

1. Rendszer alvás/hibernálás tartós letiltása

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

2. USB autosuspend letiltása kifejezetten a UMC204HD-re (udev szabály)

echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1397", ATTR{idProduct}=="0508", TEST=="power/control", ATTR{power/control}="on"' \
  | sudo tee /etc/udev/rules.d/99-usb-audio-no-suspend.rules

sudo udevadm control --reload-rules
sudo udevadm trigger

Ellenőrzés, hogy tényleg érvénybe lépett-e (a UMC USB path‑jának power/control értéke on kell legyen, nem auto):

for d in /sys/bus/usb/devices/*/; do
  if [ -f "${d}idVendor" ] && [ "$(cat ${d}idVendor 2>/dev/null)" = "1397" ]; then
    echo "UMC204HD: $d"; cat "${d}power/control"
  fi
done

Ez a szabály tartós — minden induláskor automatikusan érvénybe lép, nem kell újra beírni.

08

A rögzítési munkafolyamat

A végleges felvevő‑parancs: arecord nyersen ír egy csövön (pipe) keresztül a sox-nak, ami a bevezető csendet levágja, és a rögzítés Ctrl+C-ig megy (a korábban próbált automatikus, csend‑alapú leállás megbízhatatlannak bizonyult hosszú, csendes zenei részeknél — ezért maradt a kézi leállítás).

arecord -D hw:1,0 -f S32_LE -c 2 -r 192000 -t raw \
  | sox -t raw -r 192000 -b 32 -e signed -c 2 - ~/vinyl/oldal_a.wav silence 1 0.1 0.1%

Menet közbeni ellenőrzés

Másik terminálban, a fájl méretének növekedését figyelve:

watch -n 1 ls -lh ~/vinyl/oldal_a.wav
09

Minőség‑ellenőrzés

Teljes statisztika

sox ~/vinyl/oldal_a.wav -n stat

A legfontosabb sorok:

MezőMit jelent
Maximum amplitudeLegmagasabb csúcs (1.0 = teljes digitális skála)
RMS amplitudeÁtlagos hangerő‑szint

Csatornánként külön

sox ~/vinyl/oldal_a.wav -n remix 1 stat   # bal csatorna
sox ~/vinyl/oldal_a.wav -n remix 2 stat   # jobb csatorna

Clipping (túlvezérlés) explicit kimutatása

ffmpeg -i ~/vinyl/oldal_a.wav -af astats=metadata=1:reset=0 -f null - 2>&1 \
  | grep -i "clipped"
Üres kimenet = nulla clip‑elt minta a teljes felvételben. Ha a Maximum amplitude pontosan 1.000000, de itt 0 a clip‑szám, az még nem torzítás — csak azt jelenti, hogy a jel érintette a skála tetejét, anélkül, hogy túllépte volna.
10

Csatorna‑kiegyenlítés és normalizálás

Egy hardveres lánc (hangszedő, előfok, kábelezés) szinte sosem tökéletesen szimmetrikus — nálunk kb. 0,7–1 dB eltérés volt mérhető a bal és jobb csatorna között. Ez szoftveresen, utólag pontosan korrigálható.

A szorzó kiszámítása parancssorból

A képlet: szorzó = hangosabb csatorna RMS / halkabb csatorna RMS. Ahelyett, hogy zsebszámológéppel számolnád, a bc (parancssori számológép) egyenesen a terminálban elvégzi:

# cseréld ki a két RMS-értéket a sox stat kimeneteiből mért adatokra
echo "scale=4; 0.128486 / 0.117977" | bc -l

Ha a dB‑különbségre is kíváncsi vagy (nem kötelező a korrekcióhoz, csak tájékoztató):

echo "scale=2; 20 * l(0.128486 / 0.117977) / l(10)" | bc -l

A bc -l a -l kapcsolóval tölti be a matematikai függvénykönyvtárat, ami tartalmazza az l() (természetes logaritmus) függvényt — enélkül a bc nem ismerné a logaritmust.

Egyszerre, egy sorban, kiírva mindkettőt:

awk -v l=0.117977 -v r=0.128486 \
  'BEGIN{printf "szorzó = %.4f  (%.2f dB)\n", r/l, 20*log(r/l)/log(10)}'

A korrekció alkalmazása

Ha a bal csatorna volt a halkabb, a szorzót arra kell alkalmazni, majd egyben normalizálni is 0 dBFS‑re:

sox ~/vinyl/oldal_a.wav ~/vinyl/oldal_a_final.wav remix 1v1.089 2v1 gain -n
RészFeladat
remix 1v1.089 2v1Bal csatorna × 1,089 (kiegyenlítés), jobb változatlan
gain -nNormalizálás: a legmagasabb csúcs pontosan 0 dBFS‑re kerül
A sorrend számít: előbb a csatorna‑kiegyenlítés, utána a normalizálás — fordítva a balansz‑korrekció felboríthatná a gondosan beállított csúcsértéket és clipping‑et okozhatna.

Ellenőrzés a végén ugyanazokkal a remix … stat és astats … clipped parancsokkal, mint fentebb — cél: a két csatorna RMS‑e gyakorlatilag megegyezik, és nulla a clip‑szám.

11

Zeneszámokra vágás

A csendek automatikus felismerésére az ffmpeg silencedetect szűrője bizonyult a legmegbízhatóbbnak — a sox silence-es próbálkozások (százalékos küszöbbel) túl érzékenynek bizonyultak, és a lemez halkabb zenei részeit is csendnek nézték.

Csendek megkeresése

ffmpeg -i ~/vinyl/oldal_a_final.wav \
  -af silencedetect=noise=-15dB:d=2 -f null - 2>&1 | grep silence

A -15dB küszöböt a konkrét lemez zajszintjéhez kalibráltuk, fokozatosan lazítva -50dB-ről. A d=2 azt jelenti: minimum 2 másodperces csend számít vágási pontnak.

Vágás a talált időpontok alapján

ffmpeg -i ~/vinyl/oldal_a_final.wav -ss 0 -to 358.08 -c copy szam_01.wav
ffmpeg -i ~/vinyl/oldal_a_final.wav -ss 361.37 -to 636.44 -c copy szam_02.wav
ffmpeg -i ~/vinyl/oldal_a_final.wav -ss 646.04 -to 884.96 -c copy szam_03.wav
ffmpeg -i ~/vinyl/oldal_a_final.wav -ss 889.52 -c copy szam_04.wav

-c copy = nincs újrakódolás, a vágás gyors és veszteségmentes.

Rövid zörej‑blipek kiszűrése

Két, egymáshoz nagyon közeli csend (pl. egy kopogás/kattanás a szünet közepén) egy pár másodperces, hamis „számot” eredményezhet. Ezeket egy minimum‑hossz szűréssel (pl. 10 másodperc alatt kihagyva) automatikusan ki lehet zárni a végleges listából.
12

FLAC konvertálás

sudo apt install flac
flac --best --verify szam_01.wav

--best a legjobb (leglassabb, legkisebb fájlt adó) tömörítési szintet választja, --verify pedig visszafejti és összeveti az eredetivel írás közben — ha bármi eltérés lenne, azonnal jelzi.

13

Fájlmegosztás és webre töltés

SSH és SCP

ssh -p 1999 felhasznalo@szerver-cim
scp -P 1999 ~/vinyl/oldal_a_final.wav felhasznalo@szerver-cim:/home/felhasznalo/
ssh-nál kisbetűs -p, scp-nél nagybetűs -P a port kapcsolója — gyakori elgépelési hiba.

Jelszó helyett SSH‑kulcs használata ajánlott (biztonságosabb, és script‑be sem kell jelszót írni):

ssh-keygen -t ed25519
ssh-copy-id -p 1999 felhasznalo@szerver-cim

„Forbidden” hiba webszerveren (SELinux)

RHEL/CentOS‑alapú szervereken (SELinux‑szal) egy root‑ként feltöltött fájl gyakran rossz biztonsági címkét kap, amit a webszerver nem enged kiszolgálni, még helyes Unix‑jogosultságok mellett is:

# ellenőrzés
ls -Z *.wav

# javítás: a helyes webszerver-címke beállítása
chcon -t httpd_sys_content_t fajlnev.wav
14

Parancs‑gyűjtemény

Felvétel indítása

arecord -D hw:1,0 -f S32_LE -c 2 -r 192000 -t raw \
  | sox -t raw -r 192000 -b 32 -e signed -c 2 - ~/vinyl/NEV.wav silence 1 0.1 0.1%

Figyelés másik terminálban

watch -n 1 ls -lh ~/vinyl/NEV.wav

Formátum ellenőrzés

soxi NEV.wav
ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 NEV.wav

Statisztika / minőség

sox NEV.wav -n stat
sox NEV.wav -n remix 1 stat
sox NEV.wav -n remix 2 stat
ffmpeg -i NEV.wav -af astats=metadata=1:reset=0 -f null - 2>&1 | grep -i clipped

Szorzó‑számítás csatorna‑kiegyenlítéshez

echo "scale=4; HANGOSABB_RMS / HALKABB_RMS" | bc -l

Kiegyenlítés + normalizálás

sox NEV.wav NEV_final.wav remix 1vSZORZO 2v1 gain -n

Csendek keresése

ffmpeg -i NEV_final.wav -af silencedetect=noise=-15dB:d=2 -f null - 2>&1 | grep silence

Vágás

ffmpeg -i NEV_final.wav -ss KEZDET -to VEG -c copy szam_01.wav

FLAC

flac --best --verify szam_01.wav

Meghallgatás

aplay NEV.wav

Stabilitás (egyszeri beállítás)

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
echo 'ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1397", ATTR{idProduct}=="0508", TEST=="power/control", ATTR{power/control}="on"' \
  | sudo tee /etc/udev/rules.d/99-usb-audio-no-suspend.rules
sudo udevadm control --reload-rules && sudo udevadm trigger