[K] Moje narzędzia audio po raz trzeci (i może wystarczy)
Pisałem już dwukrotnie o narzędziach do podglądania i obrabiania plików muzycznych, zwłaszcza MIDI. Dotarłem do etapu, że w zasadzie mam chyba wszystko może poza własnym programem DAW, ale czas powiedzieć: dość. Dzisiaj zatem krótkie podsumowanie prac z ostatniego tygodnia, a polegały one raczej na wykorzystaniu i dopracowaniu tego, co powstało wcześniej.
Poprawianie i upraszczanie
Najpierw moje dwa dość istotne narzędzia, czyli przeglądarki: do MIDI i do audio. Obie przeglądarki przeszły mniejszy lub większy lifting i działają na tyle sprawnie, że raczej już pozostaną w obecnej formie na dłużej. Mniej zmian przeżyła przeglądarka MIDI:
Delikatne gradienty, a przede wszystkim scrollowanie i zoomowanie - to ostatnie zmiany
Zmianie w porównaniu do wersji opisywanej wcześniej uległy elementy graficzne - gradient, zachowanie scrollowania i zoomowania. To, co jest obecne wystarczy, by się zorientować, ile ścieżek ma plik MIDI, czy są obecne nazwy ścieżek, czy istnieją informacje dynamiczne (velocity, CC1, CC11), jakie w ogóle są użyte kontrolery i czy... nuty wyglądają sensownie. Ostatnie może nieco dziwić, ale wierzcie na słowo, że sporo razy spotkałem się z jakimiś dziwnymi wersjami, które miały np. powielone ścieżki na całej długości, tzn. każda ścieżka zawierała dokładnie te same nuty. Na pierwszy rzut oka taki plik wygląda na poprawny, bo są nazwy, jest odpowiednia liczba ścieżek, są nuty, ale jeśli nie zachowamy czujności, po pracach wstępnych okaże się, że plik nie nadaje się do niczego...
Przeglądarka audio doczekała się licznych uproszczeń:
Ma być prosto, ale konkretnie
Zlikwidowałem osobną zakładkę na tagi w wersji ID3v1, bo była kompletnie niepraktyczna. Przebudowałem interfejs na bardziej kompaktowy i zostawiający więcej miejsca na wizualizację waveformy:
Rewelacji nie ma, ale do szybkiej orientacji wystarcza
Także pomiar głośności LUFS odbywa się obecnie automatycznie w tle, dla kilkuminutowych plików trwa on dosłownie parę sekund, więc nie było sensu robić tego osobnym przyciskiem. Zwykle zanim ogarnę wzrokiem metadane i okładkę oraz zajrzę do waveformy, LUFSy już są gotowe.
Total Commander!
Używacie Total Commandera? Ja uwielbiam ten program i używam od ponad ćwierć wieku (zakupiłem przez ten czas trzy licencje, gdyby ktoś miał wątpliwości). I kiedy tak "walczyłem" ze swoimi narzędziami, początkowo ograniczyłem się do tego, że uruchamiam skrypty konwertujące oraz przeglądarki z paska narzędziowego Total Commandera:
Definiujemy własne przyciski i np. wywołujemy zewnętrzny program
Ot, przyciski odpalają skrypty pythonowe, przekazując im ścieżki zaznaczonych plików, więc można od razu wczytać dane tych plików. Prosta robota.
Ale przecież Total Commander ma mechanizm wtyczek - i to kilku rodzajów wtyczek! Jak mogłem na to nie wpaść wcześniej? Trzeba po prostu napisać własne "podglądy", które - uruchomione przyciskiem F3 i skojarzone z danym typem pliku - po prostu uruchomią Listera i wyświetlą w nim odpowiednie informacje. Parę dni zabawy w CLionie, prześledzenie przykładów wtyczek napisanych przez Christiana Ghislera i oto słowo stało się ciałem - powstał "lister" dla plików MIDI:
Zbiorcze informacje o pliku MIDI
Jest on rozszerzony w stosunku do pythonowej wersji, bo na pierwszej zakładce przedstawia ogólne informacje na temat pliku, dopiero na drugiej pokazuje ścieżki i nuty:
Nie jest tak ładnie, jak w Qt6, ale wystarczająco
Nie jest to tak ładne, jak UI rysowane za pomocą Qt6 w Pythonie, ale za to działa naprawdę błyskawicznie - podgląd pojawia się praktycznie w ułamku sekundy i jest w pełni zintegrowany z Listerem. Początkowo osadzałem w Listerze wersje pythonowe, ale działało to bardzo "kulawo" (problemy ze skalowaniem i odświeżaniem, jestem chyba po prostu za słaby programistycznie na takie kombinacje).
Skoro powstała wersja MIDI, zrobiłem też "z rozpędu" wersję audio, ale ona - choć działa równie szybko - wygląda dużo gorzej:
Brzydactwo, ale informacje są czytelne
Także wizualizacja waveformy to dość podła grafika, ale cóż, rysowanie w C++ dla niedoświadczonych w tym języku to droga przez mękę:
Może kiedyś się zabiorę za ładniejsze narysowanie wykresu waveformy...
Nawet wyświetlenie okładki osadzonej w pliku to była mordęga, bo bez osadzania dodatkowych zależności formaty png i jpg są w czystym C++... no, problematyczne. Aż mi się czasy Delphi przypomniały, kompletnie bez nostalgii.
A co z innymi narzędziami?
Przeglądanie przeglądaniem, ale co, gdyby sobie uprościć... oczyszczanie plików MIDI? O oczyszczaniu też już pisałem i wbudowałem je w MIDI Tools Hub. W najprostszej postaci czyszczenie wygląda tak, że zaznaczam plik MIDI i wywołuję skrypt (czy to taki w linii poleceń, czy ten w ramach MIDI Tools Hub). Skrypt przetworzy plik MIDI, generując przy okazji stertę plików pośrednich (z CC1 przeniesionym do velocity lub odwrotnie, ze zrobionym divisi, z wyczyszczonymi zbędnymi kontrolerami CC, z randomizowanym velocity itd.) Wszystkie te pliki są potrzebne, bo zależnie od rodzaju utworu korzystam z konkretnego z nich. Ale jeśli już dany plik trafi do DAW i zostanie zamieniony na projekt, wszystkie te pliki stają się zbędne i trzeba je usuwać, żeby zachować porządek. A wiadomo, jak jest - mam potem katalog MIDI wręcz zawalony tymi różnymi plikami pośrednimi.
Uf, przydługi wstęp, ale konieczny, by zrozumieć moją radość, gdy wymyśliłem banalne rozwiązanie. Otóż Total Commander ma prócz wtyczek "podglądowych" wtyczki... kompresorów. Działa to tak, że możemy "wejść" do archiwum (zip, arj, rar itp.) i skopiować stamtąd dowolny plik czy grupę plików, nie rozpakowując de facto całego archiwum. Wtyczka kompresora zrobi wszystko za nas w katalogu tymczasowym, a dla nas będzie to zwykłe kopiowanie między panelami.
I to było to! Napisałem sobie wtyczkę do... plików MIDI. Odtąd w Total Commanderze plik MIDI jest "archiwum" i kiedy do niego "wchodzę", w tle wtyczka uruchamia proces czyszczenia (czyli mój skrypt pythonowy) i jako "zawartość archiwum" prezentuje wygenerowane przez niego pliki:
I cyk, "wchodzimy" do pliku MIDI, a tam inne pliki MIDI, czary!...
Wybieram jeden z nich (nawet mogę go wygodnie podejrzeć w swojej własnej przeglądarce) i kopiuję w wybrane miejsce lub nawet od razu otwieram w DAW. Po wyjściu z "archiwum" pliki są automatycznie kasowane przez wtyczkę i widzę znów tylko oryginalny pliki MIDI. Dziwię się, że nie wpadłem na ten genialny koncept wcześniej.
I tak to jest
To chyba wszystko na teraz, chyba że wpadnę na jeszcze jakiś błyskotliwy pomysł i postanowię się nim pochwalić na blogu. Tymczasem jednak koniec chwalipięctwa, czas zabierać się do roboty, bo utwory klasyków czekają!









Komentarze
Prześlij komentarz