Opis
Japoński fizyk Yoshiki Kuramoto badał, w jaki sposób niezależne elementy potrafią spontanicznie się synchronizować – jak wiele rytmów, drgań czy impulsów może nagle odnaleźć wspólny porządek. Model, który stworzył, opisuje ten proces matematycznie; w ”Kuramoto drone” zostaje przetłumaczony na język dźwięku. Oscylatory zamiast równań – tony zamiast cząstek – powoli dostrajają się do siebie, aż z chaosu wyłania się spójne, wibrujące brzmienie. To eksperyment na styku nauki i sztuki: między fizyką synchronizacji a estetyką wspólnego rytmu.
Czytaj więcej
Yoshiki Kuramoto (蔵本 由紀) to japoński fizyk specjalizujący się w badaniu systemów o nieliniowej dynamice i mechanice statystycznej nierównowagowej (badacz jest związany z Nonlinear Dynamics group w Kyoto University) – za tymi zagadkowymi terminami kryją się próby zrozuminia, w jaki sposób można przewidywać zachowanie systemów złożonych z wielu wpływających na siebie oscylujących elementów (jednym z typowych przykładów ilustrujących charakter pracy Kuramoto jest prosty eksperyment polegajacy na umieszczeniu kilku mechanicznych metronomów rozsynchronizowanych w fazie na wspólnym podłożu przenoszącym drgania po pewnym czasie – zależnym od ilości przenoszonej przez podłoże energii – metronomy zaczną się synchronizować). Takie systemy często występują w naturze i zdolność do ich wyłuskiwania z ogółu otoczenia niewątpliwie składa się na wyjątkowość pracy Kuramoto na równi z umiejętnością budowania równań. Innymi słowy: badania Yoshiki Kuramoto są tak fascynujące, ponieważ łączą zaawansowaną współczesną metodykę pracy ze zdolnością obserwacji świata natury charakterystyczną dla wczesnego przyrodoznawstwa. Wśród osiągnięć Kurtamoto znajduje się nazwany jego nazwiskiem model obliczeniowy pozwalający przewidywać zdolność do samosynchronizacji wspomnianych wyżej układów złożonych z wielu oscylatorów. Ponieważ zaś oscylatory są jednym z podstawowych modułów funkcjonalnych elektronicznych instrumentów muzycznych implementacja modelu Kuramoto w syntezatorze dronowym jest świetnym ćwiczeniem intelektualnym, dobrą zabawą i poznawczym eksperymentem z zakresu sound-designu.
Dokumentacja techniczna
Parametry przekazywane przez adres URL
- gui 0 lub 1; domyślnie 1; chowa/pokazuje panel z interfejsem graficznym
- lang en lub pl; domyślnie en; ustawia język interfejsu (istnieje możliwość dodania kolejnych języków)
- midiinport domyślnie wyłączone; numer portu MIDI do zewnętrznego sterowania Miniaturą (przyjmowanie komunikatów)
- midioutport domyślnie wyłączone; numer portu MIDI do zewnętrznego sterowania Miniaturą (nadawanie komunikatów)
- pointer 0 lub 1; domyślnie 1; chowa/pokazuje kursor myszy
- size ilość oscylatorów (minimum 2)
- synth 0 lub 1; domyślnie 1; wyłącza/włącza wewnętrzny generator dźwięku
- 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
- worker 0 lub 1; domyślnie 0; umożliwia zablokowanie wbudowanych w przeglądarkę mechanizmów zatrzymywania pracy programu kiedy okno nie jest widoczne
- 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)
Komunikaty przekazywane przez WebSocket
Komunikaty, na które reaguje Miniatura
- circular 0 lub 1; domyślnie 0; wyłącza/włącza „zawijanie” wartości fazy oscylatora (przełącznik „circular”), co pozwala uzyskać płynne zmiany dźwięku (brak „progu”)
- deviation 0.0 … 1.0; ustala poziom „rozchwiania” systemu (suwak „deviation”)
- invert 0 lub 1; domyślnie 0; odwraca kierunek oscylacji (przełącznik „invert”)
- K 0.0 … 1.0; ustala znormalizowany poziom parametru K (suwak „K”) modelu – szczegóły: https://en.wikipedia.org/wiki/Kuramoto_model
- key MIDI pitch (0 … 127), amplifikacja (0.0 … 1.0); pozwala manualnie sterować głośnośią oscylatorów przyporządkowanych do konkretnych nut MIDI
- randomize ustala losowe fazy oscylatorów (przycisk „randomize”)
- speed 0.0 … 1.0; ustala znormalizowaną prędkość (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
- vol 0.0 … 1.0; ustala poziom głośności (suwak „vol”)
Komunikaty wysyłane przez Miniaturę
- kuramoto circular 0 lub 1; zmiana trybu „zawijania” wartości fazy oscylatora (przełącznik „circular”)
- kuramoto deviation 0.0 … 1.0; zmiana poziomu „rozchwiania” systemu (suwak „deviation”)
- kuramoto invert 0 lub 1; zmiana trybu odwracania kierunku oscylacji (przełącznik „invert”)
- kuramoto K 0.0 … 1.0; zmiana znormalizowanego poziomu parametru K (suwak „K”) modelu – szczegóły: https://en.wikipedia.org/wiki/Kuramoto_model
- kuramoto randomize ustawienie losowych wartości faz oscylatorów (przycisk „randomize”)
- kuramoto speed 0.0 … 1.0; zmiana znormalozowanej prędkości (suwak „speed”)
- kuramoto 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
- kuramoto values szereg znormalizowanych wartości (0.0 … 1.0) określających aktualną fazę oscylatorów (ilość wartości równa jest ilości oscylatorów)
- kuramoto vol 0.0 … 1.0; zmiana poziomu głośności (suwak „vol”)
MIDI
Komunikaty, na które reaguje Miniatura
- CC 000 na kanale 1 portu MIDI ustawionego jako wejście odwraca kierunek oscylacji (przełącznik „invert”)
- CC 001 na kanale 1 portu MIDI ustawionego jako wejście wyłącza/włącza „zawijanie” wartości fazy oscylatora (przełącznik „circular”), co pozwala uzyskać płynne zmiany dźwięku (brak „progu”)
- CC 002 na kanale 1 portu MIDI ustawionego jako wejście ustala losowe fazy oscylatorów (przycisk „randomize”)
- CC 003 na kanale 1 portu MIDI ustawionego jako wejście ustala wartość parametru „K” (suwak „K”)
- CC 004 na kanale 1 portu MIDI ustawionego jako wejście ustala wartość parametru „speed” (suwak „speed”)
- CC 005 na kanale 1 portu MIDI ustawionego jako wejście ustala poziom „rozchwiania” systemu (suwak „deviation”)
- CC 006 na kanale 1 portu MIDI ustawionego jako wejście ustala poziom głośności (suwak „vol”)
- Note Off na kanale 2 portu MIDI ustawionego jako wejście usuwa daną nutę MIDI z listy dostępnych tonów
- Note On na kanale 2 portu MIDI ustawionego jako wejście pozwala włączyć daną nutę MIDI do listy dostępnych tonów
Komunikaty wysyłane przez Miniaturę
- CC 000 na kanale 3 portu MIDI ustawionego jako wyjście raportuje odwrócenie kierunku oscylacji (przełącznik „invert”)
- CC 001 na kanale 3 portu MIDI ustawionego jako wyjście raportuje „zawijanie” wartości fazy oscylatora (przełącznik „circular”), co pozwala uzyskać płynne zmiany dźwięku (brak „progu”)
- CC 002 na kanale 3 portu MIDI ustawionego jako wyjście raportuje ustalenie losowych faz oscylatorów (przycisk „randomize”)
- CC 003 na kanale 3 portu MIDI ustawionego jako wyjście raportuje zmianę wartości parametru „K” (suwak „K”)
- CC 004 na kanale 3 portu MIDI ustawionego jako wyjście raportuje zmianę wartości parametru „speed” (suwak „speed”)
- CC 005 na kanale 3 portu MIDI ustawionego jako wyjście raportuje zmianę wartości „rozchwiania” systemu (suwak „deviation”)
- CC 006 na kanale 3 portu MIDI ustawionego jako wyjście raportuje zmianę poziomu głośności (suwak „vol”)
- CC xxx na kanale 4 portu MIDI ustawionego jako wyjście raportuje zmianę fazy oscylatora o indeksie odpowiadającym numerowi komunikatu CC
- Note Off na kanale 5 portu MIDI ustawionego jako wyjście przekazuje parametry stroju
- Note On na kanale 5 portu MIDI ustawionego jako wyjście przekazuje parametry stroju
Komunikacja z MaxMSP
Komunikaty, na które reaguje Miniatura
- circular 0 lub 1; domyślnie 0; wyłącza/włącza „zawijanie” wartości fazy oscylatora (przełącznik „circular”), co pozwala uzyskać płynne zmiany dźwięku (brak „progu”)
- deviation 0.0 … 1.0; ustala poziom „rozchwiania” systemu (suwak „deviation”)
- invert 0 lub 1; domyślnie 0; odwraca kierunek oscylacji (przełącznik „invert”)
- K 0.0 … 1.0; ustala znormalizowany poziom parametru K (suwak „K”) modelu – szczegóły: https://en.wikipedia.org/wiki/Kuramoto_model
- key MIDI pitch (0 … 127), amplifikacja (0.0 … 1.0); pozwala manualnie sterować głośnośią oscylatorów przyporządkowanych do konkretnych nut MIDI
- randomize ustala losowe fazy oscylatorów (przycisk „randomize”)
- speed 0.0 … 1.0; ustala znormalizowaną prędkość (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
- vol 0.0 … 1.0; ustala poziom głośności (suwak „vol”)
Komunikaty wysyłane przez Miniaturę
- kuramoto circular 0 lub 1; zmiana trybu „zawijania” wartości fazy oscylatora (przełącznik „circular”)
- kuramoto deviation 0.0 … 1.0; zmiana poziomu „rozchwiania” systemu (suwak „deviation”)
- kuramoto invert 0 lub 1; zmiana trybu odwracania kierunku oscylacji (przełącznik „invert”)
- kuramoto K 0.0 … 1.0; zmiana znormalizowanego poziomu parametru K (suwak „K”) modelu – szczegóły: https://en.wikipedia.org/wiki/Kuramoto_model
- kuramoto randomize ustawienie losowych wartości faz oscylatorów (przycisk „randomize”)
- kuramoto speed 0.0 … 1.0; zmiana znormalozowanej prędkości (suwak „speed”)
- kuramoto 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
- kuramoto values szereg znormalizowanych wartości (0.0 … 1.0) określających aktualną fazę oscylatorów (ilość wartości równa jest ilości oscylatorów)
- kuramoto vol 0.0 … 1.0; zmiana poziomu głośności (suwak „vol”)