尚未偵測到更新。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.