Professional Documents
Culture Documents
-2-
-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:
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:
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;
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
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];
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;
-7-
MaxMSP
PD
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
MaxMSP
PD
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
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 -
PD
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;
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
PD
przykady:
podstawy/common/dollar1.maxpat
podstawy/common/dollar2.maxpat
podstawy/common/dollar1.pd
podstawy/common/dollar2.pd
- 16 -
podstawy/common/hot-cold1.maxpat
podstawy/common/hot-cold1.pd
- 17 -
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 -
MaxMSP
podstawy/common/ctrl-sig1.maxpat
podstawy/common/ctrl-sig1.pd
- 20 -
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
- 21 -
PD
MaxMSP
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 -
podstawy/snd/feedback_(delay)1.maxpat
podstawy/snd/feedback_(delay)1.pd
- 23 -
sfplay~ / readsf~
PD
MaxMSP
odtwarzani pliku.
podstawy/snd/samplesLong1.maxpat
podstawy/snd/samplesLong1.pd
MaxMSP
- 24 -
PD
- 25 -
podstawy/snd/samplesInRAM1.maxpat
podstawy/snd/samplesInRAM1.pd
MaxMSP
PD
- 26 -
podstawy/img/loadingimages1.maxpat
podstawy/img/loadingimages1.pd
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 -
MaxMSP
PD
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:
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;
MaxMSP
podstawy/com/midi1.maxpat
podstawy/com/midi2.maxpat
podstawy/com/midi1.pd
podstawy/com/midi2.pd
- 32 -
podstawy/com/opensoundcontrol1.maxpat
podstawy/com/opensoundcontrol1.pd
- 34 -
MaxMSP
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
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 -
- 37 -
MaxMSP
wzmacniacza pozwalajcego
kontrolowa amplitud sygnau
generowanego przez oscylatory (VCA);
PD
MaxMSP
- 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
MaxMSP
PD
- 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
MaxMSP
- 43 -
PD
przykady:
podstawy/aplikacje/synth_max/
podstawy/aplikacje/synth_pd/
- 44 -
- 45 -
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 -
podstawy/aplikacje/moCap1.maxpat
MaxMSP/Jitter
- 48 -
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 -
budowa modularna;
sterowanie zdarzeniami;
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 -
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:
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 -