You are on page 1of 57

Pawe Janicki

http://paweljanicki.jp (.net .com .org)

MaxMSP/PureData (+ Jitter + GEM): wprowadzenie


Wstp
MaxMSP i PD (PureData) to w pewnym sensie aplikacje siostrzane koncepcja interfejsu i
moliwoci s w obu przypadkach na tyle zblione, e moliwe jest nawet przenoszenie pomidzy
nimi prostych projektw (warto przypomnie, e gwnym autorem zarwno MaxMSP jak i PD jest
ta sama osoba). Istniej, oczywicie, rwnie due rnice pomidzy oboma rodowiskami i w
konkretnych zastosowaniach ktre z nich moe okaza si znaczco bardziej uyteczne, jednak
patrzc na zagadnienie z szerszej perspektywy w zestawieniu z innymi rodowiskami opartymi o
paradygmat obiektowy MaxMSP i PD s do siebie mwic wprost podobne. Nie bez znaczenia
pozostaje te fakt, e obie aplikacje rozwijaj si ju od do dugiego (jak na rodowiska
programistyczne) czasu MaxMSP i PD maj ju za sob ponad 20 lat historii i zdyy zarazem
okrzepn i obrosn moliwociami i funkcjami.
Wracajc na moment do podobiestw i rnic pomidzy oboma rodowiskami: z racji odmiennych
form dystrybucji MaxMSP i PD nie s dla siebie bezporedni konkurencj, co w praktyce
przekada si na to, e oba rodowiska wietnie si uzupeniaj. Niniejszy dokument w duej mierze
pomija istotne nieraz rnice pomidzy oboma rodowiskami, skupiajc si na tych polach
zastosowa i konstrukcjach, ktre funkcjonuj podobnie i pozwalaj zrozumie nie tylko dziaanie
samych rodowisk, ale i istot koncepcji programowania w graficznych rodowiskach obiektowych
wszak nie bez powodu MaxMSP i PD s niemal synonimami tego rodzaju rodowisk.
MaxMSP i PD dziel paradygmat obiektowy i ogln koncepcj pracy, lokujce je pomidzy
tradycyjnymi jzykami programowania, a rodowiskami stricte graficznymi. Wymagaj te
wpisywania za pomoc klawiatury nazw obiektw i ich parametrw (inaczej, ni ma to miejsce np.
w EyesWeb, czy NI Reaktor). Ten wymg pocztkujcych (nie majcych wczeniej do czynienia z
programowaniem) uytkownikw zwykle deprymuje, jednak jest to metoda zdajca egzamin: ju po
krtkim treningu prototypowanie prostych aplikacji przebiega szybko nawet u osb, ktre
wczeniej nie miay do czynienia z podobnymi rodowiskami.
W tym miejscu warto jednak zwrci uwag na istotn cech MaxMSP i PD: oba rodowiska s,
przynajmniej w pewnej mierze, jzykami programowania. Z tego prostego faktu wynikaj znaczce
konsekwencje:

aby sprawnie posugiwa si jakimkolwiek jzykiem programowania dobrze jest zapozna


si z podstawowymi wiadomociami na temat programowania w oglnoci. Wrd takich
wiadomoci znajduj si m. in. zagadnienia zwizane z algorytmik, logik, algebr i
geometri tego rodzaju wiedza, czsto nie ley w polu zainteresowa osb korzystajcych
z opisywanych tu rodowisk, ale bez wtpienia jest ona kluczem do korzystania z nich w
sposb kreatywny;

uycie jakiegokolwiek jzyka programowania wymaga od uytkownika wiedzy zwizanej z


polem jego zastosowa jeli chcemy w PD np. zbudowa syntezator subtraktywny,
musimy zdawa sobie spraw z tego jak on dziaa, jakich obiektw naley uy i jak je
poczy by zasymulowa analogowy tor sygnaowy w typowym syntezatorze. MaxMSP i
-1-

PD stanowi narzdzia suce do tworzenia innych narzdzi.


Naturalnie powyszych zastrzee nie naley traktowa jako potencjalnych barier przeciwnie,
warto zinterpretowa je jako informacje przemawiajce na korzy MaxMSP i PD: oba
rodowiska mog znale zastosowanie w wielu rnych projektach, ponadto cz w sobie
dowiadczenia wyniesione z rnych technologicznych i artystycznych rzeczywistoci, a energia
woona w poznanie zasad funkcjonowania tych rodowisk zwrci si choby dziki moliwoci
nauki wczeniej nieznanych dziedzin. Rwnie krzywa uczenia si w przypadku MaxMSP i PD ma
ksztat wykadniczy: po opanowaniu podstaw nasza zdolno szybkiego pisania aplikacji i uczenia
si bardziej zaawansowanych technik korzystania z wybranego rodowiska bdzie stale wzrasta.

-2-

rodowisko edycyjne i posugiwanie si klawiatur


Tworzc projekt w MaxMSP lub PD posugiwa si bdziemy zarwno systemami rozwijalnych
menu i paneli (to drugie dotyczy w szczeglnoci MaxMSP), czy te funkcjami obsugiwanymi
poprzez drag & drop, jak i klasycznym dla programowania wpisywaniem nazw instrukcji (w
nomenklaturze MaxMSP i PD nazywanych najczciej obiektami) i ich parametrw. Pocztkujcy
uytkownicy zwykle staraj si jak najwicej operacji wykona w sposb typowy dla
wspczesnych systemw operacyjnych, czyli za pomoc myszy.
W przypadku MaxMSP i PD warto jednak powici na przewiczenie umiejtnoci posugiwania
si klawiatur. Dotyczy to nie tylko skrtw klawiaturowych dotyczcych zapisu, adowania
projektw z dysku, czy zamykania aplikacji. W przypadku rodowisk takich MaxMSP i PD istotna
jest znajomo nazw pewnej liczby obiektw (poniewa obiekty wstawiamy do projektu najczciej
wpisujc ich nazwy za pomoc klawiatury). Mysz przyda si jednak podczas graficznego czenia
ze sob poszczeglnych obiektw.
Poza samymi nazwami obiektw (zestaw obiektw, od ktrych warto zacz poznawanie obu
rodowisk zostanie omwiony poniej) warto przyswoi sobie kilka skrtw klawiaturowych
umoliwiajcych szybk prac: edycj i testowanie projektw.
Dla MaxMSP i PD podstawowym skrtem klawiaturowym umoliwiajcym wchodzenie i
wychodzenie z trybu edycji jest [APPLE] + [e] (Mac) lub [ctrl] + [e] (PC). Z tego skrtu korzysta
bdziemy bodaj najczciej. Pozostae wane skrty klawiaturowe (mam na myli te, ktre jak
zapis czy adowanie projektw nie s bezporednio zwizane z interakcj z systemem
operacyjnym) nie s ju niestety jednakowe dla obu rodowisk.
Tak wic dla MaxMSP bdziemy najczciej posugiwali si nastpujcymi skrtami;

[n] tworzy nowy obiekt;

[m] tworzy nowy komunikat;

[c] tworzy komentarz (komentarz bywa czsto lekcewaony, jednak opisywanie od


pocztku swoich projektw pozwoli nam na atwiejszy powrt do nich po jakim czasie i
przypomnienie sobie, w jaki sposb dziaaj);

[i] tworzy pole numeryczne typu cakowitego ( integer);

[f] tworzy pole numeryczne typu zmiennoprzecinkowego ( float);

[APPLE/ctrl] + [shift] + [i] otwiera inspektora obiektu;

natomiast korzystajc z PD:

[APPLE/ctrl] + [1] tworzy nowy obiekt;

[APPLE/ctrl] + [2] tworzy nowy komunikat;

[APPLE/ctrl] + [3] tworzy nowe pole numeryczne;

[APPLE/ctrl] + [4] tworzy nowy obiekt typu symbol;


-3-

[APPLE/ctrl] + [5] tworzy nowy komentarz (komentarze w przypadku projektw


pisanych w PD s rwnie istotne, jak w MaxMSP).

-4-

Typy danych
MaxMSP i PD posuguj si do podobnym zestawem podstawowych typw danych (cho oba
rodowiska posiadaj swoje wasne typy, niekoniecznie znajdujce bezporednie odpowiedniki w
bliniaczym rodowisku zaawansowane moliwoci obsugi zoonych typw danych znaczco
wpywaj na zasadno uycia jednego lub drugiego rodowiska w konkretnych aplikacjach). Pena
lista typw danych moe zosta wyszukana w dokumentacji rodowisk, ale pocztkujcy
programici powinni zapozna si najpierw z kilkoma najwaniejszymi.
Dla MaxMSP s to:

bang (bang) najprostsza moliwa informacja przepywajca pomidzy obiektami (rodzaj


impulsu: zaszo zdarzenie rdem takiego impulsu moe by np. wcinicie przycisku);
liczby cakowite (integer);

liczby zmiennoprzecinkowe (float);

symbol (symbol) najprociej opisa symbol jako krtki fragment tekstu (tzw. acuch), nie
zawierajcy znakw koca wiersza ( CR);

lista (list) elastyczna tablica przechowujca pewn ilo pozycji w formatach integer, float,
lub symbol

Dla PD:

bang (bang) najprostsza moliwa informacja przepywajca pomidzy obiektami (rodzaj


impulsu: zaszo zdarzenie rdem takiego impulsu moe by np. wcinicie przycisku);

liczby zmiennoprzecinkowe (float);

symbol (symbol) najprociej opisa symbol jako krtki fragment tekstu (tzw. acuch), nie
zawierajcy znakw koca wiersza ( CR);

lista elastyczna tablica przechowujca pewn ilo pozycji w formatach float lub symbol.

-5-

Typy obiektw
Typy obiektw (innymi sowy: elementw, ktre moemy wstawia do naszych projektw) to
temat, ktrego skrtowe omwienie wymaga podobnych zastrzee, jak w przypadku omwionych
wyej typw danych. Tak wic: MaxMSP i PD dysponuj podobnym zakresem podstawowych
typw obiektw, rni si natomiast zestawami obiektw realizujcych bardziej zoone funkcje
(w szczeglnoci dotyczy to obiektw GUI).
Pracujc z MaxMSP bdziemy pocztkowo stosowa i czy ze sob nastpujce elementy:

obiekt (object) czyli obiekty waciwe, po utworzeniu nowego obiektu takiego typu (np.
poprzez wcinicie klawisza [n] w trybie edycji) pojawi si w naszym ekranie puste pole, w
ktre moemy wpisa nazw i parametry obiektu, ktry zamierzamy utworzy;

komunikat (message) prosty a zarazem funkcjonalny kontener przechowujcy dane


(zarazem speniajcy funkcj przycisku, poniewa po klikniciu jeli nie jestemy akurat
w trybie edycji komunikat przele przechowywane przez siebie dane do poczonych z nim
obiektw, komunikat zawierajcy jedynie cig znakw bang dziaa tak jak obiekt o tej
samej nazwie), dodatkowo, poprzez piny wejciowe komunikatu, mona oprcz
wyzwalania komunikatu wykonywa pewne proste operacje na przechowywanych danych ,
aby wstawi do projektu tego typu obiekt wystarczy w trybie edycji wcisn klawisz [m] ;

pole numeryczne cakowite ( integer) przechowuje, wywietla i pozwala wpisa (z pomoc


klawiatury lub myszy) liczb cakowit , aby wstawi do projektu tego typu obiekt wystarczy
w trybie edycji wcisn klawisz [i] ;

pole numeryczne zmiennoprzecinkowe ( float) przechowuje, wywietla i pozwala wpisa


(z pomoc klawiatury lub myszy) liczb zmiennoprzecinkow, aby wstawi do projektu
tego typu obiekt wystarczy w trybie edycji wcisn klawisz [f];

komentarz (comment) przechowuje i wywietla acuchy tekstowe, znakomicie nadaje si


do biecego wpisywania notatek i opisywania projektu, aby wstawi do projektu tego typu
obiekt wystarczy w trybie edycji wcisn klawisz [c];

bang (bang) - jeden z obiektw GUI, najprostszy przycisk, ktory po klikniciu wysya
impuls bang; poniewa obiekt posiada rwnie inlet, moe suy jako prosty reduktor
dowolnych danych do impulsu bang, aby wstawi do projektu tego typu obiekt wystarczy
w trybie edycji wcisn klawisz [b];

toggle - jeden z obiektw GUI, pole wyboru, ktre moe przyjmowa wartoci 0
(niezaznaczone) lub 1 (zaznaczone) , aby wstawi do projektu tego typu obiekt wystarczy w
trybie edycji wcisn klawisz [t];

inne obiekty GUI w zalenoci od potrzeb bdziemy stosowali take obiekty takie jak
suwaki, pokrta, czy pola tekstowe.

Natomiast korzystajc z PD bdziemy pocztkowo stosowa i czy ze sob elementy takie jak:

obiekt (object) czyli obiekty waciwe, po utworzeniu nowego obiektu takiego typu (np.
poprzez wcinicie kombinacji klawiszy [APPLE/ctrl] + [1] w trybie edycji) pojawi si w
naszym ekranie puste pole, w ktre moemy wpisa nazw i parametry obiektu, ktry
-6-

zamierzamy utworzy;
komunikat (message) prosty a zarazem funkcjonalny
kontener przechowujcy dane (zarazem speniajcy
funkcj przycisku, poniewa po klikniciu jeli nie
jestemy akurat w trybie edycji komunikat przele
przechowywane przez siebie dane do poczonych z
nim obiektw, komunikat zawierajcy jedynie cig
znakw bang dziaa tak jak obiekt o tej samej
nazwie), dodatkowo, poprzez pin wejciowy
komunikatu, mona oprcz wyzwalania go
wykonywa pewne proste operacje na
przechowywanych danych, aby wstawi do projektu tego typu obiekt wystarczy w trybie
edycji wcisn kombinacj klawiszy [APPLE/ctrl] + [2] ;

PD

pole numeryczne zmiennoprzecinkowe ( float) przechowuje, wywietla i pozwala wpisa


(z pomoc klawiatury lub myszy) liczb zmiennoprzecinkow, aby wstawi do projektu
tego typu obiekt wystarczy w trybie edycji wcisn kombinacj klawiszy [APPLE/ctrl] +
[3];

symbol (symbol) odpowiednik pole numerycznego dla danych typu symbol, ktre
przechowuje, wywietla i pozwala edytowa (wpisywa z klawiatury po wyjciu z trybu
edycji i klikniciu na obiekt), aby wstawi do projektu tego typu obiekt wystarczy w trybie
edycji wcisn kombinacj klawiszy [APPLE/ctrl] + [4];

komentarz (comment) przechowuje i wywietla acuchy tekstowe, znakomicie nadaje si


do biecego wpisywania notatek i opisywania projektu, aby wstawi do projektu tego typu
obiekt wystarczy w trybie edycji wcisn kombinacj klawiszy [APPLE/ctrl] + [5];

bang (bang) - jeden z obiektw GUI, najprostszy przycisk, ktory po klikniciu wysya
impuls bang; poniewa obiekt posiada rwnie inlet, moe suy jako prosty reduktor
dowolnych danych do impulsu bang, aby wstawi do projektu tego typu obiekt wystarczy
w trybie edycji wcisn kombinacj klawiszy [APPLE/ctrl] + [shift] + [b];

toggle - jeden z obiektw GUI, pole wyboru, ktre moe przyjmowa wartoci 0
(niezaznaczone) lub 1 (zaznaczone) , aby wstawi do projektu tego typu obiekt wystarczy w
trybie edycji wcisn kombinacj klawiszy [APPLE/ctrl] + [shift] + [t];

inne obiekty GUI w zalenoci od potrzeb bdziemy stosowali take obiekty takie jak
suwaki, pokrta, czy pola tekstowe;

tablica (Array) kombinacja tablicy przechowujcej dane numeryczne (analogicznej do


tablic uywanych w innych jzykach programowania, np. C++) z mechanizmem
wywietlania danych z tablicy i edycji za pomoc myszy lub klawiatury, tablice wstawiamy
do projektu wybierajc z menu Put pozycj Array.

