ССЧ — риг гідра-візуалізацій

пульт для тижня рендерів: клавіші · аудіо-контракт · рендер · 10 треків · пресети · деплой · граблі

1. клавіші й воркфлоу

клавішадія
spaceplay / pause
lloop (грати виділену секцію по колу)
[in — виставити початок виділення по playhead
]out — виставити кінець виділення по playhead
hсховати/показати панель
ssave — рендер виділеної секції у файл (SAVE ⤓)
rкинути в редактор випадковий Hydra-пресет і одразу запустити

інші дії

2. аудіо-контракт скетча

Скетч читає живий аналіз треку через два паралельні інтерфейси (обидва живляться тим самим AnalyserBridge):

приклади прив'язки

shape(4, 0.3, 0.02).scale(1, () => 1 + fftLow * 0.5).out()
osc(10, 0.1, () => fftMid * 2).color(1, 0.1, 0.2).out()
osc(10).thresh(0.5 + beat * 0.3).out()
shape(4).scale(1, () => 1 + fft(0, 8)).out()
приклади вище написані для довідки по синтаксису — це не пресети зі снапшоту; робочий код — у блоках нижче.

аудіо-реактивні пресети зі снапшоту

fft-heartbeat FFT Heartbeat · id: fft-heartbeat
shape(4, () => 0.2 + fft(0)*0.3, 0.05)
  .color(1, 0.05, 0.15)
  .out()
fft-spiral FFT Spiral · id: fft-spiral
osc(20, 0.05, 1)
  .kaleid(() => 3 + Math.floor(fft(2)*5))
  .rotate(0, 0.1)
  .out()
fft-mic FFT Mic · id: fft-mic
fft.setSource('mic')
shape(4, () => 0.2 + fft(0)*0.3, 0.05)
  .color(0.1, 1, 0.4)
  .out()

3. рендер

4. 10 треків

трекidпресетдень (тижневий план)
01busifiziren01-busifizirenvein-pulse30.08, 21:00
02VLK02-vlkgutter-mosh31.08, 18:00
035 MINUTES FROM HOME03-5-minutes-from-homestatic-bloom01.09, 18:00
04AVTOBUS BURATIN04-avtobus-buratinkaleido-fever06.09, 15:00
05reumatizm05-reumatizmflatline-calm02.09, 18:00
06RIOT06-riotstrobe-needle03.09, 16:00
07Alone in the woods07-alone-in-the-woodsbloodmoon-drift03.09, 20:00
08Long way home08-long-way-homespiral-wound04.09, 18:00
09VESNA09-vesnaneon-marrow06.09, 18:00
10Aftermath10-aftermathvein-strobe-finale05.09, 18:00 *
* трек 10 (Aftermath) — аудіо ще нема. Майстер з'явиться після запису livecoding-сесії на YouTube; дата рендеру в плані (05.09) може виявитись передчасною, якщо запис на той момент не готовий — звірити перед днем.

5. пресети (код зі снапшоту)

Пресети запечені в src/core/presets.snapshot.json і не редагуються вручну (джерело — репо 0mandrock1/hydra-presets).

vein-pulse Vein Pulse · id: vein-pulse
shape(4, 0.3, 0.02)
  .repeat(3, 3)
  .color(0.8, 0, 0.2)
  .modulateRotate(osc(10), 0.5)
  .out()
gutter-mosh Gutter Mosh · id: gutter-mosh
src(o0)
  .modulate(noise(4, 0.5), 0.05)
  .layer(shape(4, 0.3, 0.1).color(1, 0, 0.3))
  .out()
static-bloom Static Bloom · id: static-bloom
osc(4, 0.02, 0.8)
  .diff(noise(1.5, 0.1))
  .color(0.6, 0.6, 1)
  .out()
kaleido-fever Kaleido Fever · id: kaleido-fever
osc(15, 0.1, 2)
  .kaleid(8)
  .color(1, 0.3, 1)
  .rotate(0, 0.1)
  .modulateScale(noise(3, 0.2), 0.5)
  .out()
flatline-calm Flatline Calm · id: flatline-calm
gradient(0.3)
  .color(0.05, 0.05, 0.08)
  .modulate(noise(0.5, 0.05), 0.02)
  .out()
strobe-needle Strobe Needle · id: strobe-needle
osc(0.1, 0, 1)
  .thresh(0.5)
  .out()
bloodmoon-drift Bloodmoon Drift · id: bloodmoon-drift
osc(6, 0.05, 0.3)
  .rotate(0.1, 0.05)
  .color(1, 0.1, 0.15)
  .modulate(noise(2, 0.1), 0.1)
  .out()
spiral-wound Spiral Wound · id: spiral-wound
osc(20, 0.05, 1)
  .kaleid(5)
  .rotate(0, 0.1)
  .modulateRotate(osc(7, 0, 1), 1)
  .out()
neon-marrow Neon Marrow · id: neon-marrow
voronoi(5, 0.3, 0.1)
  .color(0.9, 0.2, 0.5)
  .modulateHue(osc(3, 0.1, 1), 1)
  .out()
vein-strobe-finale Vein Strobe Finale · id: vein-strobe-finale
shape(3, 0.4, 0.01)
  .kaleid(6)
  .color(1, 0, 0.1)
  .modulate(osc(8, 0, 1).thresh(0.5), 0.3)
  .out()
static-ghost Static Ghost · id: static-ghost · не задіяний у ССЧ-конфізі
noise(50, 0.9)
  .thresh(0.5, 0.1)
  .invert()
  .modulate(osc(20, 0, 1).rotate(0.785), 0.3)
  .out()

6. деплой

Конфіг альбому — configs/ssch.json (title/subtitle/footer/theme + 10 треків, кожен id/title/url: audio/<id>.mp3/sketch), опційна edition-логіка — src/editions/ssch/.

збірка

node build.mjs

esbuild пече dist/ssch.html (та інші відомі конфіги) з одного репо /root/projects/hydra-album.

деплой

sh ops/deploy.sh ssch
sh ops/deploy.sh all

Ціль ssch: dist/ssch.html/var/www/html/tools-landing/ssch-album/index.html (з таймстемп-бекапом попередньої версії), chown www-data, порожня audio/ тека створюється якщо нема. Смоук-курл іде з кредами (basic-auth), бо без них URL віддає 401; вихід ненульовий на будь-якому не-200.

URL і проксі

7. граблі