Luuubisz to

Graf i Kod

W muzyce i sztukach związanych z nowymi mediami często wykorzystuje się wizualne języki programowania (choćby MaxMSP/Jitter, Pure-Data, czy Reaktor) – ma to głęboki sens w przypadku muzyki, ponieważ języki te na ogół bazują na podobieństwie interfejsu do sposobu pracy z syntezatorami modularnymi, którymi posługujemy się łącząc funkcjonalne bloki fizycznymi lub wirtualnymi „kabelkami”.

Taka wizualna „podpórka” w postaci grafu przedstawiającego połączenia pomiędzy elementami instrumentu (lub nawet całej kompozycji) pozwala stosunkowo bezproblemowo tworzyć muzyczne, albo audiowizualne struktury z elementami interakcji lub generatywności – czyli zasadniczo jakościami zwykle związanymi z samodzielnym programowaniem. Ta łatwość ma jednak swoją cenę, związaną między innymi z elastycznością modularnego interfejsu – osoby, które potrafią pisać choćby proste programy często irytują się, kiedy np. muszą przebudować stworzony w jednym z wizualnych języków programowania projekt i okazuje się, że wymaga to nużącego manualnego przepinania kilkudziesięciu (lub więcej) „kabelków”, a podobna modyfikacja projektu napisanego w tradycyjnym, tekstowym środowisku programistycznym wymaga zmiany jedynie kilku linijek kodu. Generalnie, w niektórych przypadkach okazuje się, że wizualna reprezentacja struktury muzycznej bywa uciążliwym balastem. Nie ma w takim stawianiu sprawy niczego odkrywczego: podobne tezy pojawiały się np. na wczesnym etapie rozwoju muzyki konkretnej, np. Pierre Schaeffer postulował operowanie w jak największej mierze bezpośrednio na zarejestrowanym materiale dźwiękowym (choć nie przeszkadzało mu to w kreowaniu własnych systemów notacji związanych z metodami obróbki materiału dźwiękowego zapisanego na taśmie).

grafikod2

Osobiście uważam, że niektóre projekty łatwo i szybko dają się realizować przy pomocy wizualnych języków programowania, podczas gdy inne wymagają kodowania. Umiejętność wyboru właściwych narzędzi jest oczywiście bardzo ważna – dość przygnębiające jest obserwowanie, jak sam fakt nauczenia się jakiegoś konkretnego programu lub środowiska i zasklepienia się w jego możliwościach i ograniczeniach sprawia, że jest ono później bezrefleksyjnie aplikowane do zadań, do których się nie nadaje.

Ciekawe możliwości otwierają się, kiedy spróbujemy – zamiast kurczowego trzymania się jednego paradygmatu – posługiwać się hybrydową techniką pracy i tworzyć projekty których pewne części powstają za pomocą wizualnych języków programowania, a inne dzięki tradycyjnemu kodowaniu – zwykle okazuje się, że jest to bardzo wydajna i elastyczna metoda. Większość wizualnych środowisk programistycznych dopuszcza zresztą komunikację ze światem zewnętrznym lub poszerzanie zakresu dostępnych funkcji poprzez samodzielne programowanie – pozostaje jedynie z tej możliwości skorzystać.

Niedawno pracowałem nad projektem, który idealnie wpasował się w opisaną wyżej strategię. Organizatorzy wystawy „Wacław Szpakowski (1883–1973). Linie rytmiczne” zaproponowali mi stworzenie interaktywnej pracy bazującej na koncepcjach Szpakowskiego, a ja przekonałem się, że najlepiej będzie zrealizować ją przy pomocy tandemu na który składa się MaxMSP (czyli środowisko, w którym operujemy głównie poprzez programowanie wizualne) i P5*js (nowej, bazującej na JavaScript inkarnacji popularnego języka/środowiska Processing, która wymaga tradycyjnie rozumianego kodowania).

grafikod3

Wacław Szpakowski był polskim prekursorem abstrakcji geometrycznej (najbardziej znany jako rysownik był również fotografem, architektem i skrzypkiem). Chociaż pierwsza duża wystawa jego prac miala miejsce dopiero po śmierci artysty (Muzeum Sztuki w Łodzi, 1978), to jego twórczość wraz z upływem czasu uzyskiwała coraz większą siłę oddziaływania: pierwsza wystawa monograficzna Szpakowskiego miała miejsce w 1992 roku w Brukseli (galeria Atelier 340). Prace Szpakowskiego były także prezentowane podczas wystaw „Presences Polonaises” (Centrum Pompidou, Paryż 1983), „Europa, Europa” (Bonn 1994), „Inventing Abstraction 1910–1925” (Museum of Modern Art w Nowym Jorku, 2012/2013), itd.

