最新案例动态,请查阅华为云码道×仓颉实战:零基础开发你的专属音乐编辑器小伙伴们快来进行实操吧!

案例简介:本案例基于华为云码道(CodeArts)代码智能体与开源仓颉 Skills,设计实现一个有趣且实用的乐谱“编程”语言,在码道上用 AI + Cangjie 开发这个乐谱语言的编译器,它可以将相关乐谱编译为可播放的 MIDI 文件。

一、概述

1.1 案例介绍

本案例基于华为云码道(CodeArts)代码智能体与开源仓颉 Skills,设计实现一个有趣且实用的乐谱“编程”语言,在码道上用 AI + Cangjie 开发这个乐谱语言的编译器,它可以将相关乐谱编译为可播放的 MIDI 文件。

华为云码道(CodeArts)代码智能体:一个理解项目需求,懂得编码之道,善用百器的实干派AI研发专家,开启你的编码自动驾驶模式。本案例中作为交互工具,配置技能并调用技能。

技能(Skill)是一种能力封装机制,用于将专业知识组织为可复用的模块。技能本质上是由指令、脚本和资源构成的集合,智能体可按需动态加载这些专业化的“技能包”,从而提升特定任务的执行能力与执行效率。本案例中使用仓颉语言官方推出的一套Skill,可支撑 AI 开发工具从零创建开发仓颉项目,包括项目配置、开发、构建、运行、单元测试等,包括 stdx、macro、CFFI 等场景的自动处理。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计60分钟。

1.4 案例流程

flow.PNG

说明:

  1. 开发者下载安装AI IDE,完成华为云码道(CodeArts)代码智能体安装部署;
  2. 下载并安装仓颉SDK、仓颉插件;
  3. 下载仓颉项目,使用AI IDE加载仓颉项目。
  4. 登录GitCode官网,搜索并下载开源仓颉的Skill(CangjieSkills),并在AI IDE华为云码道的项目级下完成配置;
  5. 执行任务书,完成多轨道、和弦、变量定义等特性,并执行预置的测试用例,测试用例中预置了部分乐谱,开发者可试听预置乐谱生成的MIDI文件;
  6. 开发者可与华为云码道进行对话,使用AI创作乐谱,并反复与AI对话进行乐谱优化,创作自己的音乐,成为“作曲家”。

1.5 资源总览

本案例预计花费0元。

资源名称 规格 单价(元)
华为云码道(CodeArts)代码智能体 通用体验版 免费

二、基础环境与资源准备

2.1 AI IDE华为云码道安装部署

参考案例《AI IDE华为云码道(CodeArts)代码智能体安装部署》完成华为云码道(CodeArts)代码智能体Windows版AI IDE安装部署。

1.PNG

2.2 下载并安装仓颉插件和仓颉SDK

下载安装仓颉插件:

点击扩展图标,在搜索框中输入Cangjie,安装Cangjie插件。

2.PNG

下载安装仓颉SDK:

下载软件包:cangjie-sdk-windows-x64-1.1.0.exe

4.PNG

备注:本案例以Windows为例。

下载完成后,双击.exe安装包,安装流程自动配置环境变量。

5.PNG

配置SDK路径:

点击扩展图标,点击Cangjie插件的管理图标,点击设置按钮。

6.PNG

配置SDK路径。

7.PNG

2.3 导入Cangjie-MIDI项目

点击左上角图标 > Git > 克隆项目。

21.PNG

输入仓库URL:https://gitcode.com/u014005316/CangjieMIDI.git
项目名称:CangjieMIDI-main
项目本地存放路径默认即可。

22.PNG

点击克隆,在当前窗口打开项目。

23.PNG

项目目录结构如下:

复制代码

CangjieMIDI-main/
├── cjpm.toml                          # cjpm 项目配置文件
├── cjpm.lock                          # cjpm 锁定文件(无外部依赖)
├── README.md                          # 项目说明文档(案例介绍)
├── MIDI.md                            # MIDI 文件格式详解文档
├── Music.md                           # 中国风曲谱生成需求文档
├── Task.md                            # 乐谱语言语法规范与任务说明
├── .gitignore                         # Git 忽略规则
│
├── src/                               # 源代码目录
│   ├── main.cj                        # 程序入口,命令行参数解析与文件处理
│   │
│   ├── core/                          # 核心模块(乐谱解析)
│   │   ├── types.cj                   # 数据模型定义
│   │   ├── parser.cj                  # 统一语言解析器(主入口)
│   │   ├── parser_note.cj             # 音符/和弦解析
│   │   ├── parser_utils.cj            # 解析辅助工具(字符判断、时值转换)
│   │   └── instrument.cj              # GM 标准 128 音色映射表
│   │
│   ├── encoder/                       # 编码器模块(文本 → MIDI 二进制)
│   │   ├── encoder.cj                 # 统一编码入口(乐谱模式 + 事件模式)
│   │   ├── event.cj                   # MIDI 事件类型定义与底层字节编码
│   │   └── utils.cj                   # 格式检测、十六进制解析、文件组装
│   │
│   ├── decoder/                       # 解码器模块(MIDI 二进制 → 文本)
│   │   ├── decoder.cj                 # 无损反编译器
│   │   ├── binary.cj                  # 大端读取、VLQ 解码
│   │   └── note.cj                    # 音高 → 音名转换
│   │
│   ├── verifier.cj                    # MIDI 验证工具(公共接口)
│   ├── verifier_utils.cj              # MIDI 验证工具(内部辅助函数)
│   │
│   ├── midi_test.cj                   # (旧测试文件,兼容保留)
│   ├── decode_test.cj                 # 反编译与无损回环测试
│   ├── encode_test.cj                 # 统一语言编码测试
│   ├── event_extra_test.cj            # 事件模式扩展测试
│   └── score_extra_test.cj            # 乐谱模式扩展测试
│
├── testcase/                          # 测试用例目录
│   ├── birthday.txt                   # 生日快乐乐谱(双轨:旋律+贝斯)
│   ├── birthday.mid                   # 编译后的 MIDI 文件
│   ├── chou.txt                       # 愁乐谱
│   ├── chou.mid
│   ├── happy.txt                      # 欢乐乐谱
│   ├── happy.mid
│   ├── indiana.txt                    # 印第安纳乐谱
│   ├── indiana.mid
│   ├── stars.txt                      # 小星星乐谱
│   ├── stars.mid
│   ├── starspro.txt                   # 小星星进阶版(三轨+和弦变量)
│   ├── starspro.mid
│   ├── tigers.txt                     # 老虎乐谱
│   ├── tigers.mid
│   ├── alice.txt                      # 爱丽丝乐谱
│   └── alice.mid
│              
│   
│
└──origin-doc/                        # 原始项目参考文档
   ├── MIDI-Design.md                 # 新乐谱语言设计文档
   └── Origin-Project.md              # 原始 Base 项目说明

