TYTUŁ TYTUŁ

Transkrypt

TYTUŁ TYTUŁ
Modelowanie rzeczywistości
w środowisku Pur eData
Wstęp
Celem zajęć jest pogłębienie i usystematyzowanie wiedzy dotyczącej interaktywnych
projektów multimedialnych oraz utrwalenie umiejętności wykształconych podczas
poprzednich trzech sesji poświęconych graficznym środowiskom obiektowym Max/MSP i Pd.
Uczestnicy kursu wysłuchają omówienia szeregu zagadnień ilustrowanych przykładami
działających projektów oraz samodzielnie zrealizują zestaw ćwiczeń. Ćwiczenia będą tak
dobrane i pogrupowane, aby można było je powiązać w większe całości mające charakter
mini-projektów. Dzięki temu osoby zainteresowane dogłębnym zrozumieniem tematu będą
mogły zetknąć się z realnymi problemami, z podejmowaniem szczegółowych decyzji, od
których zależą: poprawna struktura projektu, łatwość jego modyfikowania i rozszerzania, oraz
przystosowanie go do wielokrotnego użycia w ramach większych projektów.
Bardziej bezpośrednio, wykonanie poszczególnych ćwiczeń powinno przyczynić się do
nabrania przez uczestników biegłości w operowaniu elementami środowiska Pd, definiowaniu
abstrakcji i podschematów, posługiwaniu się argumentami i parametrami, łączeniu modułów
siecią połączeń zdalnych, zapisywaniu prostych struktur sterujących, przechowywaniu danych
w tablicach, inicjowaniu i konfigurowaniu działania projektu, dołączaniu do projektu prostego
graficznego interfejsu wykonawczego itp.
Ćwiczenia są przygotowane z nadzieją, że ukażą w nowym świetle pracę w otwartym
środowisku obiektowym i pomogą przynajmniej częściowo uzasadnić wybór tego rodzaju
środowiska do realizacji pewnych kategorii projektów artystycznych. Dlatego motywem
przewodnim kursu jest interpretowanie tworzonych projektów jako modeli pełniących funkcje
analogiczne do fizycznych lub percepcyjnych, rzeczywistych lub wymyślonych narzędzi,
procesów lub zjawisk. Taka interpretacja uwydatnia uniwersalną przydatność środowisk
obiektowych oraz w sposób naturalny nadaje projektom interaktywny charakter.
Interakcja modelu z otoczeniem
Wspólną cechą wszystkich modeli, z którymi będziemy mieli do czynienia, jest
uczestniczenie w interakcji. Każdy model ma przypisaną określoną rolę i komunikuje się
z otoczeniem ― jest aktorem. Otoczenie modelu jest zaś zbiorem innych aktorów, którymi
mogą być ludzie lub modele działające razem z naszym modelem w tym samym programie,
w tym samym komputerze, lub jedynie w tej samej sieci komputerowej.
W wersji najprostszej model multimedialny imituje pewne narzędzie, np. instrument
muzyczny, którym można sterować, i który generuje pewną treść multimedialną, np. sygnał
foniczny. Taki model można nazwać reaktywnym, ponieważ jego sposób uczestniczenia
w interakcji ogranicza się do reagowania na komunikaty sterujące docierające z otoczenia.
Interakcja jest tu jednokierunkowa w tym znaczeniu, że istnieją dwa niesymetryczne,
2
jednokierunkowe kanały przepływu informacji. Schemat modelu reaktywnego można
przedstawić na diagramie
Rys. 1: Model jednokierunkowy
(reaktywny)
na którym są uwzględnione oba rodzaje połączeń:
treść multimedialna, np. obraz lub dźwięk: kanał szerokopasmowy, synchronizowany;
sterowanie: kanał wąskopasmowy, niesynchronizowany.
Na powyższym oraz dwóch następnych diagramach są zaznaczone tylko te warstwy realizacji
modelu, których nie powinno zabraknąć. Rzeczywiste modele zawierają również inne
warstwy, specyficzne dla konkretnych zastosowań.
Prosty model reaktywny można rozbudować do modelu przetwornika sygnału
multimedialnego, który nazwiemy transaktywnym modelem multimedialnym, tj. takim, który
zakłada, że aktorzy wymieniają się treścią multimedialną. Zasadą transaktywnej komunikacji
z otoczeniem jest dwukierunkowy przepływ treści multimedialnej oraz jednokierunkowy
przebieg sterowania ― model transaktywny nie kontroluje otoczenia. Ogólny schemat
interfejsu oraz wewnętrznej struktury takiego modelu jest przedstawiony na poniższym
diagramie.
Rys. 2: Model 1,5-kierunkowy
(„transaktywny”)
Pełny model interaktywny zawiera dodatkowo warstwę analizującą wejściowy sygnał
multimedialny. Jest to model dwukierunkowy, który zakłada możliwość komunikacji
całkowicie symetrycznej. Warstwa analizy sama w sobie stanowi pewnego rodzaju model
„percepcyjny”, zaś warstwa przekształceń może działać według aktywnych reguł
3
imitacyjnych ― rozbudowany model interaktywny nie musi być tylko biernym
przetwornikiem. Jego schemat jest przedstawiony poniżej.
Rys. 3: Model dwukierunkowy
(interaktywny)
Przegląd zagadnień
Tematy, które będą omówione podczas zajęć, należą do następujących obszarów:
• modelowanie układu fizycznego w syntezie dźwięku (model instrumentu) oraz
symulowanie ruchu w obrazie;
• analiza i detekcja cech sygnału fonicznego (model słuchacza) oraz śledzenie ruchu
w warstwie wizualnej;
• planowanie wykonania, szeregowanie zadań, realizacja partytury (model wykonawcy);
• randomizacja, imitacja (model improwizatora);
• forma otwarta (model kompozytora).
Tylko pierwszy z tych obszarów będzie eksplorowany w formie ćwiczeń wykonywanych
samodzielnie przez uczestników kursu; wszystkich wymienionych elementów projektu nie
sposób zrealizować w gronie początkujących użytkowników. Pozostałe zagadnienia będą
jednak ilustrowane praktycznymi przykładami udostępnionymi uczestnikom w formie
gotowych mini-projektów.
Parametry modelu
Ćwiczenia praktyczne zaczniemy od naszkicowania sposobu projektowania warstwy
sterowania. Jeżeli pominiemy szczegóły realizacyjne, to przebieg sterowania działaniem
modelu możemy sprowadzić do odbieranego przez model strumienia komunikatów
zmieniających, bezpośrednio lub pośrednio, wartości parametrów modelu.
Są dwa rodzaje parametrów zmienianych bezpośrednio: niezależne od innych parametry
wejściowe (z perspektywy modelu są to wartości stałe) oraz wartości początkowe zmiennych
stanu modelu. Na pozostałe parametry otoczenie może wpływać tylko pośrednio, może
natomiast odczytywać wartości niektórych z nich ― wówczas są to parametry wyjściowe.
4
Zaprojektujemy prosty, ale dość uniwersalny schemat obsługi pojedynczego parametru.
Każdemu parametrowi modelu będzie odpowiadał dokładnie jeden obiekt
mający dwa
obowiązkowe argumenty, identyfikator modelu oraz identyfikator parametru:
. Ponadto, obiekt
może otrzymać jeden lub dwa
nieobowiązkowe argumenty: wartość początkową oraz wartość domyślną nadawaną
parametrowi wtedy, kiedy wartość początkowa ma być argumentem nadrzędnej abstrakcji,
który nie zostanie jednak określony. Na przykład, jeżeli identyfikatorem modelu jest M,
identyfikatorem parametru ― P, do ustalenia wartości parametru ma służyć pierwszy
argument nadrzędnej abstrakcji, a wartością domyślną jest 234, to odpowiedni obiekt ma
postać
. Dwustopniowy sposób ustalania wartości początkowej ułatwia
projektowanie modeli używanych jako elementy większych całości.
Zmiana wartości parametru może nastąpić za pośrednictwem wejścia lokalnego lub zdalnie.
Symbol docelowy używany do zdalnego modyfikowania wartości parametru składa się
z identyfikatora modelu i identyfikatora parametru połączonych znakiem -.
Również pobieranie wartości parametru odbywa się przez wyjście lokalne abstrakcji
lub
zdalnie, przy czym wyjściowy symbol docelowy jest utworzony z modyfikującego symbolu
docelowego przez dołączenie przedrostka par.
Domyślnie, w celach diagnostycznych, obiekt
pokazuje każdą zmianę wartości
parametru w głównym oknie środowiska Pd. Drukowanie można wyłączyć, przekazując
komunikat „druk 0” do modyfikującego symbolu docelowego.
Zdefiniujemy teraz abstrakcję
, to znaczy utworzymy jej schemat, przedstawiony poniżej,
który zachowamy w pliku par.pd.
Model punktu materialnego (masa)
Modelowanie jest przede wszystkim sztuką kompromisu. Konstruowanie użytecznych
modeli wymaga zachowania właściwego dystansu do rzeczywistości, umiejętności
upraszczania, pomijania zbędnych w danym kontekście szczegółów. Kontekst projektu
artystycznego pozwala na dalej idące uproszczenia, niż np. symulacja inżynierska, która
powinna wiernie imitować modelowany aspekt rzeczywistości, pozostając w zgodzie z jego
5
obiektywnym opisem. Projekty artystyczne odwołują się do bezpośredniego oglądu,
a obiektywnie wierna imitacja rzadko bywa ich celem nadrzędnym.
Naszym bezpośrednim zadaniem nie jest jednak proponowanie namiastki projektu
artystycznego, lecz zilustrowanie sposobu konstruowania projektów modelujących
rzeczywistość w środowisku Pd. Dlatego, zaczniemy od najprostszego modelu fizycznego:
poruszającego się punktu materialnego. Klasyczny model dynamiki punktu materialnego
opisany równaniem ruchu (wzorem Newtona) sprowadzimy do wersji różnicowej
F [n ]
a [n]=
, gdzie
M
a [n] średnia wartość przyśpieszenia punktu materialnego w n-tym przedziale czasu;
F [n] średnia wartość sumy sił działających na punkt materialny w n-tym przedziale czasu;
M
masa punktu materialnego.
Godząc się na kolejny kompromis, przyjmiemy uproszczoną zależność średniego
v [n]−v [n−1]
przyśpieszenia od zmiany prędkości w jednostce czasu, a [n]=
, oraz średniej
T
x [n ]−x [ n−1]
prędkości od zmiany położenia, v [ n]=
, gdzie
T
v [ n]
x [n ]
T
średnia prędkość punktu materialnego w n-tym przedziale czasu
średnia wartość położenia punktu materialnego w n-tym przedziale czasu
długość przedziału czasu (kwant czasu).
W ten sposób zgromadziliśmy wszystkie zależności potrzebne do wyliczania kolejnych
stanów naszego pierwszego modelu ― znając siły na niego działające, wystarczy określić
warunki początkowe oraz ustalić wartości masy i kwantu czasu. Otrzymujemy równania
x [n ]=v [n]⋅T x [n−1] , gdzie v [ n]=F [n ]⋅
T
v [n−1].
M
które opisują układ z jednym wejściem, F[n], dwoma wyjściami, x[n] i v[n], mający dwa
parametry niezależne, T i M. Działanie układu inicjujemy, przyjmując wartości początkowe
x[0] i v[0]. Oczywiście, nasz model jest kiepskim przybliżeniem modelu teoretycznego
z czasem ciągłym, ma jednak wygodną realizację i wystarcza jako przykład wprowadzający
do zagadnień związanych z modelowaniem układów fizycznych w środowisku Pd.
W powyższym opisie nie ustaliliśmy liczby wymiarów przestrzeni, w której porusza się punkt
materialny. Ogólnie, siła, prędkość i położenie są wektorami, natomiast nasza pierwsza
realizacja będzie jednowymiarowa. Najpierw zrealizujemy tę część modelu, która wyznacza
prędkość punktu w kolejnych przedziałach czasu.
6
v [ n]=F [n ]⋅
T
v [n−1]
M
Obiekty
inicjują wartości parametrów oraz umożliwiają ich zdalną regulację, obiekt
T
oblicza wartość iloczynu F [n]⋅ , obiekt
wraz z obiektem
tworzą pętlę, która
M
pełni rolę akumulatora „całkującego” trajektorię przyspieszenia.
Powyższy schemat umieścimy teraz wewnątrz obiektu
schematu realizującego model punktu materialnego:
będącego elementem głównego
x [n ]=v [ n]⋅T x [n−1] .
W tym schemacie obiekty
i
obliczają nowe położenie punktu zależne od jego
poprzedniego położenia, od prędkości obliczonej przez obiekt
oraz od wartości
parametru T ustalonej przez odpowiedni obiekt
znajdujący się wewnątrz podschematu
, a przekazanej zdalnie za pośrednictwem obiektu
. Wynikowe wartości
położenia i prędkości są wysyłane zarówno zdalnie, jak przez połączenie lokalne. Za
komunikację zdalną odpowiadają obiekty
z argumentami i , a transmisję lokalną
zapewnia obiekt
przekazujący spakowane wyniki jako dwuelementową listę. Jak
zawsze, musimy pamiętać o gorącym (lewym) i zimnym (prawym) wejściu obiektu
,
a zatem pierwszy element listy (położenie) możemy spakować dopiero po uprzednim
7
spakowaniu drugiego elementu (prędkości). O właściwą kolejność dba obiekt
odbierający dane od podschematu
.
Gotowy schemat modelu zachowujemy w pliku masa.pd. Zdefiniowaliśmy w ten sposób
abstrakcję punktu materialnego. Możemy tworzyć jej instancje, tj. obiekty
będące
elementami schematów realizujących bardziej złożone modele. Używając tej abstrakcji, nie
powinniśmy zapominać o dołączeniu argumentu określającego nazwę jednoznacznie
identyfikującą każdą instancję, np.
.
Model wahadła
Mówiąc najogólniej, możemy wyróżnić trzy rodzaje sił działających na punkt materialny: siły
wymuszające ruch, siły tłumiące ruch oraz siły zachowawcze. Zajmiemy się najpierw tylko
ruchem swobodnym, tj. pominiemy siły wymuszające.
Dla sił tłumiących i zachowawczych przyjmiemy najprostsze modele liniowe. Tłumienie
układu, tj. siła rozpraszająca energię, będzie więc zależne tylko od prędkości, przy czym
zależność ta będzie liniowa ze współczynnikiem tłumienia (np. tarcia) C: F v [n]=−C⋅v [n] .
Więzy układu, tj. siła zachowawcza, będą natomiast zależne jedynie od przemieszczenia
względem położenia równowagi; również ta zależność będzie liniowa ze współczynnikiem
sztywności K: F x [n ]=−K⋅ x [ n]− x 0 .
Działanie opisanych sił możemy zrealizować jako model, którego interfejs jest odwróceniem
interfejsu punktu materialnego: danymi wejściowymi są położenie i prędkość, a wyjściowymi
― suma sił. Tym razem jednak, nie podejmujemy obliczeń bezpośrednio po otrzymaniu
danych wejściowych, lecz dane te przechowujemy w obiektach
, a obliczenia
przeprowadzamy po otrzymaniu komunikatu taktującego na wejściu
. Dzięki
temu, po połączeniu obu modeli obliczenia nie utworzą nieskończonej pętli. Otrzymujemy
następujący schemat
który zapisujemy w pliku dynamika.pd. Korzystając z abstrakcji
i
utworzymy najprostszy model wahadła wykonującego ruch harmoniczny.
,
8
W podschemacie
umieszczamy komunikaty ustalające niestandardowe wartości
dwóch parametrów oraz wyłączające drukowanie parametrów pośrednich. Oprócz masy
i położenia początkowego, wszystkie parametry są inicjowane wartościami domyślnymi.
Ruch zaczyna się więc od wychylenia jednostkowego. Na punkt materialny działa siła
zachowawcza z jednostkowym współczynnikiem sztywności. Ruch nie jest tłumiony,
ponieważ domyślna wartość współczynnika tarcia jest zerem (zob. definicję abstrakcji
). Ponieważ masa jest równa 1000 jednostkom, więc częstość drgań wynosi

