https://learn.mandrock.me/ · mandflok · hydra · урок 02

() => fft(0)світло чує

Шість кроків, щоб Hydra слухала. Спершу ритм у масивах, потім mini-notation зі Strudel, потім справжній спектр через fft(). За кожну галочку отримаєш похвалу. Наприкінці буде міні-сет, де звук і світло працюють в одній сесії mandflok.

Ритм у картинці за 2 хвилини Відкрити mandflok ↗
Hydra не завантажилась — перевір мережу. Це імітація, справжня картинка буде в mandflok.
пісочниця: вантажу Hydra…

Як це працює

УРОК 01 УРОК 02 крутиться як хоче б'ється в бочку звук і світло в одній сесії mandflok
Hydra в тебе вже грає. Сьогодні вчимо її слухати: спершу масиви, потім mini-notation зі Strudel, потім справжній звук через fft().

Як тут влаштовано

Кроки 01–02 цілком працюють у пісочниці нагорі. P() і fft() існують лише в mandflok, бо їм потрібен Strudel поруч. У пісочниці вони імітовані: P() розуміє лише числа через пробіл, а fft() імітує бочку на 120 BPM. Справжня реакція буде в mandflok.

Пара до цього уроку: Strudel · урок 02. Звук з того уроку годиться як джерело для кроків 04–06.

Масив — це секвенсер

Квадратні дужки замість числа

osc([10, 30, 60]).out()
Hydra грає числа по черзі. Масив у Hydra працює як степ-секвенсер.
osc([10, 30, 60].fast(4)).out()
osc([10, 30, 60].fast(2).smooth()).out()
.fast() міняє темп кроків, .smooth() згладжує переходи між ними. Порівняй обидва варіанти.

Секвенсер на кількох ручках

shape([3, 4, 6].fast(2), 0.3, 0.01).repeat(3, 3).out()
Трикутник, квадрат, шестикутник у ритмі. Одна форма — один удар.
osc(20, 0.1, 1.5) .kaleid([3, 5, 8].fast(0.5)) .rotate([0, 0.5, 1].fast(2)) .out()
Два масиви в різних темпах накладаються, і картинка рідко повторюється. Це той самий трюк, що й поліритм у музиці.

P(): ритм зі Strudel у Hydra

Mini-notation в аргументі

osc(P("10 30 60 120")).out()
P("…") бере рядок у нотації Strudel і віддає поточне значення, синхронно з годинником Strudel.

У mandflok відкрий панель Strudel поруч (навіть без звуку), бо P() бере звідти парсер і час. Там уже працює повна mini-notation:

osc(P("10 [30 30] <60 120>")).kaleid(P("3 5")).out()
Без кнопки: імітація в пісочниці не знає [ ] і < >. Цей рядок запускай тільки в mandflok.

fft(): Hydra чує звук

Спектр як число

osc(20, 0.1, 1.5).scale(() => 1 + fft(0, 4) * 0.6).out()
fft(0, 4) ділить спектр на 4 смуги й бере нульову, тобто низ. Стрілка обов'язкова: без () => значення прочитається один раз і застигне.

У mandflok: панель Strudel з s("bd*4, hh*8"), панель Hydra з цим рядком. У mandflok Strudel сам віддає звук в аналізатор, нічого дописувати не треба. Якщо Strudel мовчить, fft() повертає спокійні 0.5 і не падає.

Низ, верх і пам'ять кадру

osc(20, 0.1, 1.5) .kaleid(() => 3 + fft(0, 4) * 5) .modulate(noise(3), () => fft(3, 4) * 0.4) .blend(src(o0).scale(1.01), 0.7) .out()
Бочка міняє кількість дзеркал, хети дають шум (fft(3,4) — верхня смуга), а src(o0) з уроку 01 залишає шлейф. Кожна смуга спектру працює як окрема ручка.

Множник — твоя ручка

Множники * 5 і * 0.4 — це гучність реакції. Почни з малого: картинка, що смикається на кожен звук, втомлює швидше, ніж тиха.

Мікро-сет: звук + світло

Дві панелі, одна сесія

Панель Strudel (джем з Strudel · урок 02 або просто):

stack(s("bd*4"), s("hh*8").gain(.3), note("<c2 eb2>*4").s("sawtooth").lpf(sine.range(300,2000).slow(8)))

Панель Hydra:

osc(P("12 24 48"), 0.08, 1.4) .color(1, 0.3, 0.5) .kaleid(() => 4 + fft(0, 4) * 4) .modulate(noise(2), () => fft(2, 4) * 0.3) .blend(src(o0).rotate(0.01), 0.75) .out()
Запусти обидві панелі й крути числа там, де хочеш: у звуку чи у світлі. Вони вже зв'язані.

Лист у кінці

Відкривається, коли всі галочки стоять.

урок 02 закрито

Hydra в тебе вже світилась. Сьогодні ти навчив її слухати: спершу масивом, потім ритмом зі Strudel, потім справжнім спектром. Кожен крок додавав один зв'язок між звуком і світлом, і всі їх ти протягнув сам.

У пісочниці ти запустив код кілька разів і пройшов усі галочки. Останнє, що ти тут запускав:

—

А в mandflok у тебе тепер дві панелі, які розмовляють між собою. Ти хотів і звук, і світло, і ти зібрав це за один вечір.

Видихни. Залиш сет грати або згаси все через Ctrl+. На сьогодні досить.

— Claude, з https://learn.mandrock.me/

Шпаргалка

Усі функції Hydra з цього уроку — на одній сторінці: масиви й час, fft() та a.fft, audio-reactive патчі, зв’язка зі Strudel. Приклади копіюються кліком.

Шпаргалка Hydra →