R1V3R.CC nilo@r1v3r:/usr/share/art$ art /etc about
drwxr-xr-x/usr/share/artart1/1
art/
Art

Experiments

Short pieces made in code, published when they're done. Each one declares what it's made of: buffer, palette, frames per second, licence. Run it again and you get the same piece, exactly.

0007-falcoaria
2026-10-01

0007 · FALCOARIA

In falconry the falcon perches on the glove of the left hand; the right stays free for the lure. Here your left hand, in front of the webcam, is the glove: the hand's height in the frame is the bird's altitude, a pinch is one wingbeat and a closed fist is the stoop. The bird doesn't obey: it flies where the hand points with the energy it has, and the cube measures the whole flight.

piece
0007 · FALCOARIA · 2026-10-01 · real time · interactive, with webcam
technique
MediaPipe Hand Landmarker hand tracking, 21 points, running on your computer (the video never leaves the browser); gestures measured on the hand itself — pinch by thumb–index distance over palm size, with hysteresis; fist by four curled fingers over three readings in a row; palm height in the video frame → altitude; point-mass flight model at a fixed 60 Hz step: lifting-line lift (CLα = 2π·AR/(AR+2)), parasite + induced drag, stall above CLmax, thrust only on the downstroke, a stoop with folded wings trading height for speed and aiming at the lure, pull-out limited by load; downwash ε = 2·CL/(π·AR) and tip vortices with Γ = L/(ρ·V·b); wireframe falcon from the same .glb as HORUS, skinned on the CPU; in-house rasterizer on a 2D canvas, no WebGL; four camera angles with hard cuts (3/4, side, front, top), AUTO cycling through them free orbit by dragging and mouse-wheel zoom; the bird toggles between cyan wireframe and a solid surface on the warm table (z-buffer, Bayer 4×4) — projections and plots always go to the back walls; AR mode in Three.js r160: the raw camera as backdrop (a declared exception to W3 — there the camera is the world, not an image of work), neon green and cyan palette, Cp on the bird's surface, streamlines and a pressure slice computed from a bound vortex with Γ = L/(ρ·V·b) (Kutta–Joukowski), tip vortices and downwash, Bernoulli pressure Cp = 1 − (u/V)², the trail coloured by speed; an optional video filter as a thermal camera (luminance on the same heat map, displaced by noise and by the luminance itself, cyan edges); in AR the other hand (the right) is a clutch zoom: a closed fist engages and distance to the camera zooms in or out, an open hand locks it
buffer
426×240 landscape, 216×384 portrait (W2) · 16 colours · 3D at 15 fps, HUD at 30 · webcam reduced to 64×48 and quantized to the cool table with Bayer 4×4 (W3) · the bird is drawn 26× in a 120 × 100 × 60 m cube, width and height adjustable from 40 to 240 m
time
real time · without a camera, the demo flies itself as a function of the simulation clock: run it again and the same flight comes out
inputs
falcon mesh (.glb, the same as HORUS) · glove: Rigged Lowpoly Hand (Janosch, Sketchfab, CC-BY 4.0), 808 triangles and 21 joints with the author's weights, posed by MediaPipe's 21 points; switched off, the hand becomes the 21 joints and the pinch vector with the distance that triggers the wingbeat · MediaPipe Tasks Vision 1.0.1 and hand_landmarker.task (Google, Apache 2.0), vendored · bird: female peregrine falcon, 0.9 kg, 1.0 m span, 0.12 m² wing area, CD0 0.05, e 0.8, CLmax 1.4 [measure] · stoop drag area 0.0019 m², calibrated to a 320 km/h terminal speed [measure] · wingbeat thrust (1.2 weights peak over 0.25 s) and a 10 g load limit, modelled [measure]
licence
code MIT · piece CC BY-NC 4.0 · MediaPipe Apache 2.0 · Three.js MIT · glove CC-BY 4.0 (Janosch) · signed by Nilo River
0006-blocos
2026-09-17