K
≈0,316 , zaś w tysiącu jednostkach czasu przedstawionych na wykresie mieści się
M
K
M
1000
≈5,033 okresów drgań, których układ do chwili pokazanej na rysunku zdążył
2
wykonać niecałe cztery.

Podschemat
zawiera realizację dwóch sposobów włączania i wyłączania działania
modelu, który albo pozostaje włączony do chwili jawnego wyłączenia, albo automatycznie
przerywa działanie po okresie ćwierćsekundowym. Pierwszy sposób uaktywnia podłączona
do podschematu
kontrolka toggle, a drugi ― kontrolka bang.
9
Wykres jest rysowany w tablicy x umieszczonej wewnątrz abstrakcji prezentowanej w trybie
graph-on-parent. Wartości położenia punktu materialnego są zdalnie przekazywane do
tablicy x za pośrednictwem symbolu parM1-x.
Wizualizacja ruchu
Z myślą o czytelnej prezentacji graficznej modelu wahadła, dokonamy jego drobnej
modyfikacji. Działanie sił zrealizujemy jako model połączenia dwóch punktów materialnych,
zaś wahadło będzie złożone z punktu ruchomego, o skończonej masie, oraz punktu
nieruchomego, o masie nieskończonej.
Zdefiniujemy zatem model wahadła jako abstrakcję wahadlo.pd
zawierającą, oprócz omówionego powyżej modelu punktu materialnego, dwa nowe
podmodele: połączenie dwóch punktów materialnych zdefiniowane jako abstrakcja
przechowywana w pliku spoiwo.pd
oraz model punktu nieruchomego zdefiniowany jako abstrakcja przechowywana w pliku
zaczep.pd.
10
Zauważmy, że powyższy schemat przewiduje możliwość zdalnego przemieszczania punktu
o nieskończonej masie oraz ustalania dla niego niezerowej prędkości ruchu jednostajnego.
Poniższy schemat jest realizacją warstwy wizualizacji
której podwarstwy odpowiadają trzem elementom modelu wahadła. Podarstwy te mogą
zdalnie pobierać potrzebne do wizualizacji wartości parametrów modelu dzięki wspólnym
z odpowiadającymi elementami modelu identyfikatorom: H1, L1 i M1.
Schemat podwarstwy
jest przedstawiony poniżej.
Równie prosty jest schemat podwarstwy
:
Natomiast samodzielne wykonanie warstwy spoiwa wymaga więcej pracy i nie będzie
zadaniem uczestników. Jedna ramka wizualizacji wahadła jest zaprezentowana poniżej.
Literatura
1. Miller Puckette The Theory and Technique of Electronic Music, World Scientific
Press, Singapore, 2007.
2. Jan Awrejcewicz Drgania deterministyczne układów dyskretnych, Wydawnictwo
Naukowo-Techniczne, Warszawa 1996.