Opis
Miniatura odwołuje się do historycznych rasteryzatorów wideo, które w latach 70. pozwalały artystom przekształcać sygnał wideo w czasie rzeczywistym.
Podobnie jak w oryginalnych „scan processorach”, tutaj obraz staje się materią podatną na modulację – zniekształcenia i przesunięcia, które imitują trójwymiarowość. Praca stanowi współczesną, autorską interpretację tych technologii: bada, jak algorytm może odtworzyć analogową czułość dawnych eksperymentów wideo.
CRT RAS idealnie nadaje się do pracy w terenie, umożliwiając skanowanie rzeczywistości przy użyciu urządzenia mobilnego.
Czytaj więcej
Trochę historii, skanowanie, praca w terenie
„Scan processor” to nazwa rodziny urządzeń — rasteryzatorów sygnału video — opracowywanych równolegle przez autorów czerpiących od siebie nawzajem inspiracje. Np. „Rutt/Etra Scan Processor” to urządzenie zaprojektowane i prototypowane w 1972-73 roku, a jego twórcami byli Steve Rutt, Bill Etra i Louise Etra, pracujący dzięki środkom i zasobom New York State Council on the Arts (grant), WNET Thirteen Laboratory New York oraz zaangażowaniu własnych oszczędności. Podobne urządzenia cyrkulowały już wówczas w mniej lub bardziej efemerycznych hackersko-artystycznych obiegach, np. „Scani-Mate” Lee Harrisona i Nam June Paika, czy „Paik/Abe Scan Modulator” autorstwa Shuya Abe i Nam June Paika. Konstrukcja Abe i Paika, była, co ciekawe, zmontowana dzięki wizjonerskiemu połączeniu dostępnych komercyjnie ukłądów, przy czym jej piętą achillesową, a zarazem charakterystyczną cechą były zakłócenia obrazu pochodzące z modułu zasilającego (te zakłócenia okazały się niezwykle trudne do intencjonalnego zasymulowania). Urządzenia różniły się od siebie wieloma funkcjami, ale ich wspólnym mianownikiem była idea wpływania (modulowania) na sygnał telewizyjny za pomocą różnego rodzaju generatorów, obwiedni i mechanizmom pozwalającym ekstrahować jakiś parametr sygnału i aplikować go do zmieniania wartości innego parametru. Wszystko to przypominało mocno modularne syntezatory audio, a niektóre ze „scan processorów”, (np. „Rutt/Etra Scan Processor”) potrafiły komunikować się ze światem zewnętrznym za pomocą protokołów typowych dla ówczesnych dźwiękowych systemów modularnych (przede wszystkim poprzez sterowanie napięciem [control voltage]). Pomimo, że za projektami tych konstrukcji stały często kreatywne indywidualności o rozpoznawalnym, autorskim dorobku, „scan processory” popularyzowały się środowiskowo poprzez osoby artystyczne „proxy”, eksperymemntujące z nimi, jak z instrumentami i najlepiej upowszechnione dzieła stworzone za ich pomocą to m.in. prace Gary’ego Hilla oraz duetu The Vasulkas (Steina i Woody Vasulka). Duetowi The Vasulkas jest przypisywane autorstwo konfiguracji „Rutt/Etra Scan Processora” umożliwiającej modulację pionowej pozycji linii obrazu video jasnością tych linii, co wytwarza efekt sugerujący trójwymiarowość obrazu.
„Scan processory” są, z mojego punktu widzenia, nader interesującymi urządzeniami-instrumentami, transformującymi myślowe figury wywiedzione z projektowania elektronicznych instrumentów muzycznych oraz pracy z nimi w kontekst wizualny. Dlatego starałem się zrozumieć ich funkcjonowanie i specyfikę funkcjonowania w konkretnych kulturowych kontekstach tak głęboko, jak byłem w stanie, nie poprzestając na aplikacjach.
Projekty „scan processorów” z lat ’70 XX w. opierały się o analogowe technologie, natomiast późniejsze, często wirtualne, konstrukcje bazowały już na technologii digitalnej i oprogramowaniu. Takie cyfrowe emulacje, nieustannie przebudowywane przez kolejne osoby, również krążą pomiędzy światami zastosowań hobbystycznych, związanych ze sztuką i kreacją, czy rekonstrukcją historycznych technologii. W Centrum Sztuki WRO także wielokrotnie stosowaliśmy takie emulacje przy okazji różnych aktywności — szczególnie ważne w tym kontekście były nasze, grupowo realizowane od 2012 roku, instalacje z serii „Na Srebrnym Globie”. „Na Srebrnym Globie II” i „Na Srebrnym Globie III” zawierały (poza wieloma innymi komponentami-referencjami do historii sztuki) digitalne emulacje pseudotrójwymiarowego efektu opracowanego przez The Vasulkas.
Wszystkie znane mi digitalne emulacje „scan processorów”, w szczególności wspomnianego efektu pseudotrójwymiarowego bazują na tym samym mechaniźmie: dwuwymiarowy obraz (tekstura) jest nakładany na siatkę, której wierzchołki przemieszczane są przy wykorzystaniu wartości składowych kolorystycznych lub po prostu jasności pobranych z miejsc tekstury o koordynatach odpowiadających tym wierzchołkom — jest to standardowa technika komputerowej grafiki 3D (tzw. „bump mapping” — technika zwykle stosowana do statycznych obrazów i np. symulowania drobnych nieregularności obiektów trójwymiarowych, jak pęknięcia czy chropowatość). Takie podejście wydaje się optymalne z technicznego punktu widzenia, zgodne z architekturą współczesnych procesorów graficznych. Najlepsze chyba spośród emulacji „scan processorów”, bazujące na opisanej powyżej idei i zarazem cechujące się najgłębszym rozumieniem zagadnienia zaprojektowali i zaprogramowali Anton Marini (we współpracy z Billem Ettra) i Ramsey Nasser — są to, odpowiednio, rozszerzenia dla środowisk do eksperymentowania z obrazem elektronicznym VDMX i Hydra (w przypadku tego ostatniego, wierzchołki są w zasadzie wirtualne — niemniej cała ida działania mechanizmu jest zbliżona do opisanej, a Nasser dokładnie przedstawia swoje podejście w artykule Livecoding Scanlines on the GPU).
Doceniając nowe możliwości i sprawność współczesnych inkarnacji „scan processorów” od dłuższego czasu byłem jednak zainteresowany zbudowaniem własnego algorytmu rasteryzatora, który kreowałby obrazy silniej odnoszące się do historycznej kombinacji procesów zachodzących w analogowej elektronice i ekranach CRT (choć również potencjalnie podlegającego manipulacjom za pomocą mechanizmów dostępnych dzięki współczesnym technologiom obrazowania). Wcześniejsze doświadczenia z projektowaniem algorytmu zastosowanego m.in. w miniaturze „CRT Hix” oraz performance „Silver Moon, Blue Planet, Blue Note” pozwoliły mi na sformułowanie uogólnionej procedury, podejścia na poziomie projektowania architektury systemu — przy czym, podobnie jak podczas pracy nad „CRT Hix”, zależało mi na osiągniięciu celu nie poprzez stylizację, ale poprzez takie kierowanie mechaniką obliczeń, by omijać „odbijanie się” od specyfiki programowania GPU.
Ostatni ważny współczynnik charakterystyki Mniatury wynika z tego, że, podobnie jak w przypadku „CRT Hix” (a w mniejszym lub większym stopniu dotyczy to wszystkich miniatur), także w „CRT Ras” bardzo istotnym parametrem jest dla mnie możliwość przeniesienia pracy z zaprojektowanym systemem w teren, skanowania otoczenia ad hoc – z mobilnym i możliwie tanim urządzeniem zabranym poza studio, pracownię, laboratorium.
Dokumentacja techniczna
Parametry przekazywane przez adres URL
- amp 0.0 … 1.0; domyślnie 0.5; amplifikacja jasności obrazu
- clr 0 lub 1; domyślnie 0; wyłącza/włącza tryb pracy w kolorze
- famo user | environment (lub env); domyślnie user; [facingMode] pozwala wymusić użycie przedniej (user) lub tylnej (environment) kamery na urządzeniach, które są wyposażone w podwójne kamery/aparaty (większość współczesnych urządzeń mobilnych)
- fld 0 (brak) 1 (odbicie lustrzane [mirror]) 2 (limit [clamp]) 3 (powtórzenie [repeat]); domyślnie 0; zawijanie linii na dolnej wychodzących poza górną/dolną krawędź obrazu
- gui 0 lub 1; domyślnie 1; chowa/pokazuje panel z interfejsem graficznym
- h pionowa rozdzielczość kamery
- lang en lub pl; domyślnie en; ustawia język interfejsu (istnieje możliwość dodania kolejnych języków)
- midiinport domyślnie wyłączone; numer portu MIDI do zewnętrznego sterowania Miniaturą (przyjmowanei komunikatów)
- mirror 0 lub 1; domyślnie 1; wyłącza/włącza lustrzane odbicie obrazu z urządzenia przechwytującego (zwykle kamery)
- pdd 0.0 … 1.0; domyślnie 0.5; (padding) gęstość linii
- pointer 0 lub 1; domyślnie 1; chowa/pokazuje kursor myszy
- prc 0.0 … 1.0; domyślnie 0.5; (precision) precyzja symulatora interlinii
- vo 0.0 … 1.0; domyślnie 0.5; (vertical offset) przesunięcie całego obrazu w górę lub w dół
- w pozioma rozdzielczość kamery
- worker 0 lub 1; domyślnie 0; umożliwia zablokowanie wbudowanych w przeglądarkę mechanizmów zatrzymywania pracy programu kiedy okno nie jest widoczne
- wrp 0.0 … 1.0; domyślnie 0.5; (warp) zakres i kierunek modulacji przesunięcia miejsca na linii o razu pod wpływem jasności
- ws adres; domyślnie wyłączone; włącza i ustala adres (zwykle localhost:9001) dla komunikacji poprzez WebSocket (umożliwia zewnętrzne sterowanie Miniaturą i dostosowanie do własnych potrzeb)
- xws adres; domyślnie wyłączone; włącza i ustala adres (zwykle ws://localhost:9001) ze wskazaniem protokołu dla komunikacji poprzez WebSocket (umożliwia zewnętrzne sterowanie Miniaturą i dostosowanie do własnych potrzeb)
Komunikaty przekazywane przez WebSocket
Komunikaty, na które reaguje Miniatura
- amp 0.0 … 1.0; znormalizowana wartość amplifikacji jasności obrazu
- color 0 lub 1; domyślnie 0; wybór pomiędzy trybami monochromatycznym i kolorowym
- offset 0.0 … 1.0; domyślnie 0.5; znormalizowana wartość pionowego przesunięcia obrazu (pozycja neutralna = 0.5)
- padding 0.0 … 1.0; znormalizowana gęstość linii
- precision 0.0 … 1.0; znormalizowana wartość ustawiająca precyzję systemu (niska precyzja skutkuje charakterystyczną „analogową” poświatą)
- warp 0.0 … 1.0; znormalizowana wartość stopnia wybrzuszenia (pozycja neutralna = 0.5)
- wrap none | mirror | clamp | repeat; domyślnie „none”; wybór metody „zawijania” obrazu na krawędzi ekranu
Komunikaty wysyłane przez Miniaturę
nie dotyczy
MIDI
Komunikaty, na które reaguje Miniatura
- CC 000 na dowolnym kanale gęstość linii
- CC 001 na dowolnym kanale wartość amplifikacji jasności obrazu
- CC 002 na dowolnym kanale wartość stopnia wybrzuszenia
- CC 003 na dowolnym kanale wartość ustawiająca precyzję systemu (niska precyzja skutkuje charakterystyczną „analogową” poświatą)
- CC 004 na dowolnym kanale znormalizowana wartość pionowego przesunięcia obrazu
- CC 005 na dowolnym kanale 0 lub 1; domyślnie 0; wybór pomiędzy trybami monochromatycznym i kolorowym
- CC 006 na dowolnym kanale 0 (none) | 1 (mirror) | 2(clamp) | 3(repeat); domyślnie 0 (none); wybór metody „zawijania” obrazu na krawędzi ekranu
Komunikaty wysyłane przez Miniaturę
nie dotyczy
Komunikacja z MaxMSP
Komunikaty, na które reaguje Miniatura
nie dotyczy
Komunikaty wysyłane przez Miniaturę
nie dotyczy