Opis
Algorytmiczny porządek i mechaniczna muzykalność spotykają się tu w jednym procesie. Miniatura ”Pozytywka r30” wykorzystuje jednowymiarowy automat komórkowy Stevena Wolframa, który – podobnie jak dawne pozytywki czy pianole – tworzy rytmiczne struktury z sekwencji drobnych impulsów. Każdy dźwięk jest wynikiem kolejnego kroku obliczeń, a całość rozwija się bez możliwości skrótu czy przewidzenia rezultatu. Praca zamienia matematyczną regułę w muzyczne doświadczenie, w którym współbrzmią ze sobą porządek i przypadek.
Czytaj więcej
„Pozytywka r30” to rozbudowana wersja innej miniatury interkatywnej, zatytułowanej po prostu „r30”, stanowiącej dodatek do generatywnej instalacji Pawła Janickiego o tym samym tytule — instalacja i pierwotna wersja miniatury zostały stworzone na potrzeby indywidualnej wystawy Janickiego „Point Nemo” w 2020 roku.
Miniatura nawiązuje do mechanizmów pozytywek, pianol i innych podobnych muzycznych urządzeń, kombinacji instrumentów i mechanicznych sequencerów, sterowanych perforowanymi taśmami lub „płytami” i programowania przy wykorzystaniu kart perforowanych (jak wiadomo, te ostatnie mają długą, sięgającą przełomu XVIII/XIXI wieku, przedelektroniczną tradycję zastosowania w przemyśle włókienniczym, jako nośniki programów sterujących pracą krosien — wynalazek Josepha-Marie Jacquarda).
„Pozytywka r30” korzysta z jednowymiarowego automatu komórkowego, jednego z wielu opracowanych przez badacza tego rodzaju graficznych systemów obliczeniwych, enfant terrible współczesnej matematyki, Stevena Wolframa. Reguły, wedle których działa automat mogą łatwo zostać zmienione przez odbiorcę (wystarczy kilka kliknięć w odpowiedniej sekcji interfejsu graficznego Miniatury), ale bazowy zestaw reguł odpowiada wolframowskiemu automatowi r30. Jest to dość szczególny mechanizm, Wolfram poświęca mu sporo uwagi w swojej książce A New Kind of Science, pełnoprawny system obliczeniowy — można za jego pomocą kodować informacje i dokonywać obliczeń, innymi słowy r30 jest Maszyną Turinga — cechujący się nieredukowalnością obliczeniową – zachowaniem polegajacym na tym, że aby poznać stan automatu po pewnej ilości kroków (generacji) należy te kroki po prostu wykonać (nie istnieje, obliczeniowy „skrót” pozwalający dowiedzieć się, jaki będzie stan ewoluującego automatu np. po 10000 kroków jeśli nie przeprowadzi się kolejno odpowiednich obliczeń).
Dokumentacja techniczna
Parametry przekazywane przez adres URL
- gui 0 lub 1; domyślnie 1; chowa/pokazuje panel z interfejsem graficznym
- size szerokość „taśmy” (ilość rzędów reprezentujących kolejne tony)
- pointer 0 lub 1; domyślnie 1; chowa/pokazuje kursor myszy
- worker 0 lub 1; domyślnie 0; umożliwia zablokowanie wbudowanych w przeglądarkę mechanizmów zatrzymywania pracy programu kiedy okno nie jest widoczne
- lang en lub pl; domyślnie en; ustawia język interfejsu (istnieje możliwość dodania kolejnych języków)
- synth 0 lub 1; domyślnie 1; wyłącza/włącza wewnętrzny generator dźwięku
- ws adres; domyślnie wyłączone; włącza i ustala adres (zwykle localhost:9001) dla komunikacji poprzez WebSocket (umożliwia zewnętrzne sterowanie Miniaturą i dostosowanie do własnych potrzeb)
- xws adres; domyślnie wyłączone; włącza i ustala adres (zwykle ws://localhost:9001) ze wskazaniem protokołu dla komunikacji poprzez WebSocket (umożliwia zewnętrzne sterowanie Miniaturą i dostosowanie do własnych potrzeb)
- midiinport domyślnie wyłączone; numer portu MIDI do zewnętrznego sterowania Miniaturą (przyjmowanei komunikatów)
- midioutport domyślnie wyłączone; numer portu MIDI do zewnętrznego sterowania Miniaturą (nadawanie komunikatów)
- tpf „ticks per frame”; ustala długość „nuty” wyrażoną w impulsach zegara MIDI (przydatne w przypadku użycia Miniatury w synchronizacji z rozbudowanym systemem MIDI)
- voices ustala liczbę głosów wewnętrznego syntezatora
- lowestkey wyrażony w numerach klawiszy MIDI index najniższego dźwięku
- invert 0 lub 1; domyślnie 0; odwraca działanie pustych i wypełnionych komórek (przełącznik „invert”)
- continuous 0 lub 1; domyślnie 1; włącza lub wyłącza tryb „staccato” [staccato=0] (przełącznik „continuous”)
- clock 0 lub 1; domyślnie 1; wyłącza/włącza wewnętrzny zegar sterujący odtwarzaniem
- vol 0.0 … 1.0; ustala inicjalny poziom głośności instrumentu (globalny suwak „vol”)
- speed ustala inicjalną prędkość odtwarzania (globalny suwak „speed”)
- tuning C c# D d# E F f# G g# A a# B; sekwencja binarna złożona z 12 liczb (0 lub 1), z których każda określa, czy odpowiadający jej pozycją dźwięk w oktawie jest włączony
Komunikaty przekazywane przez WebSocket
Komunikaty, na które reaguje Miniatura
- continuous 0 lub >0; domyślnie 1; włącza/wyłącza tryb „staccato” [staccato=0] (przełącznik „continuous”)
- invert 0 lub >0; domyślnie 0; odwraca działanie pustych i wypełnionych komórek (przełącznik „invert”)
- speed ustala prędkość odtwarzania (globalny suwak „speed”)
- vol ustala poziom głośności instrumentu (globalny suwak „vol”)
- key MIDI key (pitch), status (0/1); (strój) wyłącza/włącza daną nutę MIDI
- rule sekwencja binarna (0/1) złożona z 8 wartości, ustalająca reguły dla automatu komórkowego
- randomize ustawia losowe stany komórek automatu
- update wymusza przeliczenie nowego pokolenia automatu komórkowego – komunikat przydatny do budowy własnych mechanizmów synchronizacji Miniatury z innymi aplikacjami lub urządzeniami
Komunikaty wysyłane przez Miniaturę
- ca note pitch (0 … 127) amp (0.0 … 1.0) wyłączenie/włączenie nuty o określonej wysokości i głośności (amp 0.0 oznacza wyłączenie nuty)
- ca flush sygnalizuje zamknięcie wszystkich odgrywanych nut
- ca invert odwrócenie znaczenia pustych i wypełnionych komórek (przełącznik „invert”)
- ca continuous wyłączenie/włączenie trybu łączenia następujących po sobie wypełnionych komórek do postaci ciągłych nut (przełącznik „continuous”)
- ca speed zmiana znormalizowanej prędkości odtwarzania (suwak „speed”)
- ca vol zmiana znormalizowanej głośności instrumentu (globalny suwak „vol”)
- ca key pitch (0 … 127) status (0/1); (strój) zmiana stanu klawisza
- ca rule sekwencja binarna (0/1) złożona z 8 wartości, zwracająca reguły dla automatu komórkowego
- ca randomize ustawienie losowych stanów komórek automatu (suwak „speed”)
- ca update raportuje przeliczenie nowego stanu automatu komórkowego (komunikat może posłużyć do synchronizacji Miniatury z innymi aplikacjami lub urządzeniami)
- ca tuning lista 12 wartości binarnych reprezentujących strój
MIDI
Komunikaty, na które reaguje Miniatura
- CC 010 na dowolnym kanale włącza/wyłącza tryb „staccato” [staccato=0] (przełącznik „continuous”)
- CC 011 na dowolnym kanale odwraca działanie pustych i wypełnionych komórek (przełącznik „invert”)
- CC 012 na dowolnym kanale ustawia losowe stany komórek automatu
- CC 013 na dowolnym kanale ustala prędkość odtwarzania (globalny suwak „speed”)
- CC 014 na dowolnym kanale zmiana znormalizowanej głośności instrumentu (globalny suwak „vol”)
- CC 020 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 000
- CC 021 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 001
- CC 022 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 010
- CC 023 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 011
- CC 024 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 100
- CC 025 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 101
- CC 026 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 110
- CC 027 na dowolnym kanale wyłącza/włącza stan automatu komórkowego dla przypadku 111
- CC 030 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk C
- CC 031 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk c#
- CC 032 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk D
- CC 033 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk d#
- CC 034 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk E
- CC 035 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk F
- CC 036 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk f#
- CC 037 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk G
- CC 038 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk g#
- CC 039 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk A
- CC 040 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk a#
- CC 041 na dowolnym kanale (strój) wyłącza/włącza (powtarzany w oktawach w obrębie obsługiwanego zakresu) dźwięk B
- Note Off na dowolnym kanale (strój) wyłącza korespondującą z parametrem MIDI pitch kolumnę komórek
- Note On na dowolnym kanale (strój) włącza korespondującą z parametrem MIDI pitch kolumnę komórek
Komunikaty wysyłane przez Miniaturę
- CC 070 na kanale 2 włączenie/wyłączenie trybu „staccato” [staccato=0] (przełącznik „continuous”)
- CC 071 na kanale 2 odwrócenie znaczenia pustych i wypełnionych komórek (przełącznik „invert”)
- CC 072 na kanale 2 raportuje ustalenie losowych stanów komórek automatu (przełącznik „randomize”)
- CC 073 na kanale 2 zmiana prędkości odtwarzania (suwak „speed”)
- CC 074 na kanale 2 zmiana głośności instrumentu (globalny suwak „vol”)
- CC 080 na kanale 2 stan automatu komórkowego dla przypadku 000
- CC 081 na kanale 2 stan automatu komórkowego dla przypadku 001
- CC 082 na kanale 2 stan automatu komórkowego dla przypadku 010
- CC 083 na kanale 2 stan automatu komórkowego dla przypadku 011
- CC 084 na kanale 2 stan automatu komórkowego dla przypadku 100
- CC 085 na kanale 2 stan automatu komórkowego dla przypadku 101
- CC 086 na kanale 2 stan automatu komórkowego dla przypadku 110
- CC 087 na kanale 2 stan automatu komórkowego dla przypadku 111
- CC 090 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk C
- CC 091 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk c#
- CC 092 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk D
- CC 093 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk d#
- CC 094 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk E
- CC 095 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk F
- CC 096 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk f#
- CC 097 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk G
- CC 098 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk g#
- CC 099 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk A
- CC 100 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk a#
- CC 101 na kanale 2 (strój) wyłączenie/włączenie (powtarzanego w oktawach w obrębie obsługiwanego zakresu) dźwięk B
- Note Off na kanale 2 (strój) raportuje stan korespondującej z parametrem MIDI pitch kolumny komórek
- Note On na kanale 2 (strój) raportuje stan korespondującej z parametrem MIDI pitch kolumny komórek
Komunikacja z MaxMSP
Komunikaty, na które reaguje Miniatura
- continuous 0 lub >0; domyślnie 1; włącza lub wyłącza tryb „staccato” [staccato=0] (przełącznik „continuous”)
- invert 0 lub >0; domyślnie 0; odwraca działanie pustych i wypełnionych komórek (przełącznik „invert”)
- speed ustala prędkość odtwarzania (globalny suwak „speed”)
- vol ustala poziom głośności instrumentu (globalny suwak „vol”)
- key MIDI key (pitch), status (0/1); (strój) wyłącza/włącza daną nutę MIDI
- rule sekwencja binarna (0/1) złożona z 8 wartości, ustalająca reguły dla automatu komórkowego
- randomize sutawia losowe stany komórek automatu
- update wymusza przeliczenie nowego pokolenia automatu komórkowego – komunikat przydatny do budowy własnych mechanizmów synchronizacji Miniatury z innymi aplikacjami lub urządzeniami
Komunikaty wysyłane przez Miniaturę
- ca note pitch (0 … 127) amp (0.0 … 1.0) wyłączenie/włączenie nuty o określonej wysokości i głośności (amp 0.0 oznacza wyłączenie nuty)
- ca flush sygnalizuje zamknięcie wszystkich odgrywanych nut
- ca invert odwrócenie znaczenia pustych i wypełnionych komórek (przełącznik „invert”)
- ca continuous wyłączenie/włączenie trybu łączenia następujących po sobie wypełnionych komórek do postaci ciągłych nut (przełącznik „continuous”)
- ca speed zmiana znormalizowanej prędkości odtwarzania (suwak „speed”)
- ca vol zmiana znormalizowanej głośności instrumentu (globalny suwak „vol”)
- ca key pitch (0 … 127) status (0/1); (strój) zmiana stanu klawisza
- ca rule sekwencja binarna (0/1) złożona z 8 wartości, zwracająca reguły dla automatu komórkowego
- ca randomize ustawienie losowych stanów komórek automatu (suwak „speed”)
- ca update raportuje przeliczenie nowego stanu automatu komórkowego (komunikat może posłużyć do synchronizacji Miniatury z innymi aplikacjami lub urządzeniami)
- ca tuning lista 12 wartości binarnych reprezentujących strój