本案例基础项目代码由AI生成,由于代码生成与优化时间过长,为了减少无效的等待并增加实验的趣味性,因此本案例提供部分音乐编辑器源码。

备注:可参考origin-doc目录下的MD文件,依次执行 Origin-Project.md和MIDI-Design.md任务书即可生成完整功能。

2.4 下载并配置CangjieSkills

下载CangjieSkills:

登录gitcode,下载CangjieSkills

10.PNG

下载完成后,解压缩CangjieSkills-main.zip文件,所有技能存放在CangjieSkills-main\CangjieSkills-main\.agents\skills目录下。

12.PNG

  • cangjie-std Skill

提供仓颉语言标准库常用功能速查文档,包括核心类型/集合/时间日期/数学运算/扩展数值/并发同步/并发集合/正则表达式/文件系统/IO流/网络通信/进程管理/排序/环境变量/随机数/二进制端序/整数溢出/Unicode字符/自动派生/反射/摘要算法/类型转换/标准输入输出/命令行参数处理/单元测试框架/弱引用等。

  • cangjie-stdx Skill

提供仓颉语言扩展标准库stdx常用功能速查文档,包括stdx配置构建/json编解码/日志/编码/压缩/序列化/HTTP客户端/HTTP服务端/WebSocket/TLS安全通信等。

  • cangjie-toolchains Skill

提供仓颉语言编译器cjc/调试器cjdb/覆盖率检测工具cjcov/代码格式化工具cjfmt/静态检查工具cjlint/性能分析工具cjprof/项目管理工具cjpm的使用文档。

  • cangjie-original-docs Skill

当无法从其他Skills中获取有效的仓颉语言知识时,请引用此Skill,所在目录提供仓颉语言/标准库/扩展标准库/工具链的原始文档。

  • cangjie-regulations Skill

仓颉项目规范准则。包括项目结构规范、命名规范、格式化规范、错误处理规范、测试规范、并发规范、安全规范、文档规范、依赖管理规范、版本控制规范等最佳实践指导。

  • cangjie-lang-features Skill

提供仓颉编程语言核心特性优质文档,当使用仓颉语言做软件开发,或者回答用户关于仓颉语言的问题时,应优先使用此Skill。

配置CangjieSkills:

华为云码道提供手动创建导入两种方式配置技能,本案例使用导入的方式配置技能。

在码道右上角打开设置,进入设置界面后选择技能与规则,在项目级板块下技能的右侧点“+”号,选择导入

13.PNG

将存放在CangjieSkills-main\CangjieSkills-main\.agents\skills目录下的技能压缩成对应的zip包。上传包含SKILL.md文件的.zip包。以cangjie-std Skill为例。

14.PNG

备注:压缩包的名称与技能名称保持一致。

点击确定按钮,上传成功后,系统自动在.codeartsdoer/skills目录下导入SKILL。

15.PNG

其它技能以同样方式导入即可。

16.PNG

三、仓颉音乐编辑器功能实战

3.1 优化音乐编辑器

与华为云码道对话,使用AI执行Task.MD任务书,即在智能体对话框中输入以下提示词:

复制代码

请执行Task.MD文件,优化音乐编辑器。

009.PNG

3.2 试听音乐

打开项目目录,在testcase目录下使用音乐播放器,试听生成的音乐。

18.PNG

3.3 音乐创作

由于华为云码道装配的是通用大模型,非音乐定制模型,因此对于音乐的处理能力有限,如果想生成高质量的音乐,请使用专业的音乐模型。

操作步骤:

  • 与华为云码道对话,使用AI创作音乐;
  • 试听音乐;
  • 开发者与华为云码道反复对话,优化乐谱,完成创作;

本案例中,提供了一个音乐创作需求文档,可直接执行,在码道对话框中输入以下提示词:

复制代码

请根据Music.md生成乐谱,并生成.mid文件

19.PNG

打开项目目录,在testcase目录下使用音乐播放器,试听生成的音乐。

20.PNG

本案例使用仓颉语言实现了乐谱解析器,将txt文件格式的乐谱转为MIDI文件,通过数字乐器演奏乐谱。开发者也可以使用音乐服务MCP实现相应功能。

至此,华为云码道×仓颉实战:零基础开发你的专属音乐编辑器的案例已全部完成。

四、反馈改进建议

如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