iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
Beat, metre and form aware real-time music analysis and response
Translation pending
MediaTypeScript · PythonGitHub @lachlansleightOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A realtime, procedural dancing agent: it listens to music it has never heard, maintains a
hierarchical belief about the metre with calibrated precision, and drives a body that moves before
the beat, commits to long moves only when it is sure, and hedges when it is not.
The research roadmap is docs/BLUE_SKY_PLAN.md; per-layer designs are in
docs/plans/. This branch is executing the engineering-only tier, whose build order is
docs/plans/T1_IMPLEMENTATION.md.Read the full README ↗A realtime, procedural dancing agent: it listens to music it has never heard, maintains a hierarchical belief about the metre with calibrated precision, and drives a body that moves before the beat, commits to long moves only when it is sure, and hedges when it is not.
The research roadmap is docs/BLUE_SKY_PLAN.md; per-layer designs are in docs/plans/. This branch is executing the engineering-only tier, whose build order is docs/plans/T1_IMPLEMENTATION.md.
packages/core/ @dancer/core: pure TypeScript, no DOM, runs in Node and the browser
src/time sample clocks and frame-rate constants
src/rng seeded RNG; nothing in the system calls Math.random
src/types the contracts every layer speaks
src/sim Score -> ground truth, activations and audio (the test oracle)
src/metrics every metric in the gate, as pure functions over traces
src/replay recorder, replayer, canonical hashing
src/ears DSP features and the BEAST adapter
src/pulse templates, bar-pointer filter, PIPPET phase filter
src/form bars, phrases, sections, drop forecasting, repeat memory
src/feel energy, syncopation, groove, urge to move
src/choreo motif library and planner
src/body phase-time motion, retiming, layered limbs
bench/ the frozen gate: cases, thresholds.json, NOTES.md
apps/web/ Vite + React + three.js live app
research/ optional Python: oracles, ONNX provenance
stimuli/ generated test audio (not committed)
npm run monitor # the live pulse monitor at http://localhost:5173
npm run gate # typecheck + tests + bench. Run before every commit.
npm test # unit tests only
npm run bench # the gate cases and their thresholds
npm run stimuli # render the stimulus set to stimuli/*.wav
npm run fixtures # cache real-ONNX activations for the S12 stimuli
npm run replay -- recording.json
npm run monitor opens a page that runs Ears and Pulse on live audio - microphone, tab audio, or a
file - and schedules a click on the predicted beat, ahead of real time. If the belief is right
the click fuses with the music; if it is wrong you know instantly, which no number on a panel tells
you as quickly.
Three synthetic tracks with exact ground truth are built in. Start with those: you know what the answer is, so you can tell a problem with the system from a problem with the track.
What to look for:
coasting and the click should keep goingpackages/core/bench/thresholds.json. Nothing here may
lower one, widen a tolerance or skip a case. If a threshold looks wrong, the argument goes in
packages/core/bench/NOTES.md and the case stays red until a human changes it.