-7-

Obiekty, ktre warto pozna


Obiekt w MaxMSP i PD to podstawowa jednostka przetwarzania i niekiedy przechowywania
informacji. Termin jest w prostej linii wywiedziony z paradygmatu programowania obiektowego
(termin programowanie obiektowe oznacza sposb organizacji kodu i danych w klasycznym
programowaniu, i nie naley go myli z obiektowoci w styluMaxMSP i PD), jakkolwiek w
przypadku praktycznie wszystkich wizualnych jzykw programowania obiekt, wie si z
graficzn reprezentacj jakiej funkcji lub zbioru informacji. Niemniej obiekty su do
manipulowania danymi (ktrych przepyw jest wizualizowany za pomoc wirtualnych
przewodw).
Znajomo dziaania i umiejtno posugiwania si pewn liczb obiektw jest szalenie istotna
zarwno w przypadku MaxMSP, jak i PD. Pocztkowo moemy czu si nieco zagubieni iloci
dostpnych w obu rodowiskach obiektw, ale uczc si kilku kilkunastu najczciej stosowanych
szybko poznajemy nie tylko sam ide pracy w wybranym przez nas rodowisku, ale rwnie
poznajemy stopniowo kolejne obiekty (sprzyja temu system pomocy kontekstowej obu rodowisk,
w ktrym dziaanie poszczeglnych obiektw wyjaniane jest za pomoc przykadw bdcych
funkcjonalnymi projektami dziaania konkretnego obiektu uczymy si poznajc jego interakcj z
innymi obiektami).
Przyjrzyjmy si zatem kilku wybranym obiektom i ich dziaaniu.
print

MaxMSP

PD

Obiekt print zazwyczaj stosujemy podczas testw


projektu. Jego dziaanie jest bardzo proste: wszystkie
informacje przesane do wejciowego pinu s przez obiekt
przekierowywane do okna konsoli (Max Window w
MaxMSP).

przykady:

podstawy/common/print1.maxpat
podstawy/common/print1.pd

gate
gate to prosty przecznik
umoliwiajcy
przekierowanie strumienia
danych przesyanych na jego
wejcie (pin po prawej
stronie) do jednego z wyj.
Ilo wyj okrelamy
parametrem wpisanym po
MaxMSP
nazwie obiektu. Wejciowy
PD
pin po lewej stronie suy do
sterowania obiektem: moemy aktywowa wybrane wyjcie przesyajc obiektowi jego numer. 0
(zero) przesane do obiektu dezaktywuje wszystkie wyjcia (blokuje obiekt).
Analogicznie do obiektu gate dziaa obiekt switch jednake suy on do przekierowywania
-8-

jednego z wielu strumieni danych (ilo strumieni rwnie moemy okreli za pomoc parametru
po nazwie obiektu) na wyjcie.
przykady:

podstawy/common/gate1.maxpat
podstawy/common/gate1.pd

metro
Obiekt metro wysya na swoje wyjcie impuls
(bang) z czstotliwoci okrelon przez parametr
podany po nazwie obiektu. Parametr wskazuje ile
milisekund upynie pomidzy kolejnymi impulsami.
Wejciowy pin po lewej stronie suy do wczania
lub wyczania obiektu (0 lub 1), a wejciowy
pin po prawej stronie pozwala na zmian
czstotliwoci wysyania impulsw (np. kontrol
MaxMSP
PD
poprzez inny obiekt, itp.). Zarwno MaxMSP jak i
PD pozwalaj na bardziej zaawansowane uycie obiektu metro (MaxMSP) lub wykorzystanie
zastpczych obiektw o wikszych moliwociach (PD).
przykady:

podstawy/common/metro1.maxpat
podstawy/common/metro1.pd

line
Obiekt line (wystpuje te w wersji sygnaowej
line~, a dodatkowo PD posiada te wersj obiektu o
podwyszone precyzji vline~) generuje pynne
przejcie pomidzy dwiema zadanymi wartociami w
zadanym czasie. Skadnia (moliwe do zastosowania
zestawy parametrw) obiektu rni si nieco w wersjach
dla MaxMSP i PD, jednak podstawowa forma pracy z
PD
MaxMSP
line jest podobna w obu rodowiskach. Typowy
sposb kontrolowania obiektu line polega na przekazywaniu mu parametrw w postaci list
zawierajcych dwie liczby: pierwsza okrela docelow warto generowan przez obiekt, a druga
czas w milisekundach do osignicia docelowej wartoci.
Czsto obiektu tego uywa si do
kreowania obwiedni (envelopes)
jakkolwiek zarwno MaxMSP jak i PD
posiadaj na wyposaeniu
specjalizowane obiekty do budowy
klasycznych typw obwiedni (np.
ADSR), to elastyczno obiektu line
sprawia, e moe by zastosowany do
tworzenia obwiedni nietypowych,
trudnych do uzyskania w inny sposb.
MaxMSP

PD

-9-

przykady:

podstawy/common/line1.maxpat
podstawy/common/line2.maxpat
podstawy/common/line1.pd
podstawy/common/line2.pd

trigger

trigger (obiekt wystpuje te pod aliasem t)


pozwala na porzdkowanie przepywu informacji
pomidzy obiektami. Ilo pinw wyjciowych
obiektu trigger jest zalena od iloci
parametrw podanych po nazwie. Po przesaniu
informacji do pinu wejciowego trigger
dystrybuuje je przekierowujc dane na swoje
kolejne piny wyjciowe (w kolejnoci od prawej
do lewej strony).

MaxMSP
PD

trigger jest przydatny w wielu rnych


sytuacjach, w szczeglnoci przy rozwizywaniu problemw zwizanych z aktywizowaniem
obiektw podczas przesyania danych do pinw wejciowych typu cold i budowaniem list.
Innym sposobem wykorzystania obiektu trigger
jest prosta konwersja danych. Dotyczy to gwnie
moliwoci redukcji typw zoonych do
prostszych, np. konwersji list liczb i symboli do
impulsu bang.

MaxMSP
PD

przykady:

podstawy/common/trigger1.maxpat
podstawy/common/trigger2.maxpat
podstawy/common/trigger1.pd
podstawy/common/trigger2.pd

pack, unpack
Para obiektw pack i unpack zwizana jest z tzw. listami (lists). Listy pozwalaj na tworzenie i
manipulowanie danymi uszeregowanymi w cigi (jest to zoony typ danych do podobny do
tablic uywanych w jzyku ActionScript: jednowymiarowe i mogce przechowywa rne typy
danych tablice stosowane np. w C++ i wikszoci klasycznych jzykw programowania zwykle
przechowuj pewn ilo zmiennych lub obiektw tego samego typu). Za pomoc obiektu pack
moemy tworzy listy o iloci i typie elementw zalenym od parametrw podanych po nazwie
obiektu. Obiekt unpack dziaa odwrotnie: umoliwia rozoenie listy na jej poszczeglne elementy
i skierowanie kadego z nich na inny pin wyjciowy obiektu.

- 10 -

MaxMSP

PD

przykady:

podstawy/common/pack-unpack1.maxpat
podstawy/common/pack-unpack1.pd

route
route to rwnie obiekt sucy do
manipulowania listami. obiekt porwnuje
pierwszy element listy przesanej do pinu
wejciowego z parametrami wprowadzonymi po
nazwie i jeli porwnanie daje pozytywny
rezultat przesya list skrcon o pierwszy
element do pinu wyjciowego korespondujcego z
odpowiednim parametrem. W przypadku, kiedy
MaxMSP
aden z parametrw nie odpowiada pierwszemu
elementowi listy przesanej obiektowi, lista
przesana do obiektu jest kopiowana na ostatni pin wyjciowy (pierwszy od prawej strony).

- 11 -

PD
przykady:

podstawy/common/route1.maxpat
podstawy/common/route1.pd

select
Obiekt stanowicy prosty odpowiednik instrukcji
warunkowej w tradycyjnych jzykach
programowania. select porwnuje dane
otrzymane przez pin wejciowy z parametrami i
w przypadku, kiedy porwnanie daje efekt
pozytywny wysya impuls bang na pin
wyjciowy korespondujcy z odpowiednim
PD
parametrem. W przypadku, kiedy aden z
MaxMSP
parametrw nie odpowiada danym przesanym obiektowi, s one
kopiowane na ostatni pin wyjciowy (pierwszy od prawej strony).
przykady:

podstawy/common/select1.maxpat
podstawy/common/select1.pd

send, receive
Para obiektw send i receive (obiekty wystpuj rwnie pod aliasami s i r, ponadto
posiadaj wersje sygnaowe, o nazwach zakoczonych znakami ~) su do przesyania danych
pomidzy obiektami bez prowadzenia pomidzy nimi typowych pocze. Obiekty send i
receive przydaj si zwaszcza w przypadku konstruowania zoonych projektw stosujc je
waciwie moemy unikn pltaniny wirtualnych przewodw.
Zarwno send, jak i receive wymagaj parametru
podanego po nazwie obiektu parametr ten definiuje nazw
poczenia. Innymi sowy: dziki parametrowi obiekt
receive wie, z ktrym obiektem send jest skojarzony.

MaxMSP

Wan cech obiektw send i receive jest globalny


charakter definiowanych przez nie pocze za ich pomoc
moemy przesya informacje pomidzy obiektami
znajdujcymi si w dowolnym miejscu naszego projektu
(take np. w osobnych subpatches lub abstractions). Moe to
by rdem potencjalnych konfliktw (z powodu
wielokrotnego definiowania pocze o tej samej nazwie),
- 12 -

wic jakkolwiek istniej techniki przeciwdziaania tego typu problemom przy uyciu zmiennych
w nazwach obiektw dlatego obiekty send i receive powinny by stosowane rozwanie.
przykady:

podstawy/common/sendreceive1.maxpat
podstawy/common/sendreceive1.pd

- 13 -

Elementy interfejsu uytkownika (GUI)


MaxMSP i PD posiadaj bogate biblioteki
obiektw umoliwiajcych tworzenie
graficznych interfejsw uytkownika
(Graphic User Interfaces).
Oba rodowiska rni si tu do mocno i
trzeba powiedzie, e MaxMSP ma nad PD
spor przewag pod wzgldem iloci i
elastycznoci tego rodzaju obiektw,
ponadto wspiera analogiczny do NI
Reaktor presentation mode alternatywny
w stosunku do uywanego podczas edycji
sposb ulokowania obiektw i ich pocze.
MaxMSP dysponuje jeszcze kilkoma
bardziej zaawansowanymi technikami
MaxMSP
wspierajcymi tworzenie interfejsw, m. in.
elastycznym systemem zarzdzania bankami
ustawie elementw interfejsu. Niemniej rwnie PD pozwala na tworzenie funkcjonalnych i
estetycznych interfejsw uytkownika.
Na obiekty stanowice podstaw
interfejsu uytkownika skadaj
przyciski, suwaki (rwnie w formie
pokrte), pola tekstowe i pola
wyboru, oraz rnego rodzaju obiekty
specjalizowane, np. sekwencery i
obiekty umoliwiajce edycj sampli
(prbek zdigitalizowanego audio), itd.
Osobne grupy stanowi obiekty i
techniki zwizane z modularyzacj
duych projektw i moliwoci
wykorzystania jako interfejsw
zewntrznych aplikacji i urzdze.

PD

Generalnie tworzenie interfejsw uytkownika podlega pewnym uniwersalnym reguom, ktre


cho miao mona je ignorowa w przypadku prostszych projektw nabieraj znaczenia w miar
rozbudowy i komplikowania si naszych patches.
Oto kilka porad dotyczcych budowania interfejsw uytkownika:

MaxMSP i PD pozwalaj tworzy interfejsy w miar rozbudowy projektu, warto z tej


moliwoci korzysta, a dopiero majc gotowy projekt prbowa uporzdkowa
poszczeglne elementy zaoszczdzi nam to wielokrotnego przemieszczania i zmiany
wygldu poszczeglnych elementw interfejsu;

unikajmy interfejsw pstrokatych wizualny chaos w GUI nie sprzyja jego zrozumieniu i
atwemu uytkowaniu. Warto pokusi si o jaki rodzaj estetycznej dyscypliny i korzysta
z moliwoci edycji ksztatw, wielkoci i barw elementw interfejsu w oszczdny sposb,
traktujc te atrybuty jako komunikaty, nie za ozdobniki;
- 14 -

jeli w naszym projekcie pojawia si element interfejsu uytkownika, warto go opisa (uy
komentarza lub moliwoci nadania nazwy obiektowi) czsto po pewnym czasie moemy
zapomnie jaki konkretnie parametr kontrolujemy danym obiektem;

czasem wolimy ukry przed uytkownikiem poczenia pomidzy obiektami, ale zasadniczo
nios one informacj o przebiegu cieki sygnaowej w projekcie ta informacja moe by
uyteczna nie tylko dla projektanta, ale i uytkownika;

na pewnym etapie zaawansowania warto pokusi si o budowania biblioteki wasnych


moduw (abstractions) moliwych do wykorzystania w rnych projektach. Jest to
moliwe zarwno w MaxMSP jak i PD wasne abstractions dobrze jest przygotowa tak,
by ich uycie nie wymagao dodatkowej edycji, jedynie wczytania z dysku: warto wic
opisa wszystkie elementy interfejsu, i i ewentualne parametry (jest to zreszt do
uniwersalna rada, ktra dotyczy nie tylko budowania GUI).

nawet rednio zaawansowani uytkownicy mog pokusi si o spojrzenie na swj projekt z


pewnego dystansu i prb nadania mu oglnej struktury. W przypadku MaxMSP i PD do
dobrze sprawdza si tzw. model dokument-widok, czyli podzia projektu na dwa bloki:
danych i przetwarzajcych je procedur z jednej strony a interfejsu uytkownika z drugiej.
Naturalnie naley podchodzi do tego rozsdnie model dokument -widok ma sens tylko w
przypadku rozbudowanych struktur.

przykady:

podstawy/common/GUI1.maxpat
podstawy/common/GUI1.pd

- 15 -

Zmienne i konstrukcja $x
Umiejtno posugiwania si zmiennymi znaczco poszerza nasze
moliwoci pracy MaxMSP i PD. Cho mona posugiwa si tymi
rodowiskami w sposb analogiczny do klasycznych syntezatorw
modularnych i po prostu czy ze sob poszczeglne komponenty
tworzc mniej lub bardziej skomplikowane cieki sygnaowe, to
jednak moliwoci jakie oferuj zmienne (zwaszcza w zestawieniu z
obiektami realizujcymi operacje i warunki logiczne) pozwalaj na
znaczenie efektywniejsze korzystanie z obu rodowisk i
potraktowanie ich jako penoprawnych jzykw programowania.

MaxMSP

Najprostszym sposobem definiowania i korzystania ze zmiennych jest


wykorzystanie znaku $ (dollar) i nastpujcego po nim indeksu
zmiennej. Najczciej stosuje si zapis $1, co w wolnym tumaczeniu
oznacza pobierz pierwszy parametr z pierwszego wejcia i wstaw
zamiast $1.
Korzystanie ze zmiennych umoliwia m. in. automatyczne
konstruowanie zoonych i zalenych od wielu czynnikw list oraz
PD
kontrolowanie niektrych obiektw odczytujcych skierowane do nich
komunikaty takie komunikaty mog by wwczas kreowane ad hoc
np. obiekt jit.qt.movie w MaxMSP lub pix_film w PD mog odebra komunikat w
formacie: open cieka_dostpu_do_pliku jeli chcemy wykorzysta zamiennie kilka
klipw wideo moemy wykorzysta konstrukcj: open $1 i podmienia w miar potrzeb zmienn
$1 na konkretny adres pliku do wczytania (odpowiednie przykady znajduj si m.in. w rozdziale
powiconym przetwarzaniu obrazu). Istnieje oczywicie wiele innych metod tworzenia i
manipulowania zmiennymi (nie tylko przy wykorzystaniu konstrukcji $x).
Oczywicie zmiennych definiowanych za
pomoc omawianej tutaj konstrukcji moe by
wicej i jak wida na przykadzie obok w
miar potrzeb moemy stosowa zapis $1, $2,
$3... np. w celu wyuskania z listy interesujcej
nas pozycji.
MaxMSP