Każdy rysunek Szpakowskiego zbudowany jest z jednej nieprzerwanej linii, nie przecinającej się, załamującej zawsze pod kątem prostym i zwykle biegnącej pomiędzy lewą i prawą stroną arkusza kalki (Szpakowski kreślił głównie na kalce). Ponadto w rysunkach Szpakowskiego wyraźnie widać struktury cechujące się samopodobieństwem (podobnie jak w przypadku krzywej Kocha, czy fraktali), rytmicznością, często również przywołujące na myśl wykresy fal dźwięku i funkcji matematyznych (ta „matematyczność” twórczości Szpakowskiego doczekała się nawet szeregu akademickich analiz).

Ja odczytuję twórczość Szpakowskiego jako zapowiedź sztuki opartej o algorytmy (termin „conditional arts” używany przez Casey’a Reas’a opisuje to idealnie) – interesujące wydaje mi się, że, pomimo analogowego medium, artysta opracowywał procedury/programy, które następnie „uruchamiał” na samym sobie kreśląc rysunki.

Organizatorzy wystawy chcieli, abym napisał program pozwalający pubiczności edytować na ekranie linie cechujące się podobnymi do rysunków Szpakowskiego jakościami (rytmiczność, powtarzalność, brak przecinających się fragmentów, itd.). Program miał być też dostępny dla osób chcących poeksperymentować z regułami Szpakowskiego samodzielnie – poza wystawą. To ostatnie założenie sprawiło, iż uznałem, że program musi być osadzony na stronie WWW i działać z poziomu przeglądarki internetowej (w przeciwnym razie należałoby zapewne opracować kilka wersji działające na różnych urządzeniach i systemach operacyjnych).

Początkowo zamierzałem napisać prototyp w środowisku Processing, a później „ręcznie” lub korzystając z dostępnych narzędzi przekonwertować go do formy strawnej dla przeglądarki (czyli do postaci skryptu JavaScript). Przez moment myślałem także nad OpenFrameworks i Emscripten. Koniec końców jednak, ponieważ na opracowanie programu nie było wiele czasu i obawiałem się dodatkowej fazy tłumaczenia prototypu na finalną wersję, postanowiłem wykorzystać P5*js – raczkującą, ale działajacą już solidnie wersję środowiska Processing bazującą na JavaScript. Dzięki temu od początku mogłem szybko pisać program w docelowej technologii, przechodząc od razu do merytorycznych zagadnień związanych z implementacją reguł Szpakowskiego.

… a to okazało się zaskakująco problematycznym zadaniem. Jak wspomniałem, twórczość Szpakowskiego doczekała się szeregu analiz, w tym matematycznych. Twórcy tych ostatnich zwracali uwagę na podobienstwo jego rysunków m.in. do fraktali, trójkąta Sierpińskiego, krzywej Kocha, samoprzekształceń afinicznych, efektu Droste’a, L-systemów (ja sam zbudowałem sobie na etapie prób model oparty o niektóre koncepcje S. Wolframa)… – generalnie większość tych koncepcji i tworów matematycznych od lat 80tych leży wewnątrz zbadanej przestrzeni zainteresowań sztuki opartej o programowanie. Niemniej sensowna aplikacja tych koncepcji przy zachowaniu charakterystycznej stylistyki Szpakowskiego i poszanowaniu pozostałych reguł (meandrująca linia nie może się przecinać) nastręczała sporo trudności. Ponadto moja strategia – bazująca na zbudowaniu zbioru reguł prowadzących do uzyskania odpowiednich rezultatów (co, jak mi się wydaje, jest oczywistym współczynnikiem cechującym twórczość Szpakowskiego) – kolidowała z podejściem części innych osób zaangażowanych w tworzenie ekspozycji, a postrzegających zadanie jako próbę zbudowania programu ułatwiającego powielanie – i wizualną rytmizację – graficznych patternów.

