Import plików z rejestratorów audio

Od razu ostrzegam, że ten wpis jest tylko prezentacją obejścia pewnego problemu, a nie kompletnym rozwiązaniem czy demonstracją ogólnie dostępnego produktu. Niemniej, jeśli ktoś się zainspiruje i zrobi sobie podobne narzędzie, nie będę miał oczywiście o to żadnych pretensji, bo w końcu to tylko kopiowanie i przenoszenie danych, a nie opatentowane rozwiązania. Samego programu nie udostępniam, bo raz, że jest napisany w Javie (więc trudno go uruchomić bez zainstalowania dodatkowych komponentów), a dwa, musiałbym go najpierw dostosować do uniwersalnego użycia (a ma np. na stałe zaszyte ścieżki do moich katalogów na dysku)

O czym w ogóle mowa?

Zgromadziło mi się w studio sporo sprzętu do nagrywania dźwięku - rejestratorów czy konsol. Zwykle przy zgrywaniu plików pojawiał się kłopot - trzeba takie urządzenie podłączyć, uruchomić tryb transferu, odszukać katalog docelowy na dysku komputera, odszukać napęd, pod jakim rejestrator został rozpoznany przez Windows, po czym wejść do odpowiedniego katalogu, skopiować pliki i w niektórych przypadkach zmienić im nazwy, bo samo urządzenie generuje ciągle te same... Dobrze byłoby też mieć mechanizm sprawdzający, czy już dane pliki zgraliśmy do komputera, bo nie zawsze pamiętamy, by oczyścić kartę pamięci. A, no i jeszcze nie zawsze wszystkie pliki chcemy kopiować - dobrze byłoby mieć zatem wybór.

Przez długi czas posługiwałem się skryptem napisanym w języku Python, tyle że był on dość uciążliwy w obsłudze. Najpierw kopiował wszystkie pliki z urządzenia, a kiedy dodałem możliwość wyboru, trzeba było potwierdzać każdy plik czy katalog. Postanowiłem więc napisać wersję "okienkową", która ułatwi i uprości obsługę - tak powstał FileImporter (tak, wiem, mało wyrafinowana nazwa, ale program ma po prostu działać).

Jeden rejestrator ma tak, a drugi ma inaczej

Pierwszym zadaniem, jakie ma przed sobą FileImporter, to "namierzenie" podłączonego urządzenia. Jeśli zepniemy rejestrator z komputerem i włączymy tryb transmisji danych, zwykle Windows po prostu przydziela urządzeniu jakąś literkę napędu. Zwykle będzie to zawsze ta sama literka, ale jeśli często podłączamy do komputera różne nośniki czy napędy, literka lubi się zmienić, więc ścieżka importu ustawiona "na sztywno" się nie sprawdzała. FileImporter ma zatem wbudowany specjalny algorytm, który przeszukuje wybraną pulę napędów i sprawdza na nich obecność charakterystycznych katalogów i plików. Okazuje się bowiem, że niemal każdy rejestrator ma inną strukturę katalogów czy konwencję nazywania plików i dzięki temu, znajdując te charakterystyczne dane, można z dużym prawdopodobieństwem stwierdzić, że dany napęd to właśnie konkretne urządzenie. FileImporter potrafi rozpoznać następujące urządzenia:

  • RødeCaster Pro 1
  • RødeCaster Pro 2
  • Røde Wireless Go 2
  • Tascam DR100 Mk3
  • Tascam DR05
  • Tascam Portacapture X8
  • Zoom Podtrak P4
  • Zoom H1n
  • Zoom F3

Musiałem zatem dla każdego z tych urządzeń spreparować sposób rozpoznania, a także wydobycia konkretnych plików. Dodatkowo trzeba było zdecydować, czy nazwy plików mają być automatycznie konwertowane na unikalne (oparte na znacznikach czasowych) oraz czy urządzenie obsługuje usuwanie plików. Przykładowo, Røde Wireless Go 2 i RødeCaster Pro 1 nie mają możliwości usuwania (trzeba to robić specjalną aplikacją albo w samym urządzeniu), z pozostałych urządzeń można je przenieść. Każde urządzenie ma też przypisany do siebie katalog docelowy, czyli miejsce, gdzie są zapisywane zgrywane pliki.

W działaniu

Korzystanie z FileImportera wygląda tak: podłączam do komputera urządzenie z danymi i włączam w tym urządzeniu tryb transferu. System Windows przydzieli urządzeniu literkę napędu i wtedy uruchamiam FileImportera. Korzystając ze zdefiniowanych parametrów, odszuka on napęd przydzielony do urządzenia i wyświetli pliki do skopiowania:

Jak widać na powyższym screenie, dorobiłem sobie jeszcze opcję oznaczania, jakim mikrofonem były wykonywane nagrania. Tej informacji nie sposób zdobyć w inny sposób, jeśli korzystamy z mikrofonów XLR - trzeba ją podać ręcznie. FileImporter zapisuje w każdym importowanym pliku dodatkowe metadane: urządzenie nagrywające oraz mikrofon (jeśli został ustawiony). W ten sposób nawet po dłuższym czasie, kiedy już nie pamiętam, czym nagrywałem dany materiał, mogę wejść w metadane pliku i po prostu sobie te dane odczytać.

Pliki, które już zostały przeniesione wcześniej, a jeszcze istnieją w urządzeniu, są domyślnie odznaczone. Dodatkowo zrobiłem dla każdego urządzenia algorytm, który zaznacza tylko te pliki, które zazwyczaj kopiuję - na powyższym screenie widać, że z RødeCastera 2 zgrywam zazwyczaj tylko pliki pierwszego mikrofonu i tylko one są na starcie zaznaczone. Mogę kazać zgrać i inne, ale zazwyczaj nie pozostaje mi nic innego, jak przebiec wzrokiem listę plików i rozpocząć import:

Po zakończeniu importu na dysku mam skopiowane pliki, a jeśli urządzenie pozwala na usuwanie, to z karty pamięci urządzenia skopiowane pliki są usuwane i przy kolejnym uruchomieniu FileImportera nie są już brane pod uwagę.

Lenistwo na naprawdę wysokim poziomie

Tak, ten program jest klasycznym przykładem na to, jak poświęcić mnóstwo roboczogodzin na rozwiązanie mało istotnego (zadawłoby się) problemu. Jeśli jednak czegoś naprawdę nie lubię, to powtarzania podobnych czynności, które są nudne i można się przy nich pomylić. To są idealne zadania dla komputera i dlatego obecnie zgrywanie plików jest banalnie proste i wymaga minimalnej uwagi - ot, podłączam rejestrator, uruchamiam FileImportera, zatwierdzam listę plików i mogę zająć się czymś innym, zamiast tworzyć katalogi, kopiować ręcznie pliki i nadawać im nazwy.

Czasem warto być programistą!

Komentarze