PD

przykady:

podstawy/common/dollar1.maxpat
podstawy/common/dollar2.maxpat
podstawy/common/dollar1.pd
podstawy/common/dollar2.pd

- 16 -

Wejcia gorce i zimne (hot i cold inlets)


Kontrolne wejcia obiektw (piny)
okrelane s jako gorce i zimne (hot i
cold inlets). Nazwy te lepiej oddaj w
jzyku polskim terminy aktywny i
pasywny. Wejcia gorce s wic
aktywne co oznacza, e przesanie do
nich informacji uruchamia procedury
zaszyte w obiekcie (czsto koczy si to
wysaniem przez obiekt informacji na
swoje wyjcie lub wyjcia), natomiast
informacja przesana do wej zimnych
czyli pasywnych jest przez obiekt
MaxMSP
rejestrowana, natomiast nie uruchamia
obiektu (czy te kodu, jaki obiekt reprezentuje). Nie wszystkie wizualne jzyki programowania
dziel z MaxMSP i PD t formu, ale w naszych rodowiskach ona wystpuje naley umie radzi
sobie z jej nastpstwami.
Tak w MaxMSP jak i w PD wejcie gorce
znajduje si zwykle po lewej stronie obiektu (jest
to wic pierwsze wejcie od lewej strony), a
pozostae piny s zimne z tego wynika e obiekt
ma tylko jedno wejcie gorce i rzeczywicie tak
jest, jednak jak wspomniaem caa idea wej
gorcych i zimnych z oczywistych wzgldw nie
ma zastosowania dla pocze i pinw
sygnaowych.
Problemy z pobudzaniem obiektw do pracy po
przesaniu im informacji na wejcia zimne
PD
rozwizuje si zwykle za pomoc obiektu
trigger i przesania impulsu bang do gorcego pinu obiektu po przesaniu mu waciwych
danych na wejcia zimne (kolejno czynnoci jest w tym wypadku bardzo wana) przesanie
bang do gorcego pinu obiektu uruchamia go i tym samym obiekt przetwarza otrzymane
wczeniej dane.
przykady:

podstawy/common/hot-cold1.maxpat
podstawy/common/hot-cold1.pd

- 17 -

Operatory matematyczne i logiczne

MaxMSP

Operatory matematyczne (takie jak dodawanie, czy odejmowanie) i logiczne (np. operator
porwnania) su do wykonywania dziaa na danych. MaxMSP i PD dysponuj spor iloci
obiektw dziaajcych jako operatory. Operatory logiczne su na og do implementowania w
naszym projekcie reakcji na okrelone warunki i ich kombinacje i obok zmiennych stanowi
podstawowe narzdzia przeksztacajce MaxMSP lub PD w jzyki programowania.
Reguy stosowania operatorw s do uniwersalne i
osoby majce choby podstawowe dowiadczenie w
programowaniu z pewnoci z atwoci odnajd si w
MaxMSP i PD. Jednak i osoby bez takiego
przygotowania mog szybko przyswoi sobie zasady
pracy z operatorami.
Operatory matematyczne i ich dziaanie zasadzie nie
wymagaj specjalnego wprowadzenia, jakkolwiek, w
przeciwiestwie do PD, MaxMSP implementuje dwa
typy danych numerycznych: liczby cakowite ( integer) i
zmiennoprzecinkowe (float), a obiekty w tym
rodowisku domylnie nastawione s na prac z tymi
pierwszymi. Aby otrzymywa poprawne
PD
uwzgldniajce uamki wyniki operacji na danych
zmiennoprzecinkowych naley obiekty biorce udzia w przetwarzaniu takich danych zainicjowa
podajc po nazwie parametr w formacie zmiennoprzecinkowym.
Zarwno MaxMSP jak i PD uywaj kropki jako separatora dla czci dziesitnej, np. 10.5, 0.6,
-3.3; liczby w formacie [cz_cakowita][.] (np. 0., -55., itp.) s interpretowane jako
zmiennoprzecinkowe. Cz operatorw wystpuje w specjalnych wersjach aplikowalnych dla
pocze sygnaowych w takim przypadku nazwy operatorw s uzupenione o znak ~.
przykady:

podstawy/common/ops1.maxpat
podstawy/common/ops1.pd

- 18 -

Poczenia kontrolne i poczenia sygnaowe

MaxMSP

Zrozumienie rnic pomidzy poczeniami kontrolnymi ( control connections) i sygnaowymi


(signal connections) jest istotne nie tylko w kontekcie pracy z dwikiem, z ktrym poczenia
sygnaowe s zwykle kojarzone, ale wszdzie tam, gdzie mamy do czynienia z mediami, ktre
musimy precyzyjnie pozycjonowa w czasie. Poczenia sygnaowe oddaj na w takich wypadkach
nieocenione usugi.
Sama koncepcja podziau
pocze na kontrolne i
sygnaowe zostaa przez
MaxMSP i PD (i oglnie:
wikszo wizualnych
rodowisk programistycznych)
przejta ze starszych jzykw
programowania
nakierowanych na obrbk
dwiku gwnym rdem
inspiracji by tu jzyk Csound.
PD
Z wielu rnych powodw
wygodnie jest podzieli
przetwarzane informacje dwie grupy, w zalenoci od sposobu w jaki zamierzamy finalnie je
interpretowa. Generalnie poczenia kontrolne s aktywizowane naszymi dziaaniami, natomiast
dane przepywajce przez poczenia sygnaowe s przez nas modulowane. Poczenia sygnaowe
generuj ponadto cigy strumie danych, niezalenie od tego, czy w danym momencie przesyamy
do generujcych sygnay obiektw jakie komunikaty.
W praktyce, jeli np. tworzymy wasny instrument (syntezator) bdziemy potrzebowa
oscylatorw obiektw generujcych przebiegi dwikowe. Takie s w rodowisku cyfrowym
reprezentowane przez strumie liczb (przesyanych po obrbce do karty dwikowej), ktrych
wartoci odwzorowuj fal, jak chcemy uzyska (czstotliwo przepywu takich liczb moe by
rna, ale np. dla sygnau o jakoci pyty CD bdzie 44.1kHz, czyli 44100 razy na sekund). Tak
wic w takim wypadku mamy do czynienia z sygnaem i moemy, zaoy, e wszelkie metody
obrbki (np. filtracja) wygenerowanego przebiegu rwnie polega bd na nieustannym
przetwarzaniu owego strumienia liczb poczenia pomidzy takimi komponentami rwnie bd
- 19 -

miay charakter sygnaowy. Bd to wanie nasze poczenia sygnaowe.


Z drugiej strony: jeli potrzebna nam jest informacja o naciniciu przycisku (wszystko jedno
wirtualnego, czy fizycznego), to niemal na pewno nie bdziemy musieli tej informacji
pozycjonowa w czasie z dokadnoci do dziesiciotysicznych czci sekundy (trudno sobie
wyobrazi wciskanie w takim tempie jakiegokolwiek przycisku). Bdzie to pojedynczy impuls
reprezentujcy informacj zosta wcinity przycisk tego rodzaju informacja, suca czsto do
kontroli innych obiektw jest przesyana poczeniami kontrolnymi.
Jakkolwiek poczenia sygnaowe mog przenosi dowolny rodzaj informacji, to aby lepiej
zrozumie ich natur warto na pocztku pozosta przy ich wykorzystaniu w kontekcie
generowania i przetwarzania dwiku. Poczenia sygnaowe moemy porwna do przewodw,
ktrymi przesyamy dwik (dwik pynie przewodem niezalenie od naszej bezporedniej
interakcji i dopiero wypicie przewodu z gniazda zatrzyma go). Natomiast, gdybymy wyobrazili
sobie, e nasz hipotetyczny przewd doprowadza dwik do wzmacniacza, to moemy rwnie
zaoy, e wzmacniacz taki bdzie mg by wczony lub wyczony a wic kontrolowany
jakim rodzajem przycisku. Przycisk taki bdzie jedynie odcina lub wcza dopyw prdu do
wzmacniacza i to tylko w momencie, kiedy go wciniemy charakter jego zadania naley wic
do kontrolnych.
W praktyce, w rodowiskach MaxMSP i PD obiekty posugujce si poczeniami sygnaowymi
zwykle posiadaj znak ~ na kocu nazwy (ale przed ewentualnymi parametrami!), za same
poczenia s pogrubione (PD) lub zaznaczone kolorem i przerywan lini (MaxMSP).
Czstotliwo przesyania danych przez poczenia sygnaowe zwykle definiowana jest na 441.kHz
lub wyej i z powodw technologicznych jest staa. Natomiast czstotliwo, z jak dane przesyane
s przez poczenia kontrolne zaley od naszej aktywnoci (ewentualnie od aktywnoci obiektw w
rodzaju line lub metro), jednak nie osiga nigdy czstotliwoci porwnywalnych z poczeniami
sygnaowymi.
Specyficzn cech pocze sygnaowych jest to, e mog by nimi przesyane wycznie liczby (a
dokadniej: liczby w formacie zmiennoprzecinkowym, tzw. float). Wartoci, jakie mog by
przesyane przez poczenia sygnaowe s w zasadzie dowolne (w ramach moliwoci systemu
operacyjnego), ale dla sygnaw wysyanych do karty dwikowej jako audio powinny si mieci
w przedziale od -1 do 1 w przeciwnym wypadku dwik bdzie przesterowany, moemy si te
spodziewa niestabilnego zachowania rodowiska (MaxMSP lub PD) w ktrym pracujemy.
przykady:

podstawy/common/ctrl-sig1.maxpat
podstawy/common/ctrl-sig1.pd

- 20 -

Wicej obiektw: dwik


Obiekty zwizane z przetwarzaniem dwiku zwykle pracuj w oparciu o poczenia sygnaowe.
Podstawowy zestaw obiektw zwizanych dwikiem jest niejako wbudowany w PD, natomiast
w przypadku MaxMSP jest to specjalna biblioteka (rozszerzenie) nie ma to wikszego wpywu na
sposb pracy z dwikiem w obu rodowiskach. Warto natomiast pamita koniecznoci wczenia
przetwarzania dwiku (w przypadku PD poprzez zaznaczenie opcji compute audio w oknie
gwnym programu, w MaxMSP klikajc w obiekt ezdac~, ktry zosta wykorzystany w
przykadach) w przeciwnym razie wobec braku syszalnego rezultatu bdziemy by moe
szuka w naszych projektach nieistniejcego bdu. We wasnych projektach moemy oczywicie
skorzysta z moliwego do zaimplementowania w obu rodowiskach wczenia przetwarzania
audio automatycznie po zaadowaniu projektu.
cycle~, dac~, ezdac~
Obiekt cycle~ to prosty oscylator generujcy fal
sinusoidaln o czstotliwoci, ktr moemy okreli (w Hz)
wpisujc parametr po nazwie obiektu i/lub wysyajc do
pierwszego wejcia obiektu odpowiedni warto (co
istotne, obiekt akceptuje rwnie poczenia sygnaowe).
Wartoci generowane przez obiekt mieszcz si w typowym
dla funkcji sinus przedziale od -1 do 1.
PD

W przypadku PD obiekt cycle~ mona te zastpi przez


osc~ dziaaj one w zasadzie identycznie. osc~ to natywny obiekt PD,
natomiast cycle~ jest obiektem doczanym z jednej z zewntrznych bibliotek (biblioteka ta, o
nazwie Cyclone zawiera zestaw obiektw uatwiajcych konstruowanie w PD projektw przy
wykorzystaniu obiektw o nazwach i zestawach parametrw identycznych, jak w MaxMSP).
MaxMSP

Kilka sw warto powici take obiektom dac~ i ezdac~. Reprezentuj one wyjcie karty
dwikowej (portu audio). Standardowo dwa piny wejciowe obiektw odpowiadaj lewemu i
prawemu kanaowi stereo, ale obiekty mona konfigurowa tak, by obsugiway wiksz lub
mniejsz liczb kanaw. W przypadku projektu w MaxMSP ze wzgldu na wygod wykorzystany
zosta obiekt ezdac~ MaxMSP dysponuje rwnie analogicznym do obecnego w PD obiektem
dac~.
Moliwo kontrolowania oscylatorw poprzez poczenia
sygnaowe (a wic np. innymi oscylatorami) otwiera drog
do wielu ciekawych brzmie. Stosunkowo atwo zbudowa
przy wykorzystaniu tej moliwoci np. syntezator z opcj
modulacji czstotliwociowej i wiele innych struktur.

MaxMSP

Stosujc w obrbie jednego projektu wiele wzajemnie na


siebie wpywajcych syntezatorw warto pamita o
moliwoci wpywania na ich przebiegi za pomoc
PD
operatorw w wersji sygnaowej (np. *~ lub +~ ten drugi
przyda si zwaszcza, kiedy chcemy zsumowa przebiegi z dwch
oscylatorw).

- 21 -

Zestawianie struktur zoonych z


kilku kilkunastu oscylatorw (i w
miar nabywania nowych
umiejtnoci filtrw i innych
obiektw) daje rezultaty podobne
do osigalnych za pomoc
klasycznych, analogowych
syntezatorw modularnych.
Naturalnie w przypadku cyfrowej
emulacji tego rodzaju syntezatorw
nie jestemy ograniczeni do
struktur zoonych z pewnej
ograniczonej liczby moduw
dooenie np. kolejnego oscylatora
nie wie si przecie z
koniecznoci posiadania

PD
MaxMSP

fizycznego egzemplarza tego.

przykady:

podstawy/snd/oscils~1.maxpat
podstawy/snd/oscils~2.maxpat
podstawy/snd/oscils~3.maxpat
podstawy/snd/oscils~1.pd
podstawy/snd/oscils~2.pd
podstawy/snd/oscils~3.pd

noise~, onepole~
Przebiegi oscylatorw (i generalnie jakiekolwiek dane
przekazywane poprzez poczenia sygnaowe) mona
poddawa obrbce. Poza zastosowanymi w poprzednich
wiczeniu operatorami matematycznymi istniej
specjalizowane obiekty realizujce rnego rodzaju
przeksztacenia, np. filtracj. Do takiej kategorii zalicza si
obiekt onepole~ to typowy filtr dolnoprzepustowy
kontrolowany za pomoc jednego parametru: czstotliwoci
PD
odcicia. W naszym wiczeniu rdem sygnau
podawanego na wejcie obiektu onepole~ jest oscylator
noise~, generujcy tzw. biay szum przebieg szumowy o energii
rwnomiernie rozoonej w caym pamie akustycznym. Za pomoc pola
MaxMSP
numerycznego moemy kontrolowa czstotliwo odcicia filtra
(oczywicie czstotliwo moemy wstpnie zdefiniowa za pomoc parametru wpisanego po
nazwie obiektu).
przykady:

podstawy/snd/onepole~1.maxpat
podstawy/snd/onepole~1.pd

- 22 -

tapin~, tapout~ / delwrite~, delread~


