je简谱处理工具,包括转调、制谱、播放、midi提取与制作、五线谱识别等
友链: 简谱(图片)转调
je谱为约定俗成,并无严格规定格式。但为了各种工具的使用,请按照此处的规则使用:
1234567代表七个全音,音符前加#表示升半音,加b表示降半音。如 3 #1 5 b7,即 E C# G A#(6[2b1])表示低音A、中音D、低音G。保持音符间音程关系不变,改变整体音高的工具。
基本原理:把音符数字化到数轴的一点,整体平移,再根据新位置转为音符。
根据je谱演奏的工具。
基本原理:数字化音符,利用这个项目播放音频。利用计时器,均匀播放,空格和换行视为休止
解析midi文件的工具。支持如下格式转换:
graph LR
A[MIDI] <--> B[番茄简谱]
A --> C[数字谱]
B --> C
A --> E[MIDI二进制、事件解析]
基本原理:利用midi协议解读音符【midi协议怎么看?】。可以解读为没有时值的je谱,也可以解读为番茄简谱脚本:一个图片形式简谱制作网站,保留时值信息。
本项目重新造了midi轮子。使用方法:midi class
利用特定文本生成midi文件的工具。
所谓特定文本,即需要的json,需要给出音序号、时长、开始时间(可省略)。详见网站。若不写明开始时间,则默认在上一个音的后面追加。
手动给没有时值的je谱加上时值的工具。
基本操作:输入je谱,点击开始,两个手指交替按压键盘,按下表示音开始,抬起表示音结束,根据记录的毫秒数,进行近似处理,得到“midi制作”所需的“特定文本”。
若需进一步自动化,请使用我在 noteDigger 中实现的 “数字谱对齐音频”(见下)。
识别五线谱图片为je谱的工具。
暂时只有个初步实现。使用了我另一个项目jsPic来处理图片,因为opencv.js太大了而且不能改。目前效果很糟糕,不能用手写谱,底色要白色,图片大点。
如果想要系统地转换,请看我的文章
je谱诞生以来一直诟病不断,就是针对其缺少时值信息的缺点。本项目的解决方法:
为了更自动化地赋予je谱时值,我借助 noteDigger 平台,实现了一个粗略的“je谱和音乐对齐”,输入音乐和je谱就能得到大概的音符时间;配合其“节拍检测”可以更进一步实现时值创建。
文档末尾细说一下五线谱识别的实现。目前(就是这个效果堪忧的版本)使用的方法是:
怎么样,很粗糙吧。。。