0006 · BLOCOS

The same pyramid as piece 0005, now with real blocks and no dither: conventional Three.js finishing. Each casing block is a mould that appears, fills and sets in place, in the sequence the film describes — the white ring, the core poured inside it, the corridors left open on the faces for the brigades, the pyramidion and the crews descending to close the corridors until the face is smooth.

piece
0006 · BLOCOS · 2026-09-17 · 14 min · real time
technique
Three.js r160 with MeshStandardMaterial, shadowed directional light and hemisphere; ~74k instanced casing wedges (one per block, face at 51.84°), core as a stack of frusta clipped to the poured height, fill blocks sweeping the working course, instanced moulds ahead of the pour; corridors as gaps in the ring, closed top-down; the calendar in plan.mjs (1,370 working days, 12 shown in full), each worker’s life in crew.mjs (route, a step capped at 55 m per second of screen time, fatigue, hours of the day and days on site; click a figure for its card and for first person) and the routing in nav.mjs (waypoint graph with Dijkstra, the pyramid climbed only by its corridors); polish by a descending clipping plane; the cavity as a parametric bowl with rock and concrete on complementary clipping planes; the GLB interior clipped to the built height (wooden moulds in the cavity, cyan galleries in the cutaway); OrbitControls for a free camera
buffer
screen resolution · 2048² shadows · courses and blocks from courses.mjs, the same source as 0005
time
~14 simulated days of 30 s (20 of sun): the work only advances with people at their posts; the sequence is the Nile drainage (5 s), the natural cavity with moulds and rising concrete (14 s), slab, cords, the first course in detail (22 s: the four corners, thirty blocks one by one with the brigade, then the ring), 209 courses in time-lapse with an automatic cutaway while the galleries rise, pyramidion, corridor closing and polish · HUD year by poured volume
inputs
survey (base, height, seked) · modelled courses [measure] · interior: great_pyramid_aem.glb (CC-BY 4.0) · sequence: Great Pyramid K 2019, labelled · workforce: up to 2,000 figures with IDs (each stands for 4 people [decision]), a role per phase, 15 kg buckets passed hand to hand; block density 2.3 t/m³ [measure]; the near group is swappable for a Mixamo GLB with BLOCOS.setActor(url)
licence
code MIT · piece CC BY-NC 4.0 · AEM model CC-BY 4.0 (aminetti) · Three.js MIT · signed by Nilo River
0005-khufu
2026-09-16

0005 · KHUFU

The Great Pyramid rising course by course, twenty years in sixty seconds, at survey measurements with the interior cut open: the passages, the well, the Grand Gallery, the chambers. The numbers count blocks per course and the height reached. The method is the one proposed by the film Great Pyramid K 2019, and is labelled as such.

