iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
Plain text → Rich music
Translation pending
MediaTypeScript · JavaScriptGitHub @yiichuanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
AI-powered live music creation in the browser — describe your music in natural language, get Strudel live coding generated and played instantly.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
oddeNova 是一个【即兴音乐制作的 Agent】。通过与它的对话,一步一步制作出想要的音乐。 无论是暂时缺乏编曲知识,不会使用音乐制作软件,还是对这一切早已熟稔于心 你不满足于流行到腻味的模版“神曲”,不满足于抽卡式的 AI音乐 与 oddeNova 对话来生成和调整音乐,或是直接修改控制音乐播放的 Strudel 代码 • 自然语言编曲 — 描述你的想法与意见,不断迭代创作结果 • 分层音轨管理 — 鼓组、弦乐、合成器等等,各自作为独立 layer,实现精细地管理 • 精准迭代编辑 — 修改空间从整首曲子,到单个音符,通过对话就能完成 • 即时播放 — 代码生成后立即在浏览器中执行播放,更新代码也能无缝衔接 • WAV 导出 — 有了满意的demo,导出 wav 文件 • 分布式的创作 — Agent 不会一次生成完整的曲子,而是像自然创作一样,根据想法从简单到复杂地组织音轨 • 思考过程可见 — 推理过程可见,一眼看明白 Agent 是如何用代码结构出乐段的 • 编曲辅助建议 — 根据当前上下文自动给出下一步的操作建议 • 多 LLM 服务商 — 支持 DeepSeek、OpenAI、Claude、GLM(智谱),可在设置中切换Read the full README ↗
中文 | English
oddeNova 是一个【即兴音乐制作的 Agent】。通过与它的对话,一步一步制作出想要的音乐。
像 vibe coding 一样,vibe 音乐
为那些在乎音乐的创作者们
无论是为自己的作品制作配乐,还是音乐即是自己的作品本身
无论是暂时缺乏编曲知识,不会使用音乐制作软件,还是对这一切早已熟稔于心
你不满足于流行到腻味的模版“神曲”,不满足于抽卡式的 AI音乐
你想要让节奏,音符,和弦都完完全全成为表达的一部分
与 oddeNova 对话来生成和调整音乐,或是直接修改控制音乐播放的 Strudel 代码
你的想法和选择才是创作的主体
核心创作体验
AI 与交互
会话与历史
界面与其他
git clone https://github.com/yiichuan/oddeNova.git
cd oddeNova
npm install
npm run dev
打开浏览器访问 http://localhost:5173,首次使用时在弹窗中选择服务商并填写对应的 API Key 即可开始创作。
| 命令 | 说明 |
|---|---|
npm run dev | 启动 Vite 开发服务器 |
npm run build | 类型检查 + 生产环境构建 |
npm run preview | 预览生产构建产物 |
npm run lint | ESLint 代码检查 |
npm test | 运行单元测试(Vitest) |
你输入的每一条文字都会触发一个 AI Agent 推理循环:
用户文字输入
↓
AI Agent(多轮工具调用循环,最多 30 轮)
├── setCode(code) 编写或修改完整 Strudel 代码
├── validate(code) 验证代码语法与运行时
└── commit(explanation) 提交最终代码并播放
↓
Strudel 引擎执行 → 浏览器 WebAudio 播放
Agent 通过 setCode 直接管理完整的 Strudel 代码。每次对话写入新版本后经 validate 校验,最终 commit 触发热重载播放。代码内以 /* @layer NAME */ 注释标记各音轨层,实现结构化的增量编辑。
简单上手——你可以不明白编曲,也可以看不懂代码:
新手友好 · 用你最自然的语言描述
"我想要一首让人放松的背景音乐"
"加点活泼的感觉,像下午喝咖啡的氛围"
"一段简单的鼓"
"让节奏快一些,声音亮一些"
进阶用户 · 精准控制每一个细节
"来一段 lo-fi 鼓点加贝斯,BPM 90,加点 vinyl 噪声"
"加个合成器旋律,偏 ambient 风格,用 Fender Rhodes 音色"
"把军鼓换成更 trap 的感觉,加 808 低音"
"把整体调到 A 小调,tempo 升到 140"
| 层级 | 技术选型 |
|---|---|
| 前端框架 | React 19 + TypeScript |
| 构建工具 | Vite |
| 样式 | Tailwind CSS v4 |
| 代码编辑器 | CodeMirror 6 |
| 音频引擎 | Strudel + superdough(WebAudio API) |
| AI 模型 | DeepSeek / Kimi / OpenAI / Claude / GLM,可在界面中自由切换 |
| 数据持久化 | IndexedDB(会话存储) |
| 测试 | Vitest |
| 部署 | Vercel(含 Serverless Functions) |
┌─────────────────────────────────────────────────────┐
│ Browser │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ History │ │ Chat / UI │ │ Code Panel │ │
│ │ Panel │ │ (React 19) │ │ (CodeMirror) │ │
│ └──────────┘ └──────┬───────┘ └──────────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ Agent Loop │ │
│ │ loop.ts │ │
│ │ executor.ts │ │
│ │ tools.ts │ │
│ └────────┬────────┘ │
│ │ tool calls │
│ ┌───────────────────┼───────────────────┐ │
│ ▼ ▼ ▼ │
│ setCode() validate() commit() │
│ └───────────────────┬───────────────────┘ │
│ │ final code │
│ ┌────────▼────────┐ │
│ │ Strudel Engine │ │
│ │ (WebAudio API) │ │
│ └─────────────────┘ │
│ │
│ ── LLM API (DeepSeek / Kimi / OpenAI / Claude) ── │
│ ── IndexedDB (session + undo history) ─────────── │
└─────────────────────────────────────────────────────┘
详见 docs/frontend-architecture.md。
src/
├── App.tsx # 应用主组件
├── agent/
│ ├── tools.ts # Agent 工具定义(3 个工具)
│ ├── executor.ts # 工具执行器
│ ├── loop.ts # Agent 推理循环(最多 30 轮)
│ └── parser.ts # Strudel 代码解析(layer 提取)
├── components/ # UI 组件
│ ├── ChatInput.tsx # 文字输入
│ ├── CodePanel.tsx # 代码编辑器 + WAV 导出
│ ├── ConversationView.tsx # 对话历史 + Agent 推理展示
│ ├── HistoryPanel.tsx # Session 浏览器 + 回放控制
│ └── ...
├── hooks/
│ ├── useSessions.ts # Session 状态管理(IndexedDB)
│ ├── useReplay.ts # Session 回放
│ ├── useSuggestions.ts # AI 建议生成
│ └── useStrudel.ts # Strudel 音频引擎管理
├── services/
│ ├── llm.ts # LLM API 调用(双协议:Anthropic + OpenAI)
│ ├── llm-config.ts # 多服务商配置与路由
│ ├── share.ts # 分享链接生成
│ └── strudel.ts # Strudel 引擎封装与验证
├── demo/ # Demo 模式配置与 LLM 模拟
└── prompts/
├── active.ts # 当前激活的提示词版本指针
└── versions/ # 版本化提示词(一个需求一个工作版本,完成后冻结)
AGPL-3.0(基于 Strudel 依赖的许可证要求)