[K] Fender Studio Pro - własne rozszerzenie

Stare dzieje

Jak pamiętacie z wcześniejszych wpisów, swego czasu stworzyłem sobie aplikację MIDI Tools Hub:

MIDI Tools Hub we wrześniu 2026

W dość wczesnej wersji opisałem tę aplikację jeszcze w marcu 2026, choć jak widać na zrzucie powyżej, przybyło nowych narzędzi.

Program korzystał z mechanizmu zakładki Files w Fender Studio Pro - otóż po przeciągnięciu na tę zakładkę dowolnych danych, np. partii MIDI czy choćby kilkunastu nut z edytora MIDI, DAW zapisuje te dane jako plik MIDI do wskazanego folderu. Idea była zatem prosta - uruchamiam mój MIDI Tools Hub, który "nasłuchuje" na tymże folderze i automatycznie "chwyta" wszelkie pliki, które tam wpadną, by sczytać dane MIDI i je przetworzyć w określony sposób (decyduje o tym aktualnie wybrana zakładka). Chcę wykryć tonację i zbudować zestawy akordów? Wybieram zakładkę Chord Gen, przeciągam na Files całą partię melodii z utworu i po chwili zadanie jest ukończone. Teraz "chwytam" myszą dolny, czerwony prostokąt DRAG TO DAW i przeciągam na okno Fender Studio Pro - okazuje się, że to dane MIDI, które mogę "upuścić" i zrobić z nich użytek.

Nie jest to rozwiązanie eleganckie i wygodne, ale nie znalazłem wówczas innego sposobu - niestety, Fender Studio Pro do kopiowania i wklejania zdarzeń MIDI nie używa systemowego schowka, a przynajmniej żadnymi dostępnymi sposobami nie udało mi się tego zaobserwować. Zresztą, nawet gdyby w użyciu był schowek, niekoniecznie dałoby się go wykorzystać, bo format danych zapewne byłby binarny i znany tylko programistom z Fendera.

Promyk nadziei, czyli hakujemy

Jak zwykle w takich sytuacjach, zadziałał przypadek. Na początku września zakupiłem Pro Navigatora Lukasa Ruschitzka i szukałem opisu pewnej funkcjonalności na forum. Wpadł mi w oko wątek użytkownika Gray Wolf, w którym opisał on stworzony przez siebie pasek narzędziowy i pozwolił go pobrać. Okazało się, że jest to plik w formacie package, który należy umieścić w katalogu instalacyjnym Fender Studio Pro, w podkatalogu Scripts. Po starcie dostajemy dostęp do paska i udostępnianych przez niego funkcji. Wtedy do głowy przyszedł mi pomysł: zaraz, a może mnie też by się tak udało?

Format package nie jest, niestety, spakowanym zipem i ma troszkę bardziej skomplikowaną budowę, jednak dzięki rozpoznaniu pewnych charakterystycznych struktur, udało mi się go rozpakować skryptem napisanym w Pythonie (a jakże!). Wnętrze mnie... ucieszyło:

JavaScript i XML - jak w domu

Same znane formaty, kod napisany w JavaScripcie, GUI budowane na podstawie metadanych XML - naprawdę zaczęło to wyglądać obiecująco. Znalazłem jeszcze informację, że do prawidłowego działania kodu nie trzeba go nawet pakować z powrotem do formatu package, tylko wystarczy katalog podobny do tego powyżej wrzucić do folderu ze skryptami i tyle.

Zaczęło się teraz mozolne śledzenie badanej wtyczki oraz czytanie informacji znalezionych w repozytorium z nieoficjalnym API dla jeszcze wtedy Studio One. Wszystko obadane eksperymentalnie, żadnej gwarancji sukcesu. Na początek zacząłem od pojedynczej funkcji, żeby sprawdzić, czy w ogóle pojawi się ona w Fender Studio Pro. Potem dodawałem kolejne proste funkcje, aż w końcu przyszedł czas na zgrupowanie ich na własnym pasku narzędziowym:

Własny toolbar w Fender Studio Pro

Co to mi daje?

Obecnie niemal cała funkcjonalność MIDI Tools Huba została przeniesiona do rozszerzenia. Patrząc na pasek ciężko w to uwierzyć, bo prezentuje się ona bardziej niż skromnie, ale z kolei patrząc na MIDI Tools Hub łatwo dostrzeżemy, że musiałem bardzo rozbudować interfejs użytkownika w tej aplikacji, bo przez eksport danych do pliku MIDI traciłem sporo informacji. Bardzo dobrym przykładem jest tempo - przy przerzucaniu pojedynczych ciągów nut (np. tryle), tej informacji nie było, stąd konieczność ustawiania tego tempa ręcznie. Rozszerzenie, działające bezpośrednio na wewnętrznych obiektach DAW, ma dostęp do tego typu informacji.