Po szeregu prób i powrotów ze ślepych zaułków udało mi się wreszcie dopracować matematycznego i logicznego aparatu dającego się zawrzeć w formie relatywnie prostego w obsłudze programu (utrzymanie względnej prostoty interfejsu i rezygnacja z wielu obiecujących, ale skomplikowanych rozwiązań było zresztą również poważnym wyzwaniem). Zawiera on niektóre pomysły wymienione powyżej oraz inne, zaczerpnięte z różnych źródeł, łącznie z tradycyjną sztuką chińską (ostatnie kluczowe idee przyszły mi do głowy podczas zwiedzania historycznej ekspozycji w The Hong Kong Heritage Museum – pewne motywy zdobnicze naprowadziły mnie na rozwiązania zagadek, nad którymi ślęczałem od dłuższego czasu). Samo kodowanie gotowego modelu szczęśliwie było już proste (choć patrząc na sprawę pod kątem czysto technicznym: program zyskałby na wydajności, gdyby przepisać go na nowo bez pośpiechu – niestety, jak wspomniałem ograniczały mnie ramy czasowe).

grafikod1

Gotowy program – który w nawiązaniu do „linii rytmicznych” nazwałem „Liniami Algorytmicznymi” – można wypróbować na wystawie (uruchomiony na tabletach) lub wchodząc na stronę projektu (linki poniżej).

Na wcześniejszym etapie, dyskutując jeszcze nad ogólną wizją wystawy, zakładałem, że zrealizuję projekt posiadający jakiś wymiar dźwiękowy. Koncepcje Szpakowskiego zapraszają do takiego podejścia (rysunki Szpakowskiego doczekały się szeregu kompozytorskich interpretacji z utworami Zbigniewa Bargielskiego do wystawy w Brukseli na czele), poza tym większość moich prac ma audiowizualny charakter, więc w naturalny sposób kieruję się w te rejony. Jednak organizatorzy mieli już koncepcję audiosfery wystawy (poza tym chyba trochę obawiali się moich muzycznych pomysłów…), musiałem więc zrezygnować z dźwięku.

Niemniej wykorzystanie reguł Szpakowskiego jako bazy do manipulacji muzyką nie dawało mi spokoju, dlatego od początku pracy nad programem zostawiłem sobie w jego architekturze furtki umożliwiające uruchomienie „Linii Algorytmicznych” z poziomu MaxMSP – jako rodzaj nietypowego sequencera krokowego. Podczas realizacji wcześniejszych projektów wypracowałem metody dwukierunkowej komunikacji pomiędzy MaxMSP i stronami WWW (których czasem używam jako interfejsów w instalacjach interaktywnych) – dodałem więc odpowiednie fragmenty kodu do „Linii Algorytmicznych” oraz zbudowałem kilka testowych instrumentów. W rezultacie powstało dość uniwersalne narzędzie, z którego może korzystać każdy, kto posługuje się MaxMSP (przykładowe „patche” ilustrujące posługiwanie się „Liniami Algorytmicznymi” jako sequencerem można pobrać ze strony WWW projektu).

Przyglądanąc się całości (t.j. „Liniom Algorytmicznym” uruchomionym z poziomu MaxMSP) warto zwrócić uwagę, że koegzystencja kodu napisanego w P5*js i grafu definiującego instrument stworzony w MaxMSP nie nastręcza żadnych problemów – kod i wizualny język programowania uzupełniają się nawzajem i dość swobodnie można traktować je i zestawiać jako elementy tego samego modularnego systemu.

„Linie Algorytmiczne” online: http://paweljanicki.jp/projects_algorithmiclines_en.html

wystawa „Wacław Szpakowski (1883–1973). Linie rytmiczne”: http://www.wroclaw2016.pl/waclaw-szpakowski-18831973.-rhythmical-lines

*

Paweł Janicki powróci w tekście „Dane, patterny, sonifikacja”.


Warning: Illegal string offset 'fotozrodlocheck' in /home/users/wef/public_html/poly/wp-content/themes/shift/content.php on line 145

Warning: Illegal string offset 'zrodlo' in /home/users/wef/public_html/poly/wp-content/themes/shift/content.php on line 162

Tak. Korzystamy z ciasteczek w celach statystycznych. Na 90% nie przeczytasz treści tego komunikatu, ale jeżeli już to robisz to wiedz, że możesz wyłączyć ich obsługę w swojej przeglądarce. Więcej informacji o ciasteczkach