尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Interactive Chladni pattern lab with modal tuning, live particles, optional audio and high-resolution PNG export.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Sand on a singing plate, full screen. Sound gathers the sand into a Chladni figure, and you get to break it: swipe to scatter the lines, hold to drag a piece like rubber, flick to throw it. It bounces off the edges and finds its way home. Turn the frequency with the wheel, play figures on the keyboard like a piano, or sing a note into the microphone and the field follows. Save a frame as PNG or record a short video.
Open Resona · Download the source
| Gesture | Mouse | Touch |
|---|---|---|
| Break the lines | swipe quickly over the field | a quick stroke right after touching |
| Drag a piece | hold and move | touch, wait a moment, then move |
| Throw | hold and let go mid-motion | the same with a finger |
| Shock wave | double click | double tap |
| Turn the frequency | wheel, trackpad, or the slider under the frequency | two fingers up and down, or the slider |
Keys: A S D F G H J K L play nine figures with their notes, Space pauses (the frame freezes and can be saved), R scatters the sand, Esc closes the panel. Up to eight pieces can fly at once; a ninth lets go of the oldest.
The ribbon at the bottom holds all 48 figures plus Random. When the frequency slider comes to rest, it glides to the nearest resonance so the sand forms clean lines. Settings, behind the button in the top right, open a glass panel:
Sound stays off until you press Sound, and the choice is remembered. Sing a note asks for the microphone only when pressed. Settings live in this browser; there are no accounts, keys or external services.
The number of grains matches the device (200,000 on a computer, 80,000 on a phone). If the field drops below 40 frames per second for three seconds, it uses less sand and says so in the corner.
Node.js 20 or newer; nothing to install.
npm start
Open http://127.0.0.1:4178 in a browser with WebGL2 (a recent Chrome, Safari or Firefox). The server listens on this computer only. On macOS, double-click start.command to start the server and open the page.
Static ES modules, no bundler, no dependencies:
physics.js: Kirchhoff–Love plate, 48 presets, and modeSet, the modal coefficients sent to the GPU.sand.js: the law that moves the sand, one source for both JavaScript and GLSL. engine.js: WebGL2, grains in float textures, background glow, PNG snapshots.pieces.js: flight, bounce and return of thrown pieces. gestures.js: pointer input turned into intents (break, grab, throw, shock, tune).audio.js: all sound in Web Audio, no files. pitch.js and voice.js: the note from the microphone. recorder.js: video. thumbs.js: ribbon thumbnails.palettes.js and settings.js: palettes and saved settings. app.js: the shell that ties it together.The plate fills the screen. Its physics is that of a square plate stretched over the window, which keeps all 48 figures recognisable on any screen shape: on a rectangular plate the two modes of each figure would split apart in frequency.
A rectangular isotropic Kirchhoff–Love plate, simply supported on all four edges. Shape of a single mode:
phi_mn(x,y) = sin(m*pi*x/a) * sin(n*pi*y/b)
D = E*h^3 / (12*(1-nu^2))
f_mn = pi/2 * sqrt(D/(rho*h)) * ((m/a)^2 + (n/b)^2)
Each figure mixes the mode pair (m,n) and (n,m). Manual mode computes the response of 81 modes to a point force at (0.37a, 0.43b), keeps the 16 strongest, and projects them onto the phase of the dominant mode, so the sand settles on nodal lines rather than points. Modal response: F_mn / (omega_mn^2 - omega^2 + i*2*zeta*omega_mn*omega).
Grains move toward the minima of the vibration amplitude. Their transport, collisions, size, scatter and light are an artistic approximation. Free edges and arbitrary plate shapes are not modelled. This is not an engineering calculation; frequencies come from the model and have not been measured on a real plate.
Materials use typical reference values, not the datasheet of a specific alloy. PNG saves what is on screen: 1× and 2× at the window size, 4K with a 3840 px long side.
npm test
node scripts/build.mjs copies every module into public/ for Vercel.
MIT, see LICENSE.