Najważniejsza sprawa to jednak wygoda, po prostu. Zaznaczam nuty w edytorze MIDI i cyk, mam je skonwertowane na przekonująco brzmiący tryl. Albo zaznaczam inne, kopiuję ich velocity, zaznaczam cały ciąg nut i wklejam velocity. Tak samo z losowością początków nut, to samo z "prawdziwym legato". Przypomnę, że moje legato działa inaczej niż to wbudowane w Fender Studio Pro, bo prawidłowo kontroluje nachodzenie na siebie nut - te o różnej wysokości ładnie "nachodzą" na siebie, ale te o tej samej wysokości zachowują krótką przerwę, konieczną np. dla bibliotek Spitfire, by nie wygasiły drugiego dźwięku.

Najzabawniejsze, że te dwa tygodnie testowania rozszerzenia ujawniło, że najczęściej wykorzystywaną przeze mnie jego funkcją jest coś, czego MIDI Tools Hub w ogóle nie miał. Otóż przy pracy z mock-upami orkiestrowymi zawsze nadchodzi etap opracowania tempa utworu, co robię zwykle w oparciu o jakieś jego realne nagranie. Wtedy mam ścieżkę audio i moje ścieżki MIDI oraz ścieżkę tempa. Cały myk polega na tym, że muszę raz słuchać audio, a potem MIDI, żeby wszystko się zgadzało. Solowanie ścieżek od zawsze sprawiało mi problem i zawsze kończyło się tym, że nacisnąłem coś nie tak i nagle słyszałem nie to, co chciałem. Niby są w Fender Studio Pro opcje Solo Follows Selection, czyli soluje się zawsze zaznaczona ścieżka, można też korzystać ze skrótu alt+klik na guziczek Solo, co włącza Exclusive Solo dla danej ścieżki. Niby są też Scenes dla miksera, gdzie możemy sobie zapisać widoki z odpowiednio ustawionymi stanami solo i się przełączać między nimi. Nic z tego się nie sprawdzało w praktyce, bo zwykle wymagało przenoszenia kursora myszki, klikania i dodatkowo zajmowało czas (takie przełączanie scen trwa troszeczkę). Wpadłem na inny pomysł - zaznaczam ścieżkę audio i oznaczam ją jako referencyjną poleceniem Set Reference Track, po czym mogę ustawić się na dowolnej innej ścieżce i użyć polecenia Toggle Solo Reference/Current. I moje rozszerzenie potrafi przełączać solo na przemian na referencję i obecną ścieżkę, a że każde takie polecenie mogę w Fender Studio Pro skojarzyć ze skrótem klawiaturowym, to nie tylko do przełączania mogę używać jednego klawisza, ale mogę też podpiąć to rozwiązanie pod StreamDecka. I faktycznie się to sprawdza - słucham, naciskam sobie lewą ręką jeden przycisk i tyle.

Nie wszystko złoto, co się świeci

Niestety, póki Fender nie opublikuje oficjalnego API, trudno jest zrealizować niektóre pomysły. Miałem mnóstwo takich pomysłów, związanych z krzywymi CC - niestety, nie znalazłem dotąd dowodu, by komukolwiek udało się dotrzeć do funkcji operujących na tych danych w powiązaniu z nutami MIDI. Nie mogę więc napisać sobie skryptu do likwidowania "schodków" w obwiedniach CC1/CC11, nie mogę też automatycznie budować krzywych CC1/CC11 na bazie nut - chodzi mi o łuki z rosnącymi i opadającymi wartościami do programowania np. smyczków.

Nieoficjalność obecnie dostępnych informacji nie daje również gwarancji, że używamy różnych funkcji zgodnie z ich rzeczywistym działaniem. No i wiadomo, każda nowa wersja DAW może sprawić, że jakaś funkcja po prostu zniknie lub zmieni swoją listę parametrów, nic bowiem Fendera nie obliguje do zachowania wstecznej zgodności.

Niemniej bardzo się cieszę, że wreszcie większość funkcji udało mi się przenieść wprost do DAW, że już nie muszę uruchamiać osobnego narzędzia, przeciągać niczego i robić porządków w zdarzeniach. To naprawdę duża poprawa wygody pracy. No i to solo - podoba mi się!

Komentarze