Pary obiektw tapin~ i tapout~
(MaxMSP) oraz delwrite~ i
delread~ (PD) su do budowania
linii opniajcych. W przypadku
MaxMSP oba obiekty musz by
poczone ze sob (dziki temu, jeli
tworzymy wiksz ilo linii
opniajcych, moemy skojarzy ze
sob odpowiednie pary obiektw),
ponadto obiektowi tapin~ podajemy
parametr okrelajcy maksymalny czas
opnienia (w milisekundach), a
parametr obiektu tapout~ okrela
aktualny czas opnienia (nie moe
MaxMSP
by on wikszy ni maksymalne
opnienie podane w parametrze
obiektu tapin~ aktualne opnienie moemy zmieni za pomoc pinu wejciowego obiektu, na
ktry moemy poda now warto opnienia). Sygna podany na wejcie obiektu tapin~
moemy odczyta z wyjcia obiektu tapout~, opniony o zadany czas.
W przypadku PD i obiektw delwrite~ i
delread~ skadnia jest nieco inna, cho
podobna. delwrite~ wymaga podania
dwch parametrw: nazwy dla tworzonej
linii opniajcej i maksymalnej dugoci
opnienia (w milisekundach). Obiekt
delread~ wymaga podania jednego
parametru: nazwy linii opniajcej, z
ktrej ma odczytywa dane. W
przeciwiestwie do analogicznej pary
obiektw z MaxMSP obiekty delwrite~
i delread~ nie wymagaj poczenia
pomidzy sob (t rol spenia parametr
PD
definiujcy nazw linii opniajcej).
Obiekt delread~ moe by kontrolowany za pomoc swojego pinu wejciowego korzystajc z
tego pinu moemy zmieni aktualny czas opnienia od zera do wartoci zdefiniowanej przez
parametr podany obiektowi delwrite~.
Podstawow technik pracy zwizan z liniami opniajcymi jest tworzenie ptli sprzenia
zwrotnego (feedback) stanowicych podstaw niemal wszystkich algorytmw pogosowych (w tym
miejscu warto zaznaczy, e sprzenie zwrotne jest wykorzystywane rwnie podczas
przetwarzania danych wizualnych).
przykady:

podstawy/snd/feedback_(delay)1.maxpat
podstawy/snd/feedback_(delay)1.pd

- 23 -

sfplay~ / readsf~

PD
MaxMSP

Obiekty sfplay~ (MaxMSP) i readsf~


pozwalaj na odtworzenie zdigitalizowanego
dwiku (sampli). Wyjcia (oczywicie s to
piny w formacie sygnaowym) obu obiektw
moemy skierowa do karty dwikowej lub np.
uy mieszajc z sygnaami generowanymi
przez oscylatory lub inne obiekty. Zasadniczo
obsuga sfplay~ i readsf~ jest podobna i
sprowadza si do zaadowania prbki i
uruchomienia odtwarzania. Skrajne prawe
wyjcie obu obiektw peni t sam funkcj:
wysya sygna bang po zakoczeniu

odtwarzani pliku.

W przypadku PD przykadowy patch korzysta dodatkowo z obiektu openpanel przesanie do


tego obiektu impulsu bang powoduje otwarcie okna umoliwiajcego wybr pliku. Po
zatwierdzeniu wyboru obiekt przekazuje wyrzuca adres pliku na zwj pin wyjciowy.
przykady:

podstawy/snd/samplesLong1.maxpat
podstawy/snd/samplesLong1.pd

buffer~, play~ / array~, tabread4~


Zdigitalizowane prbki mona
take odtwarza w nieco inny,
dajcy wiksze moliwoci
wpywu na sposb odtwarzania
sposb. Obiekt buffer~ (Max),
bd Array (PD) pozwala na
zdefiniowanie obszaru pamici
traktowanego jako tzw. tablica
(array). Tablice mona wypenia
rnego rodzaju informacjami, w
szczeglnoci mona wczytywa
do nich sample dwikowe. W
obu przypadkach tablice naley
nazwa, by umoliwi dostp do

MaxMSP

nich innym obiektom.


Dane z tablicy mona odtwarza np. za pomoc obiektu play~ (Max) i tabread4~ (PD) oba
obiekty obsugujemy w do podobny sposb przekazujc na ich pin wejciowy indeks elementu
tablicy, ktry zamierzamy pobra. wietnie sprawdza si w tym celu oscylator phasor~
generujcy przebieg pioksztatny o wartociach w zakresie od 0 do 1: mnoc te wartoci przez
dugo tablicy moemy w atwy sposb zapewni sobie dostp do jej wszystkich elementw.
Dugo tablicy otrzymamy za pomoc obiektu info~ (MaxMSP) lub soundfiler~ (PD) ten
ostatni obiekt suy w PD rwnie do wypeniania tablic zawartoci pliku.

- 24 -

Istotn cech sampli przechowywanych w


tablicach jest moliwo ich odtwarzania przy
uyciu rnych technik zademonstrowana
konstrukcja wykorzystujca phasor~ jest
najprostsz z moliwych: nic przecie nie stoi
na przeszkodzie, by do odtwarzania prbek
wykorzysta dowoln struktur oscylatorw
lub np. obiektw typu line~.
przykady:

PD

- 25 -

podstawy/snd/samplesInRAM1.maxpat
podstawy/snd/samplesInRAM1.pd

Jeszcze wicej obiektw: obraz


Tak MaxMSP jak i PD umoliwiaj generowanie i przetwarzanie obrazu, oba rodowiska czyni to
za pomoc specjalnych bibliotek. Dla MaxMSP jest to Jitter, dla PD istnieje kilka tego typu
rozszerze, przy czym my zajmiemy si bibliotek GEM jedn z najczciej stosowanych i
najbardziej uniwersalnych.
Jitter i GEM s zbudowane w nieco podobny sposb: jedna i druga biblioteka umoliwia obrbk
danych graficznych (w tym rysowanie, wczytywanie plikw graficznych i wideo, odczyt danych z
kamery) niejako w pamici komputera i przy wykorzystaniu procesora, a nastpnie przesaniu
danych graficznych do karty graficznej i obrbk za pomoc procesora i moliwoci samej karty
daje to ogromne moliwoci ksztatowania estetycznej strony tworzonego obrazu przy optymalnym
wykorzystaniu mocy i zasobw komputera.
Techniczna strona obsugi bibliotek Jitter i GEM rni si do znaczenie, jednak dla osb, ktre
zapoznay si z poprzednimi wiczeniami nie powinno to stanowi problemu. Zasadniczo w
przypadku Jitter dane graficzne musimy explicite skierowa do okna wywietlajcego obraz
(zwykle jit.window lub jit.pwindow), natomiast GEM korzysta z obiektu gemhead jako
cznika pomidzy oknem, w ktrym dane s wywietlane, a oknem, w ktrym tworzymy nasz
projekt.
jit.qt.movie, pix_image
Obiekty jit.qt.movie (MaxMSP) i pix_image (PD) mog
posuy do wczytania statycznych obrazw (obiekt
jit.qt.movie ma, jak wskazuje nazwa i jak si przekonamy w
kolejnym wiczeniu, duo wiksze moliwoci).

MaxMSP

Jitter i GEM nieco inaczej podchodz do zagadnie samego


wywietlania, std w przypadku tego pierwszego wystarczy
skierowa dane wyjciowe z obiektu jit.qt.movie do obiektu
jit.window, natomiast uytkownicy biblioteki GEM musz
posuy si obiektem gemwin w celu zdefiniowania parametrw
okna, w ktrym wywietlany bdzie obraz, ale przede wszystkim
uy obiektu pix_texture w celu wysania obrazu do karty
graficznej (zamienieniu na tekstur) i naoenia
tekstury na obiekt (w naszym przykadzie jest to
prostokt).
Litery qt w nazwie obiektu jit.qt.movie
odnosz si do grupy obiektw korzystajcych z
mliwoci Apple Quicktime Jitter wspiera ten
format i wiele moliwoci QuickTime'a jest
dostpnych z poziomu obiektw biblioteki Jitter.
przykady:

PD

- 26 -

podstawy/img/loadingimages1.maxpat
podstawy/img/loadingimages1.pd

jit.qt.movie (raz jeszcze), pix_film


Odtwarzanie wideo w obu rodowiskach wymaga
niewiele wicej zachodu, ni wczytywanie statycznych
obrazw: Jitter korzysta do tego celu ze znanego ju
nam obiektu jit.qt.movie, natomiast GEM z
obiektu pix_film, obsugiwanego w sposb
podobny do pix_image, z t rnic, e pix_film
dysponuje kilkoma dodatkowymi moliwociami, m.
in rcznym sterowaniem odtwarzania wideo za
porednictwem drugiego w kolejnoci pinu
wejciowego (pierwszy pin od prawej strony).
Warto jeszcze zwrci uwag na obecno obiektu
metro w projekcie MaxMSP impulsy bang
wysyane przez ten obiekt wymuszaj odwieenie
okna wywietlajcego grafik. W przypadku
GEM okno jest odwieane automatycznie z
czstotliwoci, ktr moemy zdefiniowa za
pomoc odpowiednich komunikatw
przekazywanych do obiektu gemwin.

MaxMSP

PD
przykady:

podstawy/img/playingvideofiles1.maxpat
podstawy/img/playingvideofiles1.pd

jit.qt.grab, pix_video
Odczyt strumienia wideo z
kamery podczonej do
komputera lub wbudowanej np.
w laptop przeprowadzi mona
za pomoc obiektu
jit.qt.grab (Jitter) lub
pix_video (GEM). Osoby
korzystajce z MaxMSP w
PD
rodowisku Windows mog
pokusi si o skorzystanie z obiektu jit.dx.grab zwykle zapewni on
wysz wydajno, ni obiekt jit.qt.grab, ktry w systemach
MaxMSP
operacyjnych firmy Microsoft pracuje niestabilnie i pochania spor cz
mocy obliczeniowej komputera.
- 27 -

przykady:

podstawy/img/camera1.maxpat
podstawy/img/camera1.pd

- 28 -

Przetwarzanie obrazu (Jitter i GEM w praktyce proste przykady)


Jak pisaem wczeniej, architektura Jitter i GEM rni si do znaczco, dlatego nawet
nieskomplikowane projekty przetwarzajce dane graficzne do szybko zaczn rozwija si w
odmiennych kierunkach.

MaxMSP

PD

W szczeglnoci Jitter moe wydawa si nieco tajemniczy. Jakkolwiek nie dotyczy to


bezporednio przedstawionych poniej wicze, warto zapozna si z dokumentacj techniczn
Jitter pod ktem zrozumienia dziaania matryc (matrixes) jest to typ danych specyficzny wanie
dla Jittera, bazuje na listach, jednak atwiej wyobrazi go sobie jako tabel zawierajc
- 29 -

uporzdkowane w wiersze i kolumny dane pikseli obrazu uzupenione o informacje o formacie,


wielkoci rotacji itp. Sprawne posugiwanie si matrycami umoliwi nam kreowanie wasnych,
niepowtarzalnych metod procesowania wideo.
Typowy tor przetwarzania obrazu korzystajcy z biblioteki Jitter moe wyglda jak wyej: dwa
obiekty jit.qt.movie odpowiadaj za wczytywanie obrazw, kady z nich wysya dane do
obiektu jit.qt.effect. Obiekt jit.qt.effect pozwala na wczenie we wasny tor
przetwarzania obrazu efektw wbudowanych w Apple QuickTime (komunikat dialog pozwala na
ustawienie rodzaju i parametrw efektw). Istotnymi elementami projektu s rwnie obiekty
trigger zapewniajce dystrybucj informacji o wczytaniu nowego obrazu lub zmianie rodzajw albo
parametrw efektu dziki czemu okno i wszystkie obiekty s odwieane w odpowiednich
momentach.
Innym wanym obiektem jest jit.op jest to odpowiednik obiektw realizujcych operacje
matematyczne i logiczne na prostszych typach danych. Korzystajc z instancji obiektu jit.op
moemy nie tylko jak w wiczeniu odejmowa od siebie dwa obrazy, ale te tworzy wasne
efekty i algorytmy procesowania obrazu.
Przedstawiony poniej projekt korzystajcy z GEM ilustruje natomiast sposb budowania podobnej
struktury w PD. GEM nie dysponuje w zasadzie obiektem podobnym do jit.qt.effect
(jakkolwiek, podobnie zreszt jak i Jitter jest w stanie wczy w tor przetwarzania pluginy w
formacie FreeFrame), ale dysponuje wasnym zestawem wyspecjalizowanych obiektw
efektowych.
Podobnie rzecz ma si w przypadku aplikowania na obrazie operatorw matematycznych i
logicznych GEM posiada wyspecjalizowane obiekty implementujce poszczeglne operatory. Tak
wic w tym przypadku bdziemy raczej stosowali konkretny obiekt, ni obiekt oglnego
przeznaczenia i odpowiednio dobranymi parametrami.
przykady:

podstawy/img/processing1.maxpat
podstawy/img/processing1.pd

- 30 -

MIDI
MIDI (Musical Instrument Digital Interface) to protok komunikacyjny opracowany pod ktem
zastosowa okoomuzycznych (cho daje si te stosowa w innych dziedzinach). MIDI ma za sob
relatywnie dug histori (specyfikacja protokou ujrzaa wiato dzienne w 1982 r.) i jest mocno
zakorzeniony w powszechnym myleniu o muzycznych technologiach praktycznie kady
produkowany wspczenie instrument elektroniczny korzysta z MIDI, podobnie rzecz ma si z
urzdzeniami studyjnymi: mikserami, procesorami efektw, itp. Oprcz samego standardu
komunikacyjnego MIDI obejmuje specyfikacj gniazd poczeniowych, parametrw elektrycznych
urzdze do transmisji, formatw zapisywanych plikw, kolejnoci uoenia programw brzmie w
niektrych instrumentach, itp. nie jest wic jedynie formatem danych, jak ma to miejsce w
przypadku OpenSound Control.
MIDI nie transmituje sygnaw strumieniowych (nawet w formie zdigitalizowanej), jest wic
protokoem kontrolnym - komunikaty MIDI mog np. nie informacj wcz nut c3 z
gonoci 100 na kanale 2 - ale interpretacja tych danych, a w szczeglnoci wygenerowanie
konkretnego dwiku, ley po stronie instrumentu (oczywicie moe nim by program
komputerowy), ktry komunikaty odbiera.
Komunikaty i oglnie: caa struktura protokou MIDI bazuje na pewnych oglnych zaoeniach:

komunikaty MIDI adresowane s do 16 odrbnych kanaw ( MIDI channels) kanay


mona potraktowa jak wirtualne instrumenty w obrbie jednego fizycznego urzdzenia,
poniewa kady kana moe by skonfigurowany niezalenie od pozostaych;

komunikaty MIDI posiadaj predefiniowane znaczenia wrd najczciej stosowanych


warto wymieni note on (wczenie wybranej nuty, z wybran gonoci, na wybranym
kanale) i control change (tzw. cc komunikaty sterujce rnymi funkcjami instrumentu,
najczciej zwizanymi z filtracj i modulacj generowanego dwiku), program change
(wybranie okrelonego programu brzmieniowego na wskazanym kanale), komunikaty
transportu (start, stop, itp.), komunikaty zegara (tzw. MIDI clock pozwalaj one
synchronizowa sprzt studyjny), sysex (komunikaty specyficzne dla konkretnego
urzdzenia), itd.;

porty MIDI skadaj si z trzech gniazd (lub ich wirtualnych odpowiednikw): in, out i thru
o ile znaczenie nazw in i out jest oczywiste, warto zaznaczy, e thru jest gniazdem, na
ktre przekierowywane s informacje z gniazda in. Tak wic typowa cieka pocze MIDI
wdruje od wyjcia (gniazda out lub thru) jednego urzdzenia do wejcia (in) kolejnego;

od strony technicznej komunikaty MIDI skadaj si z 3 bajtw, pierwszy okrela rodzaj


komunikatu i kana, drugi i trzeci bajt zmieniaj znaczenie w zalenoci od pierwszego
bajtu, np. dla komunikatu note on bd wskazyway odpowiednio: wysoko i poziom
gonoci (zwykle nie musimy jednak analizowa komunikatw MIDI na tym poziomie,
bowiem MaxMSP i PD posiadaj specjalizowane obiekty kodujce i dekodujce
komunikaty);

rozdzielczo bitowa i struktura komunikatw MIDI sprawiaj, e wikszo parametrw


dostpnych poprzez ten protok przyjmuje wartoci pomidzy 0 a 127. Najwaniejszym
wyjtkiem od tej reguy jest parametr okrelajcy numer kanau, ktry przyjmuje wartoci
pomidzy 1 a 16 (jednak nie wszystkie urzdzenia MIDI obsuguj jednoczenie wszystkie
16 kanaw).
- 31 -