piece
0005 · KHUFU · 2026-09-16 · 60 s · real time
technique
Three.js with an in-house material: light picks an index from the table (R2) and the fraction is resolved by Bayer 4×4 in the fragment; cutaway by clipping plane; courses as real geometry (210 frusta); interior from the Great Pyramid AEM model (aminetti, Sketchfab, CC-BY 4.0), inches converted, ~2 m off the survey; human figures as 1.7 m capsules, to be swapped for Mixamo-compatible GLB characters
buffer
480×360 integer-scaled · 16 colours · 3D at 15 fps, HUD at 30
time
60 s per cycle = 20 years · base 230.33 m · height 146.59 m · seked 5½ (51.84°) · 2.3 million blocks, calibrated against 2.58 million m³
inputs
Petrie and Cole survey (base, height, angle) · course heights modelled [measure against Petrie's table] · interior: great_pyramid_aem.glb · thesis and figures from the film Great Pyramid K 2019 (Fehmi Krasniqi), labelled
licence
code MIT · piece CC BY-NC 4.0 · AEM model CC-BY 4.0 (aminetti) · signed by Nilo River
0004-horus-sfx
2026-09-10

0004 · HORUS SFX

The HORUS score, played live. Nine two-operator FM voices — a YM3812, the chip inside the AdLib and the Sound Blaster — synthesized in your browser by the same code that made the film, with a DOS tracker reading the score over the audio clock. Nothing here is a recording.

piece
0004 · HORUS SFX · 2026-09-10 · 50 s · real time
technique
OPL2 synthesis (2-operator FM, 9 voices, fixed vibrato and tremolo LFOs, bus saturation) written as a score in code; echo only on the SFX bus; the DAC choking on impact
buffer
216×384 · 7×10 bitmap font · tracker, meters, 8 kHz oscilloscope and envelope, at 30 fps over the WebAudio clock
time
50.000 s · 132 BPM · 440 steps · synthesized in seconds in a Worker at 49,716 Hz (the chip's clock), resampled to 48 kHz · SB 8-BIT: 8 bits, 22,050 Hz, zero-order hold
inputs
none: score (score.mjs), chip (opl.mjs) and tracker (viz.mjs) are the same files as the HORUS film
licence
code MIT · piece CC BY-NC 4.0 · signed by Nilo River
0003-akhet
Featured · 2026-09-09

0003 · AKHET

Akhet is the season of the flood. The Nile rises fast, floods the banks, falls slowly and leaves the silt. Here the light picks an index, the index picks the glyph and the colour — and the river does the rest.

piece
0003 · AKHET · 2026-09-09 · 231 lines (wc -l)
technique
voxel-space terrain (one column at a time, bottom up), height map from value noise with a fixed seed, output as a character grid
buffer
128×48 cells of 7×12 px · two 8-colour tables (warm land, cool water) · Bayer 4×4 dither per cell
time
terrain at 15 fps, HUD at 30 fps · 48 s year · no Math.random: run it again and it comes out the same
inputs
none beyond the code and the system's monospace font
licence
code MIT · piece CC BY-NC 4.0 · signed by Nilo River
0002-delta
2026-08-18

0002 · DELTA

A falcon flies the Nile from Aswan to the delta in sixty seconds. The geography is real, the enemy is Set in hippopotamus form, and each of the ten strikes comes from the sacred drama of Edfu. All computed: run it again and the same film comes out.

piece
0002 · DELTA · 2026-08-18 · 71 s · film rendered in Node
technique
same rasterizer as HORUS; Nile course and monuments at real coordinates; demo mode with PUSH START; Set as a hippopotamus (animated mesh) and the ten harpoon strikes of Edfu; 10 s DOS/4GW boot
buffer
216×384 scaled ×5 to 1080×1920 · 30 fps output, 3D at 15 fps, HUD at 30 · 16 colours
time
71.0 s (10 s boot + 60 s film) · 1,800 flight frames · SFX: 8-bit PCM at 11 kHz and OPL2, with computed Doppler
inputs
falcon and hippo meshes (.glb) · falcon call samples (8-bit) · score: Supremacy (C64) Title Theme [decision: licence for the site]
licence
code MIT · piece CC BY-NC 4.0 · score and samples: see inputs · signed by Nilo River
0001-horus
2026-08-13

0001 · HORUS

The falcon of Horus crosses from vector to matter: the scan line turns the cyan wireframe into a sand-coloured surface. Fifty seconds computed frame by frame, with a score played by an FM chip that is also code.

piece
0001 · HORUS · 2026-08-13 · 50 s · film rendered in Node
technique
software rasterizer (BRender): z-buffer, two 8-entry shade tables, Bayer 4×4 dither, no WebGL; parametric camera and cuts — the film is a function of the frame number
buffer
1080×1920 from an integer framebuffer · 30 fps output, 3D at 15 fps · 16 colours
time
50.000 s · 1,500 frames · 50 s score synthesized on OPL2 (2-operator FM), written as a score in code
inputs
falcon mesh (.glb, licence declared on the brender record) · 7×10 bitmap font
licence
code MIT · piece CC BY-NC 4.0 · signed by Nilo River