尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证generative art app
翻译准备中
正在加载完整 README。
查看完整 README ↗A generative, iterative and interactive screen-saver artwork, made as a website. By your touch, it changes.
I combine analogue feeling and digital technologies in the creation of my work. I created composite collages that reflect on relationships between the eternity and its image. There are no eternity.
The artwork fills the browser window. It is designed for a desktop or laptop browser:
It also works on phones and tablets: drag a finger to paint, and each finger paints its own band.
It is a static site with no server and no tracking, and the code and styles together are under 10 KB gzipped.
The sound is generated live with the Web Audio API (no audio files) and follows what is on screen:
| In the picture | In the sound |
|---|---|
| Height of the brush | Pitch, in A minor pentatonic: low at the bottom, high at the top |
| Blue (horizontal position): warm left, pale right | Tone: dark and soft for warm colours, bright and airy for pastels |
| New paint landing on black | The drone swells and painted circles ring out as bells |
| Painting over paint that is already saturated | It settles to a quiet hum with the odd bell |
| Each bell's circle: position, red, green | Stereo position; pale circles ring chord tones, warm ones others |
| How full the picture is | How big the room sounds (reverb) |
| Dissolve: blur and black squares | Muffled, smeared, slightly detuned sound, with crackle |
| Every finger | Its own drone |
Every value is in src/sound/mapping.ts. The engine is src/sound/engine.ts.
You need Node.js 22.12 or newer.
npm install
npm run dev # http://localhost:5173
npm test # unit tests
npm run typecheck
npm run build # production build in dist/
npm run preview # serve the build
npm run check # all of the above, as CI runs it
vercel.json, so keep the defaults (build npm run build, output dist). No environment variables are needed.To deploy from the command line instead, run npx vercel (preview) or npx vercel --prod (production).
Link previews (for example in messages and social posts) use the production domain automatically. To use a different domain for them, set SITE_URL (for example https://noeternity.art) in the Vercel project settings.
vercel.json also sets long-term caching for the hashed build files and a strict Content Security Policy. If you later add a third-party script, font or analytics, add its domain to that policy.
Every tunable value is in src/sketch/config.ts: circle size and spacing, opacity, colour ranges, screen-saver speed and the dissolve effect. Each value is annotated with the line of the original sketch it comes from.
Original (archive/noEternity/*.pde) | Web (src/) |
|---|---|
one(): a row of circles at mouseY | paintRow() in sketch/paint.ts |
fill(random(10,555), random(10,555), mouseX, 40) | warmChannel() and blueAt() |
CLASS.display(): filter(BLUR) + rotating black squares | blurInPlace() + scatter() |
text("no Eternity", displayWidth/7, displayHeight/3) | left out: no text over the picture |
draw() at 60 fps, never clearing the background | the fixed 60 Hz loop in stage.ts |
Arduino sensors 3 and 4 trigger CLASS.display() | the ◐ button and the space bar |
| (no sound) | sound/engine.ts, following sketch/ink.ts |
no Eternity began in 2015 as a Processing sketch: a version driven by Arduino sensors, and an Android app. This website replaces the app. The original sketch is kept in archive/ for reference; the Android project files were removed.
See docs/REVIEW.md for a review of the original project and what changed in the website.