MaxMSP i PD posiadaj spory zestaw


obiektw umoliwiajcych obsug MIDI,
cz z tych obiektw jest wsplna dla obu
rodowisk.
Do najprostszych w obsudze obiektw
nale notein, noteout, ctlin i
ctlout umoliwiaj one transmisj i
odbir komunikatw note on i control
change (cc). Do ich poprawnego dziaania
potrzebne jest wczeniejsze ustawienie w
preferencjach naszego rodowiska portw
MIDI, do ktrych odwouj si obiekty.

MaxMSP

notein i ctlin odbieraj komunikaty i dziel je na


3 skadowe bajty natomiast noteout i ctlout
formatuj i wysyaj dane MIDI konstruowane w
MaxMSP i PD w postaci list (jak w przykadzie) lub
jako atomy dostarczane do osobnych pinw
wejciowych obiektw.
notein dekoduje odbierane komunikaty przesyajc
na swoje pierwsze wyjcie (pierwszy wyjciowy pin
PD
od lewej strony) indeks nuty MIDI, na nastpny pin
kieruje kieruje warto okrelajc gono, a trzeci pin: numer kanau MIDI. ctlin dziaa
podobnie, z tym, e na pierwszy wyjciowy pin kierowany jest numer komunikatu, a na drugi jego
warto.
Jeli planujemy zbudowa w MaxMSP lub PD wasny
instrument sterowany komunikatami MIDI
najprawdopodobniej bdziemy potrzebowali obiektw
konwertujcych numer nuty midi na czstotliwo wyraan
w Hz i odwrotnie (oczywicie nic nie stoi na przeszkodzie, by
skorzysta z odpowiednich wzorw i przeliczy te parametry
PD
MaxMSP
samodzielnie, lub przyporzdkowa nutom MIDI inne, ni
kanoniczne, czstotliwoci ta ostatnia opcja otwiera moliwo stosowania
egzotycznych skal). Obiekty te nosz nazwy mtof (MIDI to frequency) i ftom (frequency to
MIDI) a korzystanie z nich polega na wysaniu do ich pinw wejciowych odpowiednich
parametrw i odbir wynikw ich pracy poprzez piny wyjciowe.
przykady:

podstawy/com/midi1.maxpat
podstawy/com/midi2.maxpat
podstawy/com/midi1.pd
podstawy/com/midi2.pd

- 32 -

Protokoy komunikacyjne: OpenSound Control (OSC)


Spord implementowanych przez
MaxMSP i PD protokow
komunikacyjnych warto zwrci uwag
przede wszystkim na OpenSound Control
(OSC). OpenSound Control to
technologia, ktrej prototyp opracowano
w UC Berkeley Center for New Music
and Audio Technology (CNMAT). Jest to
MaxMSP
protok o wbrew nazwie
uniwersalnym zastosowaniu, korzystajcy z
dowolnego typu czy sieciowych (w zasadzie
jest to protok nadbudowany nad istniejcymi
sieciowymi standardami komunikacyjnymi). W
zamierzeniach OSC mia zastpi MIDI, jednak
zakorzenienie tego ostatniego w wiecie
muzycznym nie pozwoli mu jeszcze przez dugi
czas odda pola modszemu konkurentowi. OSC
jednak okaza si na tyle uniwersalny, e znalaz
PD
zastosowanie w wielu dziedzinach i obecnie
implementowany jest poza MaxMSP i PD
choby przez NI Reaktor, EyesWeb, Chuck, SuperCollider, Jazzmutant Lemur i wiele innych
rodowisk i urzdze.
Obsuga danych przesyanych protokoem OSC jest prosta i sprowadza si do poprawnego
zainicjowania obiektw udpsend i udpreceive (MaxMSP) lub sendOSC i dumpOSC (PD).
Su one generalnie do tego samego: odbierania i wysyania danych poprzez protok OSC. Zanim
to jednak nastpi naley przekaza obiektom nadawczym i odbiorczym odpowiednie numery
portw i w przypadku obiektw wysyajcych informacje numer IP odbiorcy.
Osobn spraw jest natomiast zrozumienie zasad dziaania OSC i umiejtno korzystania z niego.
OSC nie jest protokoem przystosowanym do przesyu strumieniowego (innymi sowy: raczej nie
przelemy nim obrazu lub dwiku w czasie rzeczywistym). Komunikaty i poczenia OSC maj
charakter zbliony do pocze kontrolnych w MaxMSP i PD, tak wic dane przesyane przez takie
poczenia mog bez trudu by skonwertowane na komunikaty OSC, wysane i odebrane, a
nastpnie skonwertowane do formatw rozpoznawalnych przez MaxMSP i PD ( de facto, obiekty
udpreceive i dumpOSC generuj listy, a wic format danych, ktry bez trudu moe by
przetwarzany przy pomocy obiektw MaxMSP i PD).
OSC transmituje dane poprzez standardowe protokoy sieciowe TCP/IP lub UDP. Aby nada
informacj musimy j poprawnie zaadresowa: na adres skadaj dwa parametry: numer IP
odbiorcy i port, do ktrego zostan przesane dane. Odbiorca musi jedynie wiedzie, z ktrego
portu powinien odebra informacje.
Komunikaty OSC formatowane s w nastpujcy sposb:
/nazwakomunikatu argument1 argument2 ... argumentx
Ukonik przed nazw komunikatu nie jest wymagany ze wzgldw technicznych jest to
- 33 -

konwencja nazewnicza przyjta przez twrcw i uytkownikw protokou. W miar moliwoci


warto j respektowa ten nawyk pomoe nam w przyszoci np. tworzy prace w kooperacji z
innymi twrcami i przystosowa nasze projekty do standardw, jakie przyjli twrcy wielu
poytecznych aplikacji (np. systemw ledzenia ruchu i technologii odczytywania danych z
zewntrznych sensorw). Sama nazwa jest dowolna, moe skada si z maych i duych liter (OSC
rozrnia mae i due litery), cyfr i znakw przystankowych (jakkolwiek przyjta konwencja
nazewnicza zakada unikanie tego rodzaju elementw w nazwach komunikatw).
Komunikaty OSC mog, cho nie musz, zawiera parametry. Ilo parametrw jest w zasadzie
dowolna, podobnie format danych (liczby cakowite i zmiennoprzecinkowe, acuchy tekstowe).
Praktyczne zastosowanie OSC wymaga pewnej praktyki. Jakkolwiek protok jest bardzo sprawny,
oferuje niskie opnienia (via UDP) i elastyczno w konstruowaniu komunikatw, trzeba te
pamita o moliwych problemach: OSC jest silnie zaleny od infrastruktury sieciowej (jeli
przesyamy dane pomidzy komputerami w rnych lokalizacjach, jako czy sieciowych ma
wpyw na prdko i stabilno transmisji), ponadto dotyczy to zwaszcza systemw
operacyjnych z rodziny Windows transmisje OSC mog by blokowane przez oprogramowanie
antywirusowe i/lub systemowy firewall.
Zaawansowani uytkownicy OSC mog pokusi si o stosowanie kilku technik niejako zaszytych w
protokole, w szczeglnoci dotyczy to manipulowania tzw. timestamps znacznikami
identyfikujcymi prawidow pozycj komunikatu w funkcji czasu, co pozwala np. kompensowa
potencjalne opnienia transmisji i precyzyjnie synchronizowa aplikacje i urzdzenia.
przykady:

podstawy/com/opensoundcontrol1.maxpat
podstawy/com/opensoundcontrol1.pd

- 34 -

Modularyzacja projektw: subpatches i abstractions


Projektujc coraz bardziej skomplikowane struktury szybko natkniemy si na problem wynikajcy
wanie z owego skomplikowania: dua ilo obiektw i pocze pomidzy nimi sprawi, e projekt
moe sta si mao czytelny (nie wspominajc, e skomplikowany i rozbudowany projekt moe nie
mieci si na ekranie). Tradycyjne jzyki programowania posiadaj narzdzia strukturowania
projektu i podziau kodu np. na funkcje, obiekty, czy klasy.
Oczywicie MaxMSP i PD posiadaj narzdzia modularyzacji projektu pozwalajce budowa nawet
bardzo skomplikowane aplikacje w wygodny sposb. Do takich narzdzi nale przede wszystkim
subpatches i abstractions.
Subpatch to wyraajc rzecz najprociej fragment projektu w MaxMSP lub PD zamknity w
specjalnym obiekcie. Subpatch dziaa podobnie do zwykych obiektw, a umieszczony w nim
fragment projektu pozostaje tak dugo, jak tego chcemy ukryty, my natomiast moemy
komunikowa si z nim definiujc piny wejciowe i wyjciowe dla obiektu zawierajcego subpatch.
Dozwolone s te inne metody komunikacji z obiektami zawierajcymi subpatches, np. za pomoc
obiektw send i receive (take w wersji sygnaowej). Moliwe jest wielokrotne zagniedanie
subpatches. Jeli skopiujemy subpatch i wyedytujemy jego kopi nie naruszymy poprzedniego
egzemplarza kady subpatch jest cakowicie niezalenym elementem projektu (musimy jedynie
unika moliwych bdw zwizanych np. z powtarzaniem si nazw niektrych obiektw
umieszczonych w subpatches). Zawarto subpatches jest zapisywana razem wewntrz pliku
nadrzdnego patch.

MaxMSP

Abstractions dziaaj do podobnie do subpatches z t


rnic, e ich zawarto stanowi osobne pliki. Dziki
temu moemy ten sam fragment projektu wykorzysta
nie tylko wielokrotnie, ale te moe by on czci
PD
rnych projektw. Musimy jednak pamita, e zmiany
poczynione w projekcie, ktry uywamy jako
abstraction wpyn na wszystkie instancje abstraction wczytane w nasze

projekty.
MaxMSP do tworzenia subpatches wykorzystuje (w najprostszej wersji tego mechanizmu) obiekt
patcher (obiekt ten moemy zastpi aliasem p), natomiast PD korzysta w tym celu z obiektu
pd. Zarwno w przypadku patcher jak i pd naszemu subpatch moemy nada nazw (istniej
te metody potraktowania nazwy jako parametru i oglnie: przekazywania parametrw do
subpatches i abstractions w taki sam sposb, w jaki przekazujemy parametry innym obiektom). Po
utworzeniu odpowiedniego dla naszego rodowiska obiektu zostanie utworzone nowe okno, w
ktrym moemy dodawa obiekty i poczenia, jakie zo si na nasz subpatch. Okno zawierajce
subpatch moemy w kadej chwili zamkn, a pniej otworzy ponownie zawarto okna nie
zostanie skasowana po jego zamkniciu.

MaxMSP

Abstractions tworzymy w rwnie prosty sposb:


jeli w folderze zawierajcym pliki naszego projektu
zapisalimy wczeniej plik, ktry zamierzamy
wczyta jako abstraction wystarczy stworzy nowy
obiekt i wpisa nazw abstraction, ktor chcemy
PD
zaadowa (korzystajc z MaxMSP warto nauczy
si take korzystania z obiektu bpatcher umoliwiajcego wiksz
kontrol nad sposobem wywietlania abstraction w oknie nadrzdnego
- 35 -

projektu).
Jak wspomniaem, subpatches i abstractions mog
zawiera piny wejciowe i wyjciowe (analogiczne
do pinw, w jakie wyposaone s inne obiekty). Do
definiowania pinw su obiekty inlet (pin
wejciowy) i outlet (pin wyjciowy)
PD
umieszczenie ktrego z tych obiektw wewntrz
MaxMSP
jakiego subpatch lub abstraction spowoduje, e reprezentujcy go obiekt
wywietlany w nadrzdnym oknie zostanie natychmiast uzupeniony o wejciowy lub wyjciowy
pin (lub piny).
W przypadku PD obiekty inlet i outlet wystpuj rwnie w wersjach sygnaowych ( inlet~
i outlet~) natomiast MaxMSP dynamicznie dostosowuje rodzaj pinu (kontrolny lub
sygnaowy) zdefiniowanego jednym z tych obiektw w zalenoci od tego, z jakimi obiektami jest
poczony.
przykady:

podstawy/com/Main.maxpat
podstawy/com/my_abstraction.maxpat
podstawy/com/Main.pd
podstawy/com/my_abstraction.pd

- 36 -

Appendix II: aplikacje


Realizacja konkretnych projektw za pomoc MaxMSP lub PD czsto nastrcza osobom
pocztkujcym problemy wynikajce nie tyle ze sabej znajomoci rodowiska, ktrym si
posuguj, ile z powodu nieumiejtnego rozplanowania architektury projektu (innym powodem
mog by braki wiedzy zwizanej z merytoryczn stron dziedziny, ktrej projekt dotyczy jednak
w tym przypadku trudno mi poleci cokolwiek innego, poza signiciem po pozycje wskazane w
rozdziale Bibliografia i polecane lektury).
W tej czci kursu przyjrzymy si dwm aplikacjom moliwym do zbudowania w MaxMSP i PD:

syntezatorowi subtraktywnemu z prostym sequencerem generujcym losowe (cho moliwe


do uporzdkowania pod wzgldem harmonicznym nuty);

systemowi ledzenia ruchu analizujcym obraz z kamery i przeksztacajcym go na


informacj o pooeniu ruchomych elementw w kadrze.

Omawiane aplikacje wymagaj w niektrych przypadkach precyzyjnego ustawienia parametrw


roboczych elementw interfejsu uytkownika. Poniewa nie wszystkie parametry s widoczne na
ilustracjach, warto w razie wtpliwoci przyjrze si plikom z przykadami doczonymi do kursu.

- 37 -

Syntezator subtraktywny i sequencer


Syntezator subtraktywny to w zasadzie
klasyczna konstrukcja, obecna w muzyce
elektronicznej niemal od jej pocztkw.
Syntezator taki skada si z kilku typowych
blokw:

MaxMSP

oscylatorw generujcych sygna o


kontrolowanej czstotliwoci i ksztacie
fali (VCO);

wzmacniacza pozwalajcego
kontrolowa amplitud sygnau
generowanego przez oscylatory (VCA);

generatora obwiedni, ktry suy do


sterowania wzmacniaczem;

filtra, przez ktry moemy przepuci sygna


z oscylatorw;

generatora wolnych przebiegw ( LFO), ktry


mona wykorzysta jako rdo modulacji np.
czstotliwoci odcicia filtra lub obwiedni
gonoci podobnie jak w przypadku
samego filtra i obwiedni jest to kolejne
narzdzie ksztatowania brzmienia;

MaxMSP - presentation mode

Wszystkie wymienione bloki funkcjonalne w


ten czy inny sposb s zaimplementowane w
syntezatorze subtraktywnym, ponadto moe on
by wyposaony w inne moduy, np. lini
opniajc w nasz syntezator wbudujemy
zreszt prosty pogos. Oglna architektura
syntezatora subtraktywnego pozostawia
projektantowi pewien wybr co do iloci i
kolejnoci poszczeglnych moduw, niemniej
cieka sygnaowa wiedzie zwykle od
oscylatorw, poprzez wzmacniacz
kontrolowany przez generator obwiedni,
nastpnie filtr (czasem filtr umiejscawia si
przed wzmacniaczem).

PD

W naszym wiczeniu syntezator bdzie


wyposaony w dwa oscylatory z moliwoci mieszania w nich fal pioksztatnej z sinusoidaln,
regulacj odstrojenia i poziomu, dwa generatory wolnych przebiegw do modulowania
czstotliwoci oscylatorw i wzmacniacza, bloku filtracji, dodatkowego regulatora gonoci i
stereofonicznego pogosu. Cao uzupenimy o automatyczny sequencer.
Postaramy si te uporzdkowa interfejs uytkownika syntezatora i sam zawarto projektu z
- 38 -

tego drugiego powodu poszczeglne bloki funkcjonalne syntezatora przerzucimy do osobnych


