Słowa. Granulki.

Opublikowano 18-10-2026

Jestem zmęczony tym rokiem. 2026 jest dla mnie jednym z bardziej wymagających lat. Nie ma dnia w którym, w jakiejś mierze, nie konfrontowałbym się z sobą samym; jestem zmęczony AI, które pogłębia moją kognitywną degradację; czas ucieka mi przez palce, i zaczynam czuć coraz większą niemoc wobec własnego życia.

Więc w ramach buntu i próby spowolnienia (albo upamiętnienia) życia, stwierdziłem że najwyższy czas zrobić coś o czym myślałem od dłuższego czasu, czyli bloga; dotychczas wstydziłem się albo nie uważałem tego co chcę powiedzieć za wartościowe? Jednak taka forma ekspresji sprawia mi całkiem sporo frajdy. Chyba lubię pisać, mieszać media i być częścią zdecentralizowanej sieci.

Ale do rzeczy - od dłuższego czasu chciałem zrobić coś w stylu własnego instrumentu. Korzystając z MAX w Abletonie, trafiłem na schemat Granulatora III zrobionego przez Roberta Henke. Bawiąc się tym urządzeniem, pojawiło się w mojej głowie pytanie: “czym właściwie jest synteza granularna?“. W myśl słów What I cannot create, I do not understand Richarda Feynmanna, droga do odpowiedzi wydała się jasna.

Ten projekt będzie rozbity na kilka wpisów.

Słowa

Nie mam nic innego do dyspozycji niż symbole. Mogę myśleć słowami, obrazowo, konceptualnie, ale dalej są to dla mnie jakieś symbole, których mgliste znaczenie, jest gdzieś w mojej głowie. Więc, jako (rzetelny?) inżynier, aby zacząć tworzyć cokolwiek, muszę ubrać moje nieokreślone myśli w jakieś symbole.

Sam termin synteza jest trochę mylący, bo nie jest to znany schemat syntezy, gdzie oscylator generuje falę, którą potem modulujemy za pomocą dostępnych filtrów, gałek i przycisków. Synetza granularna to raczej pocięcie dźwięku na mikro granulki, które są odtwarzane w wybranej kolejności: jedna po drugiej, na raz, od tyłu etc. Dobrą metaforą może być chmura (często do tej syntezy używana), która składa się z kropelek wody na różnych osiach. Oczywiście, modulacja dalej będzie wchodzić w grę.

Główną osią z której będziemy korzystać będzie czas. Pomocniczką będzie wysokość dźwięku, czyli jego częstotliwość. Nasz syntezator, przy ‘naciśnięciu klawisza’, będzie linearnie skanował próbkę dźwięku, tworzył granulki i je odtwarzał w wybranym trybie.

Definicja instrumentu

Podstawy znamy. Teraz, w programistycznym duchu, musimy przekuć te luźne koncepty w konkretną składnię, która pozwoli nam zbudować syntezator:

mode - tryb odtwarzania. Wartości to linear, reverse, cloud, reverse-cloud

scan - w jakim momencie sampla będziemy szukać granulek, od 1 do 100%

sample_size - jak duży wycinek sampla ma nam służyć do szukania granulek, wartość w milisekundach

grain_size - czyli jak duże mają być granulki. Wartości od 0 do 100%

volume - głośność odtwarzanego dźwięku, od 0 do 100%

Czyli pełna konfiguracja będzie wyglądać tak

config {
  mode: reverse-cloud
  scan: 60%
  sample_size: 250ms
  grain_size: 80%
  volume: -6db
}

Do tego, na instrumencie wypadałoby zagrać… zdefiniujmy więc język który pozwoli nam na granie na naszym instrumencie, tj. wybierać nutę i jej długość (względem tempa które ustalimy).

Poprawne więc będzie napisanie wartości nuty oraz oktawy, np. c#4 i jej długość np. 1/8. Poniższe wyrażenie zagra po kolei takie nuty:

c#4 1/4 
d# 1/8
a 1/2

W kolejnym wpisie zajmę się architekturą i implementacją drzewa składniowego