diff --git a/README.md b/README.md index 7948e92..ec028d6 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ ## 导入导出说明 - 导出进度: 结果是.nd的二进制文件,保存分析结果(频谱图)和音符音轨。导入的时候并不会强制要求匹配原曲!(会根据文件名判断一下,但不强制) -- 导出为midi: 只保证能听,节拍默认4/4,bpm默认60,midi类型默认1(同步多音轨)。第10轨不会分配为鼓点轨(本项目设计并不考虑扒鼓)。 +- 导出为midi: 有两个模式。模式一只保证能听,节拍默认4/4,bpm默认60,midi类型默认1(同步多音轨);模式二会根据小节线进行对齐,可以直接用于制谱,算法概述见下面“节奏对齐”。两个模式下第10轨都不会分配为鼓点轨(本项目设计并不考虑扒鼓)。 - 导入midi: 将midi音符导入,只保证音轨、音符、音色能对应,音量默认127。如果导入后没有超过总音轨数,会在后面增加;否则会覆盖后面几轨(有提示)。 ## 常规操作 @@ -141,7 +141,7 @@ ### 2024 8 2 完成了issue2:不导入音频的midi编辑器。点击文件菜单下的“MIDI编辑器模式”就可以进入。
-视野的宽度取决于最后一个音符,模仿的是https://signal.vercel.app/edit。也尝试过自动增加视野,可以一直往右拉,但是这样在播放的时候,开启“自动翻页”会永远停不下来(翻一页就自动拓展宽度)。
+视野的宽度取决于最后一个音符,模仿的是[signal](https://signal.vercel.app/edit)。也尝试过自动增加视野,可以一直往右拉,但是这样在播放的时候,开启“自动翻页”会永远停不下来(翻一页就自动拓展宽度)。
扒谱框架下的midi编辑器还是有些反人类,因为绘制音符时的单位是时间而不是x分音符。不过也能用。
原理是实现了一个空壳的Audio,只有计时功能,没有发声功能。一些做法写在了todo.md上。 diff --git a/app.js b/app.js index 45f1eaf..efd7f5b 100644 --- a/app.js +++ b/app.js @@ -1511,6 +1511,7 @@ function App() { const cqtBins = cqtData[i]; const stftBins = s[i]; for (let j = 0; j < cqtBins.length; j++) { + if(cqtBins[j] == 0) continue; // 0的时候不用管,是低频的边缘效应 // 用非线性混合,当两者极大的时候取最大值,否则相互压制 if(stftBins[j] < cqtBins[j]) stftBins[j] = cqtBins[j]; else stftBins[j] = Math.sqrt(stftBins[j] * cqtBins[j]);