plikw, ktre wczytamy do gwnego pliku projektu jako abstractions.
Oscylatory bd skaday si ze znanych nam
ju obiektw cycle~, oraz saw~
(MaxMSP) i phasor~ (PD).
Dodatkowo w abstraction znajduje si kilka
obiektw realizujcych funkcje operatorw
matematycznych, dziki ktrym miksujemy
przebiegi sinusoidalny i pioksztatny oraz
modulujemy czstotliwo przebiegw. Pin
wejciowy, ktry w MaxMSP realizujemy za
pomoc obiektu inlet, a w PD inlet~ suy
przekazaniu naszej abstraction wartoci
czstotliwoci, ktra posuy do kontroli
oscylatorw.
Cao uzupeniaj 3 pokrta (knobs)
regulujce stosunek zawartoci skadowej
sinusoidalnej do pioksztatnej, odstrojenia i
poziomu sygnau opuszczajcego blok
oscylatora poprzez obiekt outlet
(MaxMSP) lub outlet~ (PD).

MaxMSP

Jakkolwiek nie jest to konieczne w


przypadku obiektw typu sygnaowego, to
jednak niektre obiekty realizujce funkcje
operatorw zostay w wersji dla MaxMSP
wstawione do projektu z parametrem
inicjujcym w przypadku MaxMSP jest to
dobr praktyk, pozwala zachowa wiksz
czytelno projektu i wyrobi w sobie
nawyki uatwiajce prac.
Natomiast blok oscylatora stworzony w PD
implementuje w nazwach obiektw send i
receive charakterystyczn konstrukcj z
parametrem $1 warto tego parametru jest
PD
przekazywana do abstraction podczas
wywoania jej instancji z okna nadrzdnego projektu w formie parametru wpisywanego po nazwie
abstraction. Konstrukcja ta suy zapobieeniu multiplikowania obiektw send o tej samej nazwie
i mylnego adresowania danych przepywajcych pomidzy poczenia bezprzewodowe wewntrz
abstractions.

- 39 -

Blok wzmacniacza (VCA) jest w przypadku obu rodowiskach ekstremalnie prosty: skada si tylko
z jednego obiektu, operatora *~, do ktrego pinw wejciowych wpinamy sygna ze zmiksowanych
ze sob obu blokw oscylatorw (przed wzmacniaczem sygna ten jest jeszcze modulowany
przez jeden z blokw LFO, przy wykorzystaniu identycznego obiektu *~) i generatora obwiedni.
Generator modulacji (LFO) jest
rwnie bardzo prosty w zasadzie
jest to uproszczona wersja
abstraction bloku oscylatora z
jednym tylko obiektem cycle~ i
obsugujcymi go operatorami,
GUI oraz oczywicie pinem
wyjciowym w formacie
sygnaowym.
W naszym syntezatorze, aby nie
komplikowa zbytnio jego
PD
konstrukcji, nie implementujemy
technik, ktre obecne s w bardziej
profesjonalnych syntezatorach: w szczeglnoci dotyczy to zewntrznej
synchronizacji LFO i korekcji fazy oscylatorw naturalnie te funkcje
relatywnie atwo oprogramowa samodzielnie.
MaxMSP

Generator obwiedni moe


przybiera w syntezatorach
subtraktywnych (czy
jakichkolwiek instrumentach
elektronicznych)
zrnicowane formy. My
stworzymy niemal
najprostszy moliwy
generator obwiedni,
generujcy obwiedni o 2
fazach: ataku i
wybrzmiewaniu. Atak to
czas, jaki upywa od
wyzwolenia dwiku do
PD
MaxMSP
osignicia przeze
maksymalnej amplitudy, wybrzmiewanie, to to czas, jaki upywa od wyczenia dwiku (np.
puszczenia klawisza) do jego cakowitego wyciszenia.
Centralnym obiektem generatora obwiedni, jest w naszym przypadku obiekt line~ kontrolowany
poprzez dwa obiekty pack, ktre tworz dwuelementowe listy parametrw dla line~. Pierwszy
element listy to poziom amplitudy, do ktrego bdzie dy liniowy przebieg generowany przez
line~, drugi parametr to czas, w ktrym w poziom zostanie osignity (poziomem startowym
jest po prostu aktualna amplituda). Oprcz tego na abstraction skadaj si jeszcze elementy
interfejsu uytkownika (pokrta, ktrymi moemy ustali czasy ataku i wybrzmiewania), dwa piny
wejciowe (impulsy bang przekazywane na odpowiedni pin wczaj faz ataku lub
wybrzmiewania) i pin wyjciowy w formacie sygnaowym.
- 40 -

Bardziej skomplikowane obwiednie moemy tworzy za pomoc specjalizowanych obiektw


(gownie dotyczy to klasycznych obwiedni w rodzaju ADSR) lub np. kombinacji obiektw
line~ i delay (ten drugi, wyzwalany rwnoczenie z line~ pozwoli nam przechodzi
automatycznie do nastpnej fazy obwiedni w ten sposb atwo jest tworzy wielostopniowe
obwiednie o w zasadzie dowolnych ksztatach i parametrach).
W typowych syntezatorach uywa si zwykle przynajmniej 2 obwiedni: jednej dla amplitudy,
drugiej dla filtra oczywicie nic nie stoi na przeszkodzie, by, w ramach wiczenia rozbudowa i
nasz syntezator o kolejne i/lub wielostopniowe obwiednie sterujce wiksz iloci parametrw:
poza niewtpliwym walorem edukacyjnym takiego instrumentu warto wiedzie, e obwiednie s
wietnym, elastycznym narzdziem ksztatowania brzmienia instrumentu.
Blok filtracji zrealizowany
zosta przy wykorzystaniu
obiektu lores~ (MaxMSP) i
moog~ (PD), oba filtry
dziaaj w nieco inny sposb,
ale charakteryzuj si
identycznym zestawem
parametrw. W jednym i
drugim przypadku musimy
wic przekaza obiektowi
MaxMSP
parametry okrelajce
PD
czstotliwo graniczn i
szeroko (PD) lub rezonans
(MaxMSP). Obiekt moog~ uyty w PD jest emulacj klasycznej konstrukcji Roberta Mooga, tzw.
filtru drabinkowego.
Blok regulacji gonoci jest w wersjach tej
abstraction dla MaxMSP i PD praktycznie
identyczny. Zosta zbudowany w oparciu o blok
VCA, czyli operator *~ i kontrolujce go pokrto
(knob), co w zupenoci wystarcza dla prawidowej
pracy tego bloku.

MaxMSP
PD

Sygna jest wic przesyany do bloku przez pin


wejciowy, mnoony przez zadan warto w
obiekcie *~ i wysyany na zewntrz przez pin
wyjciowy.

- 41 -

Nasz syntezator
uzupeniony jest o modu
efektowy: stereofoniczny
pogos (jak atwo
zauway, wszystkie
poprzednie moduy miay
monofoniczny charakter).
Pomijajc rnice
wynikajce ze stosowania
obiektw delwrite~ i
delread~ (PD) oraz
tapin~ i tapout~
(MaxMSP) obie wersje
moduu s w zasadzie
bardzo podobne i opieraj
si o dwie linie opniajce
z ptl sprzenia
zwrotnego. Monofoniczny sygna
trafiajcy do moduu jest
dystrybuowany do dwch linii
opniajcych: jeli tylko ustawimy
rne parametry dla obu linii,
moemy w prosty sposb
uprzestrzenni brzmienie syntezatora.

MaxMSP

Zestaw parametrw obsugiwanych


przez obiekty GUI jest w obu
przypadkach identyczny: potrzebna
nam bdzie regulacja poziomy
sprzenia zwrotnego i dugoci
opnienia. Poniewa nasz modu
pogosowy posiada dwie linie
opniajce, musimy oczywicie
zdublowa obiekty GUI, by mc obie
linie kontrolowa niezalenie.
PD

Jeli poprawnie poczymy ze sob


wszystkie omwione moduy nasz syntezator bdzie praktycznie ukoczony.
Osobn spraw jest oczywicie kwestia sterowania syntezatorem. Moglibymy bez trudu
wykorzysta do tego celu np. zewntrzn klawiatur MIDI (MaxMSP posiada zreszt funkcjonalny
obiekt emulujcy tak klawiatur), ale w naszym przykadzie zbudujemy prosty generatywny
sequencer. Bdzie on generowa nuty o losowej wysokoci i ustalonej przez nas dugoci. Edycji
bdzie podlegao take tempo, a dodatkowo w sequencer wstawimy obiekty pozwalajce
odfiltrowa nuty odpowiadajce niepodanym wysokociom dwiku i tym samym uporzdkowa
rezultaty dziaania sequencera od strony harmonicznej.
Podstaw sequencera jest obiekt metro dostarczajcy regularnych impulsw wyzwalajcych
obiekt random (obiekt ten suy do generowania liczb pseudolosowych), dziki ktremu
otrzymamy losowy numer nuty MIDI. Zanim zamienimy numer nuty na czstotliwo wyraon w
- 42 -

Hz (obiekt mtof), a t na sygna (obiekt sig~) musimy jeszcze odfiltrowa dwiki o


niepodanej wysokoci. Suy do tego celu kombinacja obiektw % (MaxMSP) i mod (PD), gate
oraz kontrolowanego wyzwalania poprzez obiekt select wartoci zmagazynowanych w
obiektach i (i to oczywicie alias obiektu integer), a edytowanych dziki baterii obiektw
toggle (GUI). System zoony z tych obiektw dziaa w bardzo prosty sposb, a kluczem do jego
zrozumienia s obiekty % / mod operatory realizujce funkcj dzielenia modulo i tym samym
pozwalajce zredukowa peny zakres 128 moliwych wysokoci dwiku do 12 tonw w obrbie
oktawy te 12 tonw daje si ju atwo kontrolowa za pomoc GUI.

MaxMSP

- 43 -

PD

przykady:

podstawy/aplikacje/synth_max/
podstawy/aplikacje/synth_pd/

- 44 -

System ledzenia ruchu


Algorytmy systemw ledzenia ruchu opartych o analiz obrazu z kamery s do kosztowne
obliczeniowo i do niedawna, nawet jeli dawao si je implementowa w typowych komputerach...
zwykle nie starczao mocy obliczeniowej na nic innego. Dostpne moce obliczeniowe jednak rosn
i systemy ledzenia ruchu coraz atwiej wykorzysta w aplikacjach bez niewygodnej koniecznoci
uywania do tego celu wielu zsieciowanych maszyn.
Zasadniczo algorytmy tego rodzaju bazuj na prostej idei: analizuj rnice pomidzy kolejnymi
klatkami obrazu o ile nie jest to wynikiem ruchu samej kamery ani zmian w owietleniu, moemy
zaoy, e rnice pomidzy kolejnymi klatkami obrazu s wynikiem poruszania si w kadrze
jakich obiektw. Istniej te wersje korzystajce z wariantu tej techniki: po uruchomieniu systemu
moemy w nich zamrozi w buforze klatk obrazu traktowan jako to w takim przypadku
wszystkie kolejny klatki s porwnywane z buforem (ma to swoje zalety, zwaszcza jeli zaley
nam na precyzyjnym wykrywaniu ksztatu ruchomego obiektu, ale jednoczenie ten wariant jest
duo bardziej wraliwy na zmiany w owietleniu i szumy ta).
Otrzymane poprzez system ledzenia ruchu informacje maj charakter liczbowy, innymi sowy: nie
s obrazem moemy wic zastosowa je we waciwie dowolny sposb, do generowania lub
modulowania obrazu, dwiku, czy np. sterowania systemami zrobotyzowanymi.
MaxMSP i PD posiadaj pewne moliwoci poniekd konstruowane z myl o systemach ledzenia
ruchu. Jitter posiada obiekt jit.findbounds sucy do detekcji pooenia obiektu o zadanej
charakterystyce kolorystycznej, a PD pix_movement i pix_blob pierwszy suy do
przetwarzania strumienia wideo pod ktem wychwytywania rnic w kolejnych klatkach (obiekt
jest te wyposaony w ptl sprzenia zwrotnego, przez co moemy nieco uniezaleni si od
bdw zwizanych z krtkotrwaymi zmianami w owietleniu i szumem ta), drugi podaje
informacje o pooeniu i wielkoci ruchomego obiektu w kadrze. Niemniej caociowe
skonstruowanie systemu ledzenia ruchu w obu przypadkach ley po stronie
uytkownika-programisty.
W naszym wiczeniu zestawimy system ledzenia ruchu, ktry wykorzystamy do wyrysowania
obiektu w miejscu (oczywicie chodzi o miejsce na ekranie), w ktrym wykrywamy ruchomy
obiekt.
Tego rodzaju patch bdzie o mia duo prostsz konstrukcj w PD/GEM, ni w MaxMSP/Jitter,
dlatego tym razem odwrcimy przyjt w tym dokumencie kolejno prezentacji i najpierw
zajmiemy si PD.

- 45 -

Jak wida konstrukcja systemu


ledzenia ruchu w PD jest
bardzo prosta. Najpierw
pobieramy obraz z kamery
(komunikat colorspace
RGBA suy ustawieniu tego
trybu kodowania koloru jest
to wymagane przez obiekty
pix_movement i
pix_blob), nastpnie
przepuszczamy go przez obiekt
pix_movement, a
parametrem threshold
regulujemy poziom rnic
pomidzy odpowiadajcym
PD/GEM
sobie pikselom kolejnych
klatek, ktry uznajemy za
informacj o ruchu. Nastpny w naszym grafie znajduje si obiekt alpha wcza on obsug
alpha channel w strukturze wpitej w konkretny gemhead (alpha channel jest nam potrzebny
poniewa zasada dziaania obiektu pix_movement wie si z zaznaczaniem obszarw
ruchomych jako mniej przeroczystych, ni nieruchomych).
Po obiekcie alpha znajduje si najwaniejszy obiekt w projekcie, czyli pix_blob poza
skopiowaniem wizualnych danych wejciowych na pierwsze wyjcie dokonuje on prostej analizy
obrazu i jej efekty wyrzuca na kolejne 3 piny wyjciowe. Dane podawane przez obiekt to (w
kolejnoci od lewej strony): wsprzdna pozioma centrum ruchomego obszaru, wsprzdna
pionowa centrum ruchomego obszaru, wielko ruchomego obszaru. rodek (punkt 0, 0) ukadu
wsprzdnych dla obiektu pix_blob znajduje si w lewym grnym rogu analizowanego obrazu,
a wsprzdne podawane s w umownych jednostkach przyjmujcych wartoci od 0 do 1 punkt 1,
1 odpowiada prawemu dolnemu rogowi analizowanego obrazu. Jest to wic inny ukad
wsprzdnych, ni stosowany przez GEM do opisu przestrzeni trjwymiarowej.
Dane wizualne przekazane przez obiekt pix_blob zamieniamy na tekstur (czyli przesyamy do
karty graficznej) i wywietlamy na zajmujcym w przyblieniu cae okno prostokcie.
Obiekt gemhead 2 rozpoczyna struktur wywietlajc okrg w miejscu wykrycia ruchomego
obiektu jest to realizowane bardzo prost metod, jedynym kopotliwym momentem moe by
jedynie konwersja danych uzyskanych z obiektu pix_blob, do wartoci zgodnych z opisem
przestrzeni 3D w GEM proste przeskalowanie, odwrcenie pionowej osi i przeniesienie rodka
ukadu wsprzdnych wystarczaj tu jednak w zupenoci.
przykady:

podstawy/aplikacje/moCap1.pd

- 46 -

Pracujc z MaxMSP stosunkowo atwo pobierzemy obraz z kamery, jednak nastpny etap czyli
porwnywanie kolejnych klatek obrazu bdzie ju wymaga od nas stworzenia samodzielnie
odpowiedniej struktury obiektw.

MaxMSP/Jitter

