🎵 CodeSonify——听你的代码
    
每一行代码都有旋律。 CodeSonify将源代码转化为真正的音乐。函数变成旋律,循环变成节奏,条件句变成和弦变化,虫子听起来不和谐。导出到MIDI,sonify git diffs,并听取代码库的演变——所有这些都通过MCP集成到GitHub Copilot中。
______________________________________________________________________
🎬 演示
📹 *观看演示视频→*
自己试试: 克隆仓库,运行 npm start,并打开http://localhost:3000
______________________________________________________________________
🌟 特性
🎵 Code → 音乐引擎
粘贴任何代码——JavaScript、TypeScript、Python、Java、C#、Go、Rust——然后把它当作音乐来听。每个编程结构都映射到一个不同的音乐元素:
| 代码结构 | 音乐元素 | 为什么 |
|---|---|---|
| 函数 | 上升旋律短语 | 功能是构建块——它们创造了旋律 |
| 循环 | 重复节奏模式 | 循环重复——就像节奏一样 |
| 条件 | 和声和弦变化 | if/else 创建分支路径,如谐波张力和分辨率 |
| 变量 | 深沉的低音音符 | 变量是基础——就像音乐中的低音一样 |
| 类 | 力量和弦 | 类是结构——丰富、分层的和弦 |
| 评论 | 环境垫 | 注释是代码之间的安静空间 |
| 错误 | 不协调的集群 | Bug听起来应该很糟糕——因为它们是 |
| 嵌套深度 | 八度(音高) | 嵌套越深=音高越高=张力越大 |
| 复杂性 | 节奏(BPM) | 复杂代码播放得更快、更强烈 |
| 语言 | 音乐键 | 每种语言都有自己的键签名 |
🎹 MIDI导出
将任何声音导出为 real.mid文件 在GarageBand、FL Studio、Ableton、Logic Pro或任何DAW中打开。你的代码变成了真实的、可编辑的、可共享的音乐。
🔄 Diff声波处理
Sonify git差异和代码更改:
- 添加线条 → 大调明亮、上升的旋律
- 删除线条 → 小调低音低沉
- 上下文 → 柔和的环境背景
- 将重构视为从紧张到解决的音乐之旅
🎨 5音乐风格
| 风格 | 关键 | 角色 |
|---|---|---|
| 🎻 古典 | C大调 | 优雅的正弦波/三角波 |
| 🎹 电子 | A小调 | 驱动,方波/锯齿波 |
| 🌊 环境 | D五声音阶 | 梦幻般的重混响 |
| 🎷 爵士乐 | 道林风格 | 温暖、摇摆的感觉 |
| 🎸 摇滚乐 | E蓝调 | 咄咄逼人,扭曲 |
🔧 MCP服务器——GitHub Copilot的5个工具
CodeSonify直接集成到 通过MCP进行VS编码,为GitHub Copilot提供了5个强大的工具:
| # | 工具 | 它的作用 |
|---|---|---|
| 1 | sonify_code | 将任何代码转换为完整的音乐作品 |
| 2 | analyze_code_structure | 获取代码度量:复杂性、函数、嵌套、循环 |
| 3 | compare_code_musically | 根据音乐输出比较两个代码片段 |
| 4 | sonify_git_diff | 把git diffs变成音乐——听听你的代码评论 |
| 5 | export_midi | 将代码导出为用于音乐制作的真实MIDI文件 |
🌐 网络应用程序
一个精致的实时网络界面,具有以下特点:
- 代码编辑器 带有语法高亮显示
- 实时画布可视化 带有动画音符粒子
- 实时音频播放 使用Tone.js Web音频合成
- 统计仪表板 显示节奏、关键、复杂性、音符、持续时间、曲目
- 轨道故障 每个仪器的音量条
- 音乐演绎 --对音乐所代表内容的人类可读描述
- Diff模式 --在视觉和音乐上比较新旧代码版本
- MIDI下载 --一键导出到.mid文件
______________________________________________________________________
🚀 快速开始
先决条件
- v18或更高版本
- VS代码 随着 (用于MCP集成)
安装
# Clone the repository
git clone https://github.com/YOUR_USERNAME/codesonify.git
cd codesonify
# Install dependencies
npm install
# Start the web application
npm start打开 http://localhost:3000 在您的浏览器中。粘贴代码,选择样式,然后单击 Sonify代码. 🎵
使用GitHub Copilot的MCP服务器
- 在VS Code中打开项目文件夹
- 打开
.vscode/mcp.json--单击 “开始” 出现的按钮 - 打开Copilot聊天(
Ctrl+Shift+I) → 切换到 代理模式 - 尝试以下提示:
Sonify this code: function fibonacci(n) { if (n console.log(`Hello ${name}`)Sonify the diff between these:
Old: "function add(a,b) { return a+b; }"
New: "const add = (a: number, b: number): number => a + b;"______________________________________________________________________
📁 项目结构
codesonify/
├── src/
│ ├── core/ # Core analysis and music engine
│ │ ├── types.ts # TypeScript type definitions (40+ types)
│ │ ├── parser.ts # Code structure analyzer & tokenizer
│ │ ├── mapper.ts # Code-to-music mapping engine (8 scales, 5 styles)
│ │ ├── composer.ts # Composition orchestrator
│ │ ├── midi.ts # Pure TypeScript MIDI file generator (zero dependencies)
│ │ ├── diff.ts # Git diff parser & sonification engine
│ │ └── index.ts # Module exports
│ ├── mcp/ # MCP Server for VS Code / GitHub Copilot
│ │ └── index.ts # MCP server with 5 tools
│ └── web/ # Web application
│ ├── server.ts # Express API server (5 endpoints)
│ └── public/
│ └── index.html # Frontend (Tone.js + Canvas visualization)
├── docs/
│ └── copilot-usage/ # Screenshots of GitHub Copilot usage
├── .vscode/
│ └── mcp.json # MCP server configuration for VS Code
├── .gitignore
├── package.json
├── tsconfig.json
├── LICENSE
└── README.md______________________________________________________________________
🤖 GitHub副本使用情况
GitHub Copilot在CodeSonify的整个开发过程中发挥了重要作用。以下是人工智能辅助开发如何塑造这个项目:
🧠 建筑与设计(Copilot聊天)
- 思考编程结构和音乐元素之间的映射
- 设计了一个包含40多种类型的TypeScript类型系统,用于代码分析和音乐创作
- 探索哪种音阶最能代表每种编程语言
- Tone.js Web audio API首次出现音频计时问题
⚡ 代码加速(副驾驶建议)
- 自动完成的音阶定义(大调、小调、五声音阶、蓝调、多里安音阶、混合音阶、吕底亚音阶、彩色音阶)
- 生成带有输入验证的Express路线处理程序
- 提出了用于动画音符粒子的画布可视化算法
- 完成了MIDI二进制格式的实现(可变长度量、轨道块)
🎨 创造性探索
- 使用Copilot探索代码复杂性评分的不同方法
- 生成展示不同音乐输出的示例代码片段
- 帮助设计音乐差异映射逻辑(升序=添加,降序=删除)
🔧 MCP服务器开发
- Copilot Chat帮助用适当的Zod模式构建MCP工具定义
- 为每个工具响应生成格式化的markdown输出
- 协助比较表格式化
compare_code_musically
📸 这些交互的屏幕截图位于 docs/copilot-usage/______________________________________________________________________
🔌 API 参考
POST /api/sonify
将代码转换为音乐。
请求:
{
"code": "function hello() { console.log('world'); }",
"language": "javascript",
"style": "classical"
}答复: 包含轨迹、笔记、分析和可视化数据的完整组合。
POST /api/export-midi
将代码导出为可下载的MIDI文件。
请求: 同 /api/sonify
答复: 二进制 .mid 文件下载。
POST /api/sonify-diff
Sonify代码更改。
请求:
{
"old_code": "function add(a,b) { return a+b; }",
"new_code": "const add = (a: number, b: number): number => a + b;",
"style": "electronic"
}GET /api/examples
获取示例代码片段以进行演示。
GET /api/health
健康检查。
______________________________________________________________________
🏆 评估标准一致性
| 标准 | 重量 | CodeSonify如何交付 |
|---|---|---|
| 准确性和相关性 | 20% | 完全符合创意应用程序跟踪要求。记录了GitHub Copilot的广泛使用情况。MCP服务器集成了5个工具到VS Code中。 |
| 推理与多步思维 | 20% | 7级管道:代码→ 标记化→ 分析→ Map → 编排→ 可视化→ Play.差异分析增加了比较推理。MIDI导出添加了格式转换。 |
| 创造力和原创性 | 15% | 首创的代码声学工具。独特的概念将节目和音乐联系起来。从未进行过声波鉴别。MIDI导出使其变得有形。 |
| 用户体验和演示 | 15% | 经过抛光的web UI,具有实时可视化、5种音乐风格、Diff模式、MIDI下载、示例代码、动画粒子、播放控件。 |
| 可靠性和安全性 | 20% | TypeScript严格模式贯穿始终,在所有端点上进行输入验证,使用用户友好的消息进行错误处理,没有秘密/PII,公共仓库,MIT许可证。 |
| 社区投票 | 10% | 病毒式概念——“听到你的代码”可以立即共享。演示很有趣。每个人都可以尝试。MIDI导出使其有形且社交化。 |
______________________________________________________________________
🛠️ 技术
| 技术 | 目的 |
|---|---|
| TypeScript | 贯穿始终的类型安全代码(严格模式) |
| MCP SDK | 用于VS代码/副本集成的模型上下文协议 |
| Express 5 | Web服务器和REST API |
| Tone.js | 网络音频合成和实时播放 |
| 画布API | 动画注释粒子可视化 |
| Zod | MCP工具的运行时输入验证 |
| GitHub Copilot | 全程人工智能辅助开发 |
______________________________________________________________________
🎯 用例
- 代码审查 --Sonify拉取请求差异和 *听* 如果变化感觉和谐或混乱
- 教育 --通过音乐隐喻帮助学生理解代码结构
- 无障碍 --为视障开发人员提供听觉反馈
- 团队建设 --将团队代码转化为协作配乐
- 艺术 --从开源项目生成音乐并创建“代码相册”
- 质量监控 --复杂度得分作为节奏:如果你的代码听起来像速度金属,也许可以重构
______________________________________________________________________
📝 许可证
MIT许可证 --免费使用、修改和分发。
______________________________________________________________________
🙏 致谢
- 专为 2026年特工联赛 微软
- 由...驱动
- 音频合成 Tone.js
- MCP集成通过 @模型上下文协议/sdk
______________________________________________________________________
🎵 Where every line of code has a melody 🎵
