尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
vii.fm — a cinema for your ears
An audio-visual installation space. Right now: one room — a cube you stand
at the edge of, looking inward. The five walls you can see act as soft
light panels that breathe gently in time with the music, each with its own
color and its own relationship to the sound, but pulsing on one shared
rhythm so the room reads as one calm, trance-like space rather than five
separate things doing their own thing. Built with Next.js, react-three-fiber
(Three.js/WebGL), the Web Audio API, and Framer Motion.檢視完整 README ↗An audio-visual installation space. Right now: one room — a cube you stand at the edge of, looking inward. The five walls you can see act as soft light panels that breathe gently in time with the music, each with its own color and its own relationship to the sound, but pulsing on one shared rhythm so the room reads as one calm, trance-like space rather than five separate things doing their own thing. Built with Next.js, react-three-fiber (Three.js/WebGL), the Web Audio API, and Framer Motion.
npm install
npm run dev
Open http://localhost:3000. Click Enter — browsers require a user gesture before audio can play, so the landing screen is what unlocks sound.
src/components/scenes/CubeRoom.tsx — the room itself. Five walls (the
wall behind the visitor is left unrendered — that's where you're
standing); each is a dark frame with a glowing inset panel. Every frame:
WALL configs
at the top of the file — back wall tracks the mids, side walls track
treble with opposite phase for a little shimmer, the floor tracks bass,
the ceiling drifts on overall loudness) blended in at its own
variance, so the room feels individually alive on top of the shared
pulse rather than uniform.saturation/lightness math in the file) so intensity reads as
"brighter, still soft" rather than ever going neon or strobing — turn
those ranges up if you want more punch.src/lib/audio-engine.ts — the audio graph. If the room has an
audioSrc, that file plays; if not, a generative ambient pad (detuned
oscillators through a slow filter sweep) fills in, so the room is
audio-reactive even before you have a final track.src/lib/rooms.ts — the room's config: title, base wall colors
(palette.primary = back wall, secondary = side walls, accent =
ceiling/floor), and which audio file to use.src/lib/store.ts — global state (play/pause, volume, pointer position)
via zustand.Drop an audio file in public/audio/ and point audioSrc at it in the
single room entry in src/lib/rooms.ts:
{
id: "the-room",
title: "THE ROOM",
audioSrc: "/audio/your-track.mp3", // omit to keep the synth pad
scene: "cube-room",
palette: { bg: "#050507", primary: "#7fb8c9", secondary: "#c9a8d6", accent: "#f2e9dc" },
}
Everything about how "trance-like" this feels lives in
src/components/scenes/CubeRoom.tsx:
Math.min(1, delta * 1.2) (shared
envelope) and Math.min(1, delta * 1.6) (per-wall) control how quickly
each wall's glow catches up to the music. Lower = slower, more languid;
higher = snappier, closer to the actual beat.Math.sin(t * 0.35) is the room's own idle tempo
when the audio is quiet. Change 0.35 to speed up or slow down the
ambient "breathing."saturation/lightness formulas near the bottom of
the useFrame loop cap how far a wall can brighten/saturate. Nudge the
base numbers or multipliers to make the room punchier or even calmer.walls array in the component
(band: "bass" | "mid" | "treble" | "overall" and variance) is the
"individually controlled" part — reassign bands or change variance to
rebalance which wall reacts to what, and by how much.The room-program structure (src/lib/rooms.ts + SCENES in the same
file) still supports more than one room/scene — an older exploratory scene
(VoidClub, a particle-field club space) is still in the codebase as a
reference if you want to compare visual languages, but isn't wired into the
program right now. To add a second room later: add an entry to the ROOMS
array and, if it should look different from the cube, a new scene component
registered in SCENES — the multi-room navigation UI (dots, prev/next) in
RoomHUD.tsx automatically reappears once ROOMS.length > 1.
This is a stock Next.js (App Router) project — no special config needed.
git add -A
git commit -m "Initial vii.fm build"
git remote add origin <your-github-repo-url> # if not already set
git push -u origin main
Then in Vercel: New Project → Import your GitHub repo, framework preset auto-detects as Next.js, and deploy.
public/audio/.audioSrc at a full
URL instead of a local path.CubeRoom.tsx's useFrame
if you want visitors to be able to look further left/right/up/down.