Porwnywanie kolejnych klatek dokonywa si bdzie w obiekcie jit.op @op absdiff jest
to operator wykonujcy na danych w formacie Jittera formalnie jest to lista (co za chwil
wykorzystamy) odejmowanie i zamian wyniku na jego warto absolutn. Dziki konstrukcji
czcej ten obiekt z obiektem trigger zyskujemy prosty bufor przechowujcy poprzedni klatk
obrazu (trigger najpierw przesya dane do aktywnego, a pniej do pasywnego pinu obiektu
jit.op @op absdiff).
Obiektw jit.op @op + i jit.op @op * uywamy do uzupenienia struktury o ptl
sprzenia zwrotnego, po ptli wpinamy jeszcze obiekt jit.fastblur, ktry pomaga pozby si
szumw ta.
Pniej cieka wideo wdruje w dwch kierunkach. Pierwszy z nich, to okno jit.window, do
ktrego trafia poprzez struktur obiektw i komunikatw umoliwiajc miksowanie obrazw z 2
rde (jak wida, przydaj si tutaj matryce). Drugi kierunek to przede wszystkim obiekt
- 47 -

jit.findbounds analizuje on obraz i na podstawie


zadanych parametrw (my wykorzystujemy najprostsz wersj
parametryzacji obiektu) wyrzuca na swj pierwszy i drugi pin
wyjciowy dwuelementowe listy zawierajce wsprzdne
lewego grnego i prawego dolnego rogu prostokta, w ktrym
zawiera si element o wskazanej charakterystyce
kolorystycznej.
W przypadku braku odpowiadajcych parametrom obiekt
generuje listy wypenione wartoci -1 wykorzystuje tu
(widoczny na ilustracji obok) subpatch findNulls, ktry
zabezpiecza nas przed niepodanymi efektami wynikajcymi z
prb wyrysowania nieistniejcego obiektu, odcinajc przepyw
danych poprzez piny wyjciowe.
Podobnie, jak w przypadku PD/GEM musimy dopasowa do
siebie dane z systemu ledzenia ruchu i ukadu wsprzdnych
Jitter przy tej okazji uyjemy jeszcze obiektw line do
wygadzenia ruchu. Wszystko to dziej si w obiekcie
przechowujcym subpatch rescaleMoCap (ilustracja
poniej).
MaxMSP/Jitter

Ostatnim elementem struktury jest zesp obiektw rysujcych


prostokt pracuje on w oparciu o obiekt
jit.gl.skech, ktry kontrolowany jest poprzez
widoczny nad nim komunikat, a wynik swojej
aktywnoci przesya do obiektu jit.matrix.
jit.gl.sketch to obiekt, ktry umoliwia m. in.
rysowanie prostych ksztatw w oparciu o funkcje
standardu OpenGL z tej moliwoci skorzystalimy.
przykady:

podstawy/aplikacje/moCap1.maxpat

MaxMSP/Jitter

- 48 -

Appendix II: programowanie wizualne


