# musicFromScratch **Repository Path**: tianyi_luo/musicFromScratch ## Basic Information - **Project Name**: musicFromScratch - **Description**: 从零开始的术力口向编曲指南 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-08 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 让所有人都能写出自己心中的歌 目前还比较凌乱 使用软件: 所有软件在bilibili均有详细教程,不再赘述 [网易云音乐·X Studio](https://xstudio.music.163.com/) [signal在线midi编辑器](https://signalmidi.app/edit) [gh-proxy-lmms开源免费daw-win64版](https://gh-proxy.org/https://github.com/LMMS/lmms/releases/download/v1.2.2/lmms-1.2.2-win64.exe) [cakewalk](https://downloads.bandlab.com/cakewalk/CPC/Win/Cakewalk_Product_Center_Setup_1.1.0.004.exe) 可以参考的学习资料网站: [dtmwiki](https://dtmwiki.cn/) [DeepSeek - 探索未至之境](https://chat.deepseek.com/) [csdiy计算机知识](csdiy.wiki) [自由派音乐理论](https://music-theory.aizcutei.com/) [用JUCE从零开发颤音插件](https://www.bilibili.com/video/BV1wcrUBGE9v/) [计算机基础 ](https://www.bilibili.com/video/BV1VV4y1U7Kn) diffsinger相关: 如果找不到diffsinger原始仓库,请先学习[csdiy计算机知识](csdiy.wiki)的基础部分 diffsinger合成流程:
流程图 ```mermaid graph TD %% 定义节点样式 style A fill:#f9f,stroke:#333,stroke-width:2px style B fill:#9ff,stroke:#333,stroke-width:2px style C fill:#ff9,stroke:#333,stroke-width:2px style D fill:#9f9,stroke:#333,stroke-width:2px %% 核心流程节点 A["MIDI 输入数据"] -->|包含核心参数| A1["解析 MIDI 和 pit 数据等等"] A1 -->|提取| A2["基频(f0)"] A1 -->|提取| A3["音符时长(Duration)"] A1 -->|提取| A4["呼吸bre/性别值gender等等
(支持的参数因声库而异)"] %% 声学模型(声库)模块 B["Acoustic Model 声学模型
(声库)"] A2 --> B A3 --> B A4 --> B B -->|合成| C["Mel 频谱(Mel-Spectrogram)
(包含了所有的音频信息)"] %% 声码器模块 D["Vocoder 声码器
(比如HiFi-GAN)"] C -->|输入频谱特征| D D -->|波形合成| E["音频文件输出
(WAV/MP3 等)"] %% %% 补充说明节点 %% A:::note -->|"参数示例"| A_note["f0: 440Hz(A4), 时长: 0.5s
音色ID: 0(钢琴), 力度: 80"] %% B:::note -->|"核心作用"| B_note["根据MIDI参数匹配声库
生成对应Mel谱特征"] %% D:::note -->|"核心作用"| D_note["将Mel谱还原为时域音频波形
HiFi-GAN: 高保真、低延迟"] %% 样式类定义 classDef note fill:#f5f5f5,stroke:#666,stroke-width:1px,font-size:12px ```
vocaloid合成流程: 参考了mhbalthasar/VOCALOID6_API项目 三个核心dll VDM(声库管理器)、DSE(合成引擎)、VSM(序列管理器)
流程图 ```mermaid flowchart TD A["开始"] --> B["初始化环境:获取VOCALOID路径"] B --> C{路径是否有效?} C -->|否| D["抛出异常/提示VOCALOID未安装"] C -->|是| E["设置DLL目录(加载VOCALOID核心库)"] E --> F["加载VPR工程文件"] F --> G{工程加载成功?} G -->|否| H["抛出异常/提示工程文件损坏"] G -->|是| I["解析工程参数(音高、歌词、音色、速度等)"] I --> J["调用VOCALOID合成接口"] J --> K["音频合成渲染(实时计算波形)"] K --> L{合成完成?} L -->|否| M["返回合成错误信息"] L -->|是| N["设置音频导出参数(格式、采样率、比特率)"] N --> O["导出音频文件(WAV/MP3等)"] O --> P{导出成功?} P -->|否| Q["抛出导出失败异常"] P -->|是| R["释放DLL资源/清理内存"] D & H & M & Q --> S["结束(失败)"] R --> T["结束(成功)"] ```
流程图 ```mermaid flowchart TD A["初始化环境"] --> B["加载DSE(合成引擎)DLL"] B --> C{初始化DSE引擎
(调用DSE_Init接口)} C -->|失败| Z["释放已加载模块,返回错误"] C -->|成功| D["加载VDM(声库管理器)DLL"] D --> E{初始化VDM
(关联DSE引擎句柄)} E -->|失败| Z E -->|成功| F["通过VDM加载声库(ddb,ddi)"] F --> G{声库加载成功?} G -->|失败| Z G -->|成功| H["加载VSM(序列管理器)DLL"] H --> I{初始化VSM
(关联VDM声库+DSE引擎)} I -->|失败| Z I -->|成功| J["VSM加载工程序列(VPR/音符数据)"] J --> TRACK["Track(轨道)"] TRACK -->|包含| PART["Part(片段)"] PART -->|包含| NOTE["Note(音符)/pit参数/vel参数等"] NOTE --> K["开始音频合成"] K --> L["合成完成,合并导出音频"] L --> M["释放VSM(VSM_Release)"] M --> N["通过VDM卸载声库"] N --> O["释放VDM(VDM_Release)"] O --> P["释放DSE(DSE_Release)"] P --> Q["结束"] ```
midi(包含基频f0,时长等等参数),输入到acoustic model(声库)中,输出mel谱 mel谱通过vocoder声码器(常用hifigan)最终得到音频文件 参考资料: [DiffSinger - 导航](https://www.diffsinger.com/) diffsinger原始论文 diffsinger原始仓库 openvpi维护的diffsinger仓库 openutau仓库(可选自带声码器) [Home | OpenUtau](https://www.openutau.com/) DAW工作样例: ![img\image-20260308163948107.png](img/image-20260308163948107.png) 两本好书推荐: ![](img/image.png) ![](img/image1.png) (特别感谢诗社的白老师,这本意象的帝国是她推荐给我的,我读完后觉得受益匪浅) 后续会更新详细的学习路线和学习方法(如果有时间) > 本教程采用 **知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0)** 进行许可。 > > 您可以自由分享、修改、用于非商业学习,但**禁止商用**,且衍生作品必须以**相同协议**开源。 > > 协议详情:https://creativecommons.org/licenses/by-nc-sa/4.0/