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.