*
Niniejszy tekst stanowi pewnego rodzaju uzupenienie powyszej nakierowanej bardziej
technicznie czci dokumentu. Omawiam w nim niektre kwestie, jakie uwaam za istotne dla
kreatywnego i wiadomego posugiwania si wizualnymi jzykami programowania. Lektura tekstu
nie bdzie wic miaa wpywu na umiejtno posugiwania si MaxMSP lub PD na najbardziej
podstawowym, technicznym poziomie, jednak w co wierz moe pomc zrozumie
podstawowe zaoenia i genez tego rodzaju rodowisk.
*
Wizualne jzyki programowania i opierajce si gwnie o nie pracujce w czasie rzeczywistym
media o architekturze modularnej doskonale nadaj si do tworzenia prac o charakterze
interaktywnym i multimedialnym. Umiejtno wykorzystania tkwicego w nich potencjau
pozwala twrcy na aktywniejsze i efektywniejsze kreowanie wasnego rodowiska
technokulturowego, ni w przypadku pozostawania w roli "uytkownika" konsumenta technologii
komercyjnych. Jednoczenie wana jest wiadomo, e samo uytkowanie modularnych mediw
czasu rzeczywistego (ani jakiegokolwiek innego narzdzia medialnego) w najmniejszym stopniu
nie wyzwala twrcy od statusu konsumenta status ten ulega zmianie w momencie podjcia przez
twrc prby zaprojektowania wasnego medium, a wic porzucenia mylowego schematu
nakazujcego traktowa medialne narzdzia jako gotowe aplikacje, ktrych obsugi naley si
nauczy i nastpnie mechanicznie wykorzystywa, na korzy budowania/zestawiania wasnego
medium z dostpnych prefabrykatw lub za pomoc programowania. Wizualnych jzykw
programowania nie powinno si myli z wizualnymi rodowiskami programistycznymi takimi jak
MONO, MSVC, itp., ponadto specyfika pracy z systemami modularnymi czasu rzeczywistego
(ktrymi jest przewaajca ilo wizualnych jzykw programowania) wymaga posiadania zespou
podstawowych wiadomoci z kilku dziedzin (przede wszystkim: informatyki, sonologii, audio - i
video-processingu, kompozycji w czasie rzeczywistym, wreszcie matematyki i logiki).
Za wizualnymi jzykami programowania przemawia fakt, e wikszo z tego typu systemw
powstaa, jest wykorzystywana lub rozwijana przez rodowiska akademickie, przemys sektora
high-tech i rodowiska skupione wok ruchu Wolnego Oprogramowania (czyli poza
laboratoriami wojskowymi siy najaktywniej kreujce nowe trendy i zjawiska w wiecie
technologii medialnych. Tak wic jzyki wizualne czsto bywaj kontenerami zawierajcymi
praktyczne aplikacje i rezultaty bada w wielu dziedzinach, m. in. sonologii i technologiach
rozpoznawania obrazu (jak rozwijany przez InfoMus Lab Laboratorio di Informatica Musicale /
University of Genoa / Wochy program EyesWeb), kompozycji w czasie rzeczywistym i DSP (Max/
MSP i Pure-Data zaprojektowane w paryskim IRCAM gwnie przez Millera Puckette'a),
technologii wizualizacji na potrzeby TV i zastosowa architektonicznych (VVVV rozwijane przez
firm MESO), itd.
Osobna kwestia jest natomiast zwizana z zaawansowanym procesem unifikacji systemw
medialnych na potrzeby instalacji i performances (np. Isadora lub MaxMSP) s to w tej chwili
niemal tak samo twardo zdefiniowane systemy, jak oprogramowanie i sprzt potrzebne w montau
wideo lub muzycznym. Kwestia, na ile naley korzysta z tego rodzaju oprzyrzdowania jest w
pewien sposb otwarta: ekonomia czasu potrzebnego na realizacj projektw przemawia za tym, by
je stosowa, ch poszukiwania wasnych sposobw pracy przeciwnie. Dusze dowiadczenie w
pracy z tymi systemami wskazuje, e posiadaj one potencja pozwalajcy przypieszy prac nad
wieloma projektami, zwaszcza czcymi media elektroniczne i tradycyjne (teatr, ruch, itp.), ale
- 49 -

rwnie nad instalacjami i performances nie skupiajcymi si w szczeglny sposb na prbach


przebijania si przez zewntrzn powok medium. S cho wymaga to ju znacznie lepszej
umiejtnoci korzystania z nich w stanie przypieszy rwnie prac z bardziej
eksperymentalnymi projektami, uatwiajc np. manipulowanie procedurami i algorytmami.
*
Kady w jaki sposb intuicyjnie rozumie pojcie modularnoci jako moliwo czenia pewnego
zespou elementw w nawet jeli nie zupenie dowolny to przynajmniej w miar swobodny
sposb. Z syntezatorw modularnych korzystaj muzycy elektroniczni nie zastanawiajc si w
zasadzie gbiej nad moliwociami w nich tkwicymi, ale rwnie nad ich ograniczeniami, bo
architektura modularna ma kilka do istotnych ogranicze (zwaszcza z punktu widzenia
kompozytora i muzyka-wykonawcy). Oczywicie najprostszym modelem modularnoci s
jakiekolwiek dziecice klocki (mwic wprost: z tych samych klockw moemy budowa rne
obiekty). Rwnie pojcie czasu rzeczywistego lub czasu realnego nie wydaje si zbyt trudne.
Architektura modularna idca w parze z dziaaniem w czasie rzeczywistym doskonale nadaje si do
tworzenia prac o charakterze interaktywnym i multimedialnym: czyli reagujcych na dziaania
odbiorcy przez manipulacje na rnych mediach w tym samym czasie. Umiejtno tworzenia od
strony technicznej i koncepcyjnej tego typu prac, czy szerzej, umiejtno konstruowania narracji
interaktywnej lub po prostu struktur interaktywnych (np. budowy instalacji, komponowania muzyki
generatywnej, wprowadzania elementw interakcji do performance, itd.) mimo, e dla
wspczesnych sztuk medialnych jest niezwykle wana i w zasadzie podstawowa, to jednoczenie
cigle pozostaje w sferze zagadnie sabo opracowanych od strony edukacyjnej. Dlatego wielu
twrcw, ktrzy tego rodzaju dziaalnoci si para prowadzi poszukiwania na wasn rk, czsto
po omacku.
Aby zrozumie w peni koncepcj modularnoci w kontekcie wizualnych jzykw programowania,
dobrze byoby najpierw zacz od czego co jest modularnoci przeciwne, a z czym jednak
spotykamy si o wiele czciej. Mam na myli tzw. listw czasow w jej rozlicznych wariantach.
Listwa czasowa (timeline) to sposb graficznej prezentacji zdarze zachodzcych w czasie.
Zdarzenia umieszczone na listwie czasowej s uszeregowane w ustalonej kolejnoci i posiadaj
okrelony moment wystpienia. Istnieje olbrzymia ilo oprogramowania sucego do pracy z
rnego rodzaju mediami wykorzystujcymi wanie ten koncept, np. programy montaowe (np.
Avid, Premiere, Vegas), wirtualne studia muzyczne (np. Steinberg Cubase, Apple Logic, ProTools),
a nawet oprogramowanie suce do konstruowania struktur i aplikacji interaktywnych (np. Adobe
Director, Adobe Flash).
Na taki a nie inny najpopularniejszy sposb organizacji materiau medialnego w wikszoci
programw komputerowych ma wpyw masa czynnikw, ale chciabym tu zwrci uwag na dwa
wynalazki, ktre wydaj si szczeglnie znaczce. S to zapis nutowy i tama (a waciwie tamy:
filmowa (optyczna) oraz magnetyczn).
Zacznijmy od zapisu nutowego. Powsta on oczywicie przed epok mediw elektronicznych, a
nawet przed powstaniem wikszoci mechanicznych technologii rejestracji lub produkcji dwiku.
Najprociej rzecz ujmujc: zosta stworzony w celu zapisywania muzyki, co ograniczao si
wwczas gwnie do opisania skokowych zmian wysokoci dwiku w czasie. Do tego doczono
znaki mwice o tempie, artykulacji, ozdobnikach, itp. Zapis nutowy nie jest oczywicie rejestracj
samego dwiku, ale do pewnego momentu w historii w pewnym sensie zastpowa go.
Wspczenie zapis nutowy suy jednak rzeszy kompozytorw, a w akademickiej muzykologii
stanowi podstaw mylenia o dziele muzycznym (przez dugi czas utwr, ktrego nie dao si
- 50 -

zapisa przy pomocy nut nie by traktowany jako dzieo muzyczne w zaszdzie dopiero muzyka
konkretna Pierre'a Schaeffera duo tu zmienia). Wariacja zapisu nutowego tzw. zapis lub edytor
pianolowy stanowi za jedn z podstaw interfejsu wikszoci wspczesnych programw do
edycji muzyki za pomoc komputera lub elektronicznych sekwencerw.
Tama natomiast sama w sobie zawiera ju sugesti linearnoci (jej ksztat i sposb uytkowania
sprzyjaj myleniu w kategoriach listwy czasowej). W przypadku tamy optycznej ta sugestia jest
szczeglnie mocna: moemy goym okiem zobaczy kolejne klatki filmu, ktry znajduje si na
tamie, co wicej, w niektrych formatach zapisu dwiku moemy zobaczy rwnie wykres fali
cieki dwikowej. Zaistnienie tamy miao kapitalne znaczenie dla rozwoju technologii montau
mediw. Tama jest bardzo plastyczna: mona j ci i skleja fragmenty w innej kolejnoci,
odtwarza wolniej lub szybciej, do przodu do tyu, itp. I znowu metody pracy z tam byy
inspiracj dla twrcw wielu programw do edycji dwiku lub wideo, ktrzy przenosili
moliwoci pracy z tam w rodowisko komputerowe traktujc j jako naczeln metafor
budowanych przez siebie interfejsw programw.
Tam jako podstawowe narzdzie pracy traktowaa szkoa muzyki konkretnej Pierre'a Schaeferra.
Gwnym zaoeniem musique concrete bya praca bezporednio na materiale dwikowym
(konkretnym lub konkretnie), nie za nad abstrakcyjn struktur wyraan w formie notacji
muzycznej. Wwczas tego rodzaju idea moga by realizowana gwnie przy uyciu tamy
(ewentualnie jeszcze za pomoc phonographu, z ktrego Pierre Schaeferr korzysta wczeniej).
Chodzio o wyeliminowanie notacji (nie dla samego nihilizmu: nie przystawaa ona przez swoje
wasne obcienia historyczne i wypracowane techniki manipulacji na abstrakcyjnym materiale
do elektronicznych rodkw kompozytorskich) i dziki temu umoliwienie rozwoju nowych form.
Eksperymenty i idee Schaeffera okazay si jednak koniec kocw nader none, ale co ciekawe
analogia do montau tamy staa si, jak wspomniaem, jedn z podstawowych metafor
wykorzystywanych w interfejsach programw muzycznych tak wic w pewien sposb
naladowcy, czy epigoni Schaeffera rozwinli jego techniki kompozytorskie do stanu, w ktrym
przecz one wasnym ideowym zaoeniom.
Zarwno zapis nutowy (i podobne), jak i wszelkie interfejsy programw komputerowych bazujce
na metaforze montau tamy, nawet jeli zawieraj elementy wariantowoci lub interaktywnoci,
nie s jednak nastawione na manipulacje w czasie rzeczywistym. Na listwie czasu widzimy
wszystkie zdarzenia, jakie zachodz w utworze i ich miejsce w czasie. Listwa czasowa moe by
odtworzona lub odegrana w czasie rzeczywistym, ale generalnie zawiera ju struktur czasow
utworu. Nawet jeli zawiera ona instrukcje warunkowe lub odwoania do aktywnoci odbiorcy, to
su one gwnie przeskakiwaniu pomidzy skonstruowanymi wczeniej linearnymi strukturami,
tak jak ma to miejsce np. przy pracy w programach Flash i Director formy Adobe.
Myl, e te dwa przykady zapis nutowy i tama wystarcz by doj do wniosku, e stosowanie
listwy czasowej w strukturach interaktywnych czsto wynika po prostu z ulegania historycznie
uwarunkowanym schematom mylowym. Struktury zawierajce interakcj domagaj si jakiej
innej formy notacji, czy szerzej rzecz ujmujc: innej graficznej reprezentacji. Co ciekawe,
koncepcje ktre mogyby lec u podstaw takiej specyficznej dla narracji interaktywnej i
interaktywnych struktur graficznej reprezentacji danych i zalenoci pomidzy nimi byy rwnie
rozwijane ju od duszego czasu i to w dziedzinach bliskich multimediom, m. in. w muzyce
elektronicznej, inynierii oprogramowania i mikroelektronice.
Zaczniemy moe od elektroniki. W zalenoci od tego w jaki sposb poczone s elementy na
pycie drukowanej (oraz jakie elementy si na niej znajduj), moe ona realizowa rne funkcje.
Graficzn reprezentacj podzespow i ich pocze jest schemat elektroniczny. Schemat obrazuje
- 51 -

logiczn struktur ukadu: jeli umiemy go przeczyta, moemy dowiedzie si, jak dziaa
urzdzenie, ktre jest na schemacie przedstawione. Wane jest to, e schemat taki nie zawiera
listwy czasu. Dziaanie przedstawionego na schemacie ukadu zobrazowane jest nie w formie cigu
nastpujcych po sobie zdarze, ale w zupenie inny sposb: poprzez ukazanie w jaki sposb
poczone s ze sob poszczeglne elementy. Innymi sowy: w jaki sposb kady z podzespow
odbiera i wysya sygnay do innych. Rodzaj i kolejno wystpujcych w takim ukadzie zdarze
jest wynikiem wzajemnych relacji pomidzy podzespoami. Kolejna istotna rzecz: jeli w ukad s
wbudowane elementy, ktrych parametry uytkownik moe regulowa (np. potencjometry z
pokrtami lub suwakami), to wtedy dziaaniem ukadu mona sterowa interaktywnie: a wic
rodzaj i kolejno zachodzcych w nim zdarze nie jest z gry ustalona i jakikolwiek rodzaj listwy
czasowej byby zwyczajnie nieadekwatny do opisu dziaania ukadu.
Przejdmy teraz do inynierii oprogramowania. Problemem, ktry musia znale swoje
rozwizanie na gruncie uytkowej informatyki bya wizualizacja algorytmw: przedstawienie w
graficznej formie w jaki sposb program komputerowy przetwarza informacje po to by wykona
jakie konkretne zadanie. Opracowano w tym celu specjalny zestaw symboli graficznych. Uywajc
tych symboli w prawidowy sposb mona wizualizowa dziaanie dowolnie skomplikowanych
algorytmw, optymalizowa je, wyszukiwa bdy, itd. Mona rwnie projektowa nowe
algorytmy zapisujc je w formie poczonych ze sob symboli. Dlaczego algorytmw nie
wizualizuje si za pomoc listwy czasu? Poniewa zawieraj one instrukcje warunkowe, ktre
uzaleniaj wykonanie kolejnych krokw algorytmu od parametrw okrelonych w instrukcji
przedstawienie tego rodzaju operacji w formie listwy czasowej byoby szalenie niewygodne.
I wreszcie warto wspomnie o najwaniejszym przodku wizualnych jzykw programowania:
syntezatorze modularnym. Syntezator modularny to instrument, w ktrym podstawowe bloki
funkcjonalne (generatory, filtry, wzmacniacze, itd.) nie s poczone ze sob na stae. W zalenoci
od potrzeb mona je ze sob czy przewodami, wykorzystywa tylko cz z dostpnych blokw
lub wszystkie, dokada, jeli jest to potrzebne, kolejne bloki. Mona sobie niejako zbudowa
instrument taki, jakiego potrzebujemy do konkretnego celu.
Szczegln form syntezatora modularnego jest jego implementacja komputerowa czyli,
najprociej mwic, program komputerowy symulujcy wszystkie bloki fizycznie istniejcego
urzdzenia. O ile w przypadku tego drugiego w budowie wasnych konstrukcji ogranicza nas ilo
posiadanych moduw (np. mamy tylko 2 bloki filtrw i nie moemy uy wicej), o tyle w
przypadku programu komputerowego to ograniczenie nie istnieje. Natomiast pojawia si
ograniczenie wynikajce ze skoczonej mocy obliczeniowej kadego komputera.
Kolejn cech programowych syntezatorw modularnych jest to, e stosunkowo szybko pojawiy
si programy, ktre nie tylko kopioway funkcjonalne bloki syntezatorw, ale realizoway funkcje
niedostpne na drodze analogowej (np. operacje na bitach, logik itp.). Pojawiy si te systemy
modularne, ktre w ogle zryway z odniesieniem do wiata syntezy analogowej, koncentrujc si
wycznie na implementowaniu blokw reprezentujcych operacje matemaryczne i logiczne, np.
Pure-Data. Pure-Data autorstwa Millera Pucklete'a powsta w celu wprowadzenia elementu
interpretacji do wykona muzyki elektronicznej. Jak ju bywao z wczeniej omwionymi
wynalazkami, znowu przejli go kompozytorzy i podobnie jak to si stao z zapisem nutowym
program jest wykorzystywany do komponowania w czasie rzeczywistym.
Wszystkie omwione wyej koncepcje modularnoci zakadaj prac w czasie rzeczywistym.
Trudno byoby wyobrazi sobie inn sytuacj, poniewa schematy blokowe ukazuj funkcjonalne
zalenoci pomidzy blokami. Np. blok A reaguje na sygnay wysyane przez blok B, ktry z kolei
jest wzbudzany przez blok C, itd. Mamy wic tu do czynienia z systemem sterowanym
- 52 -

zdarzeniami:sygnay podane do wejciowych blokw systemu wywouj acuchy reakcji w


kolejnych blokach. Oczywicie jest to idealna metoda na opisywanie struktur interaktywnych lub
wariantowych (zamiast pozycji w czasie moliwe wystpienia zdarze s opisywane przez stan
elementw systemu wymagany do ich wystpienia).
Warto te zauway, e wprowadzenie programw takich jak MaxMSP i PD wyzwolio nastpn
fal innowacji: skoro mona po prostu przetwarza dane, to te dane mog reprezentowa nie tylko
dwik, ale rwnie np. obraz lub tekst (tzw. tryb multimodal).
Dzi na formu wizualnych jzykw programowania skadaj si wic przede wszystkim
nastpujce elementy:

wizualna reprezentacja blokw funkcjonalnych i pocze pomidzy nimi;

budowa modularna;

praca w czasie rzeczywistym;

sterowanie zdarzeniami;

moliwo kontrolowania i przetwarzania (w tym konwersji i abstrakcji) rnych rodzajw


mediw (multimodal processing);

otwart architektur (moliwo komunikacji z innymi programami i standardami);

moliwo rozbudowywania programu o wasne rozszerzenia (istotne dla zaawansowanych


uytkownikw).

Czytajc powysz list szybko mona doj do wniosku, e jest to dokadnie taka architektura,
jaka jest potrzebna do sprawnego reyserowania struktur, czy prac interaktywnych. Chcc uzyska
peen obraz wymaga stawianych tego rodzaju systemom mona jeszcze tylko do zestawu
wymaga doda otwart licencj na uytkowanie i przerbki (GNU, OpenSource, etc.) oraz
wieloplatformowo, a ze wzgldu na zadania edukacyjne atwo przyswojenia sobie pracy z
programem przez niezaawansowanych uytkownikw.
Wracajc do spraw zwizanych z architektur systemu: architektura reprezentowana przez
modularne systemy czasu rzeczywistego nie oddziela uytkownika od algorytmu. przeciwnie,
umoliwia samodzielne jego budowanie, a przy tym jest na tyle prosta do opanowania, e mog j
opanowa osoby, ktre np. ze wzgldu na brak czasu maj problemy z nauczeniem si
klasycznego programowania (systemy takie jak PD, czy Eyw bywaj nazywane cho troch na
wyrost wizualnymi jzykami programowania).
Zamkn jeszcze wtek porwnania listwy czasowej i architektury modularnej: s to sposoby na
organizacj materiau medialnego wzgldem siebie niewspmierne lecz mog one wystpowa
obok siebie (np. listwa czasowa moe sterowa syntezatorem modularnym w czasie rzeczywistym).
Wane jest natomiast to, eby umie sobie dobra waciw architektur w zalenoci od potrzeb.
Listwa czasowa nadaje si doskonale do sytuacji, w ktrych musimy precyzyjnie ustali miejsce i
kolejno zdarze zachodzcych w jakim odcinku czasu natomiast do opisu interakcji nadaje si
w ograniczonym stopniu. Natomiast architektura modularna zorientowana na czas rzeczywisty
lepiej nadaje si do opisu zjawisk w ktrych pojawiaj si elementy warunkowe i wariacyjne, oraz
interakcja lub potrzeba szybkiego przebudowania przebudowania programu w zalenoci od
- 53 -

potrzeb.
Warto rwnie pamita o wadach systemw modularnych czasu rzeczywistego: a nale do nich
ograniczenia w operowaniu uszeregowaniem w czasie zachodzcych zdarze (trwanie w
wiecznym czasie teraniejszym, w przeciwiestwie do listwy czasowej, na ktrej wystpienia
wszelkich zdarze s z gry wiadome i ustalone), oraz wiksze zapotrzebowanie na moc
obliczeniow (optymalizacja przetwarzania ley po stronie uytkownika).
Wizualne jzyki programowania s wic systemami edycji i rodowiskami uruchomieniowymi
pozwalajcym twrcom medialnym przetwarza media w sposb modularny i modalny w czasie
rzeczywistym: uytkownicy cz graficznie reprezentowane komponenty (paradygmat
programowania wizualnego) w wybrany przez siebie sposb, tworzc struktury (nazywane na og
patches). Pozytywnym aspektem pracy z tego rodzaju oprogramowaniem jest to, e metody
operowania na rnych mediach powtarzaj si: w ten sam sposb i przy uyciu tego samego
interfejsu mona tworzy programy operujce na rnego rodzaju danych, std pozorna mnogo
opcji i moliwoci programw daj si opanowa dziki cigle tej samej filozofii pracy.

- 54 -

Podsumowanie
Oczywicie powysze wiadomoci nie wyczerpuj tematu: istnieje jeszcze wiele technicznych
detali i potencjalnych moliwoci zastosowania innych ni omwione konstrukcji i obiektw
jednake niniejsza introdukcja z pewnoci pomoe w samodzielnym eksperymentowaniu i lekturze
dokumentacji MaxMSP i PD. Niniejszy dokument zosta zreszt zaprojektowany w taki sposb, by
stanowi optymalny punkt startowy dla wasnych poszukiwa zasadniczo praca ze rodowiskami
obiektowymi sprawia najwicej kopotw pocztkujcym uytkownikom przejcie pomidzy
wspinaczka na kolejne stopnie znajomoci tego rodzaju systemw jest tym atwiejsza, im wicej
dowiadcze ju mamy za sob.

- 55 -

Bibliografia i polecane lektury


Podstawowymi rdami informacji o technikach i sposobach pracy z MaxMSP i PD jest
oczywicie dokumentacja dostarczana z wersjami dystrybucyjnymi tych rodowisk. W przypadku
MaxMSP warto rwnie przejrze stron sieciow producenta, firmy Cycling74:
http://cycling74.com znajdujce si tam materiay (artykuy, kursy i wywiady z twrcami i
programistami korzystajcymi z MaxMSP z pewnoci wzbogac nasz wiedz. Analogicznym
rdem wiedzy dla PD jest http://puredata.org witryna skupiajca rodowisko twrcw i
developerw pracujcych nad rozwojem tego rodowiska.
Pocztkujcy i rednio zaawansowani uytkownicy MaxMSP i PD powinni rwnie zajrze do
dostpnego on-line pod adresem http://www.ugress.com/post.asp?id=1026 kursu Loadbang
autorstwa Johannesa Kreidlera (kurs jest w zaoeniu skierowany gwnie do kompozytorw, ale
wiadomoci w nim zawarte pomog w zasadzie kademu, kto chciaby wzbogaci swoj wiedz w
zakresie pracy z obiektowymi jzykami programowania), natomiast lektura dokumentu Theory and
Techniques of Electronic Music, ktry mona odnale pod adresem http://crca.ucsd.edu/~msp/ jest
pozycj obowizkow dla wszystkich uytkownikw i programistw autorem dokumentu jest
projektant i twrca MaxMSP i PD Miller Puckette, a tekst zawiera szczegowe informacje na temat
cyfrowych technik przetwarzania dwiku (DSP), technik kompozytorskich i ich implementacji w
rodowiskach takich jak MaxMSP i PD jest to praktycznie najpeniejsza publikacja traktujca o
tego rodzaju zagadnieniach.
Przyswojenie technicznej strony obsugi MaxMSP i PD jest w zasadzie wstpem do wykorzystania
tych rodowisk w dziedzinach, ktre najbardziej interesuj konkretnych uytkownikw (a niejako
kanonicznymi aplikacjami s tu szeroko rozumiane multimedia). Zrozumienie pewnych koncepcji i
funkcji obu rodowisk moe nastrcza problemy, jeli nie posiadamy choby podstawowych
wiadomoci w tych rdowych dziedzinach.
Tak wic podstawy (i nie tylko) wiedzy o dwiku, fizjologicznych i psychologicznych
mechanizmach syszenia, metodach analizy, a w pewnej mierze rejestracji i syntezy i samplingu
znale mona w pozycji Wprowadzenie do psychologii syszenia [Brian C. J. Moore,
Wydawnictwo Naukowe PWN, Warszawa -Pozna 1999], natomiast analogicznym rdem wiedzy
o percepcji wizualnej w kontekcie mediw elektronicznych i algorytmw przetwarzania obrazu s
Elementy grafiki komputerowej [Micha Jankowski, Wydawnictwa Naukowo -Techniczne,
Warszawa 1990].
Zagadnienia zwizane z budowaniem interfejsw uytkownika i komunikacji pomidzy
komputerami i ludmi z pewnoci przybli Mechaniczne Pikno. Kryterium Estetyczne w
informatyce. [David Gelernter, CiS Warszawa 1999] i Media i Ludzie [Byron Reeves Clifford Nass ,
PIW, Warszawa 2000].
Systemy ledzenia ruchu korzystajce z kamery s odrbnym i do rozbudowanym zagadnieniem,
ktrego stron techniczn (i matematyczn) warto rozpocz zgbia od nieocenionej w tym
wzgldzie Wikipedii. Pod adresem http://en.wikipedia.org/wiki/Match_moving znajduje si opis
zaoe i podstawowych koncepcji lecych u podstaw tego rodzaju systemw. Aplikacja
zbudowanego samodzielnie lub gotowego systemu ledzenia ruchu moe jednak nastrczy
problemy, jeli nie potrafimy powiza jej dziaania z konkretnym celem. Poniewa typowym
sposobem wykorzystania interaktywnych systemw ledzenia ruchu jest praca w kontekcie taca,
proponuj sign po Improvisation Technologies. A Tool for the Analytical Dance Eye. [William
Forsythe, Zentrum fr Kunst und Medientechnologie, Karlsruhe 2003] ta multimedialna
publikacja stanowi kompendium wiedzy o relacjach pomidzy ciaem i tacem a mediami
- 56 -

elektronicznymi.
Jako, e MaxMSP i PD to jzyki programowania, pene wykorzystanie ich potencjau jest moliwe
dopiero po przyswojeniu sobie podstawowych poj i technik programistycznych. W tym celu
polecabym przede wszystkim rda internetowe, w szczeglnoci bardzo przydatn w tym akurat
przypadku Wikipedi i hasa:

object oriented (przypomn, e chodzi tu o paradygmat programowania obiektowego, nie


wizualne jzyki programowania) http://en.wikipedia.org/wiki/Object-oriented_programming

visual programming language (tym razem haso ju bezporedio odnoszce si do tematu)


http://en.wikipedia.org/wiki/Visual_programming

algorithm http://en.wikipedia.org/wiki/Algorithm

Jest to oczywicie tylko selekcja w zalenoci od naszych zainteresowa moemy jednak poda
zgodnie z zawartymi w artykuach czami i adresami bibliograficznymi.
Zagadnienia zwizane z protokoami komunikacyjnym koncentruj si gwnie wok OSC i MIDI.
Strona domowa OpenSound Control to http://opensoundcontrol.org/ - znajduj si na niej wszystkie
waciwie techniczne informacje dotyczce standardu, ponadto lista aplikacji i rodowisk
implementujcych protok. Protok MIDI nie posiada niestety strony domowej, ale i tu z pomoc
przychodzi nam Wikipedia: http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface.
Technologi, ktra jest natomiast szalenie istotna dla funkcjonowania Jitter i GEM, to OpenGL.
Szczliwie w tym przypadku moemy skorzysta ze specyfikacji zawartej na stronie domowej:
http://www.opengl.org.

- 57 -

You might also like