# 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工作样例:

两本好书推荐:


(特别感谢诗社的白老师,这本意象的帝国是她推荐给我的,我读完后觉得受益匪浅)
后续会更新详细的学习路线和学习方法(如果有时间)
> 本教程采用 **知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0)** 进行许可。
>
> 您可以自由分享、修改、用于非商业学习,但**禁止商用**,且衍生作品必须以**相同协议**开源。
>
> 协议详情:https://creativecommons.org/licenses/by-nc-sa/4.0/