尚未检测到更新。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.