代码音乐化工具

CodeSonify 是一个将源代码转换为音乐的创新工具,通过旋律、节奏和和弦变化反映代码结构,支持MIDI导出和Git差异音乐化,适用于代码审查、教育和艺术创作。

  • by jpablortiz96
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 jpablortiz96/codesonify

使用说明

🎵 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文件

🚀 快速开始

先决条件

安装

# 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服务器

  1. 在VS Code中打开项目文件夹
  2. 打开 .vscode/mcp.json --单击 “开始” 出现的按钮
  3. 打开Copilot聊天(Ctrl+Shift+I) → 切换到 代理模式
  4. 尝试以下提示:
Sonify this code: function fibonacci(n) { if (n <= 1) return n; return fibonacci(n-1) + fibonacci(n-2); }
Analyze the code structure of my current file
Export this as MIDI: const greet = (name) => 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 全程人工智能辅助开发

🎯 用例

  1. 代码审查 --Sonify拉取请求差异和 听 如果变化感觉和谐或混乱
  2. 教育 --通过音乐隐喻帮助学生理解代码结构
  3. 无障碍 --为视障开发人员提供听觉反馈
  4. 团队建设 --将团队代码转化为协作配乐
  5. 艺术 --从开源项目生成音乐并创建“代码相册”
  6. 质量监控 --复杂度得分作为节奏:如果你的代码听起来像速度金属,也许可以重构

📝 许可证

MIT许可证 --免费使用、修改和分发。


🙏 致谢


🎵 Where every line of code has a melody 🎵