Skip to content

fengshiyangrouguan/Trad-score_Hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trad-score_Hub:古乐谱数字化输入与渲染平台

本项目致力于提供一个简单、高效的工具链,用于将基于传统乐谱记谱法(如琵琶谱、工尺谱、减字谱等)的文本输入,转换为统一的乐谱语法树结构存储,可以实时渲染为现代的、可发布的乐谱图像。以后将支持一键转换为简谱、五线谱、音频、midi文件等

✨ 主要特性

  • 实时预览: 在 PySide6 界面中实时输入乐谱语法文本,即时查看渲染结果。
  • 语义化输入: 采用简洁的 Markdown 启发式语法,专注于乐谱的结构和符号,而非复杂的图形绘制。
  • 核心服务分离: 渲染和处理逻辑封装在 scorelang 服务层,易于扩展到不同的乐谱类型和输出格式。
  • 可移植性强: 最终应用通过 PyInstaller 打包,可在 Windows 等系统上独立运行。
  • 灵活的文件管理: 用户生成的数据(图片、保存的文本)保存在应用程序运行目录,易于管理和备份。

🚀 快速开始

运行环境

本项目基于 Python 3.x 和 PySide6 构建。建议使用虚拟环境(venv)运行。

使用打包应用(推荐)

  1. 下载最新版本的打包文件(稍后会放入网盘)。
  2. 双击运行文件夹中的MusicScoreHub.exe文件,应用程序启动后,在右侧文本输入框中输入乐谱文本。
  3. 点击“生成乐谱”按钮,即可在左侧看到渲染结果,图片文件将保存在运行目录下的 data/scores_image 文件夹中。
  4. 也可以保存自己输入的语法文件,乐谱文件将保存在运行目录下的 data/scores_saved 文件夹中。

🎼 乐谱数字化输入语法指南

本平台采用一套简洁的 Markdown 启发式语法 来输入乐谱,请严格遵循以下规则。 本指南详细说明了用于乐谱数字化和渲染的文本输入语法。请严格按照以下规则输入乐谱文本。


一、乐谱信息

整个乐谱的信息

结构 示例 说明
乐谱标题 # 迦陵频 必须 乐谱的名称。
调式 @ 沙陀调 必须 乐曲使用的调式。如果不输入默认黄钟调

下面的是可以附加的元信息,用于归档和管理,不会被渲染到最终的乐谱图片中。

结构 示例 说明
来源 % 来源:三五要录 可选 注明乐谱的出处。
录入者 % 录入:冯氏羊肉馆 可选 注明乐谱的录入者。
审校者 % 审校:冯氏羊肉馆 可选 注明乐谱的审校者。
日期 % 日期:2025.10.12 可选 注明录入或审校日期。

可以在整个乐谱的任意地方插入介绍性文本

结构 示例 说明
插入文本 = 这是一段乐曲介绍。 插入的文本将作为注释渲染。系统会自动换行。
手动换行 = 第一行文本 = 第二行文本 通过换行然后重新开始一个新的 = 行来实现手动换行。

二、乐段

使用 ## 来新建乐段。

结构 示例 说明
乐段标题 ## 入破第一 用于划分乐段,支持在下一行添加 @ 临时转调 信息。
临时转调 @ 临时变宫 乐段标题后跟随 @ 可以进行临时的调式变化,作用于本乐段即以后所有乐段。

乐段不是必须的,可以不新建,系统会默认生成一个空乐段


三、主谱字与修饰符(核心语法)

主谱字及其修饰符都必须包含在一对 花括号 {} 中。

1. 主谱字类型

主谱字包括数字、汉字和其他符号,以下是所有支持的类型:


下面是按散声到第四柱的主谱字:

$$ 一 | 二 | 三 | 四 $$

$$ 五 | 六 | 七 | 八 $$

$$ 九 | 十 | 匕 | 卜 $$

$$ 敷 | 乙 | 言 | 合 $$

$$ 斗 | 乞 | 之 | 也 $$

下面是可以使用主谱字表示的时值符号:

$$ 丁 | 引 $$

(引符号可以用/y的修饰符表示,也可以直接用主谱字)

示例: {一}{引}{丁}

2. 修饰符的插入 (小字/括号)

在主谱字后使用 小括号 () 插入小字(装饰音、副字)。

语法 示例 渲染效果
单个小字 {一(二)} 主字为“一”,小字为“二”。
多个小字 {一(二三)} 主字为“一”,小字为“二”和“三”。

3. 时值与特殊符号

时值减半符号和其他演奏技巧通过在主谱字后添加 斜杠 / 及其代号来实现。

代号 名称 语法 说明
/h {三/h} 表示当前谱字的时值减半,并在渲染时标记“火”符号。
/hh 时值减半 {一/hh} 表示当前谱字的时值减半,但渲染“火”符号。
/y {二/y} 表示该谱字时值加一个单位。
/f 反拨(指法) {七/f} 表示该谱字附带“反拨”指法标记。
/r 断句 {三/r} 渲染为一个横杠,用于乐句之间的断开。
/py 乐拍子 {一/py} 右侧实心圆点。
/pz 只拍子 {二/pz} 底部空心圆。
/b {三/b} 右侧的百标记。
/ls 连弹开始 {二/ls} 表示连弹开始。
/le 连弹结束 {二/le} 表示连弹结束。

特殊时值规则:

  • 连续“火”字: 当前一个字使用 /h(渲染火)后,紧跟的下一个字也必须加上 /hh

    • {三/h} {四/hh}
  • 时值减半但无火: 如果两个字都需要时值减半,但都不标记“火”,则都使用 /hh

    • {一/hh} {二/hh}

4. 两弦连弹

使用 /ls/le 标记连弹的开始和结束。

语法 说明
{一/ls} 连弹开始
{二/le} 连弹停止

5. 乐拍子、只拍子、百应用规则

乐拍子和乐百符号(/py, /pz, /b, /r)在乐谱中主要用于标记乐句中的节拍重音或节奏点。 只拍子只会在时值累计到两字时才会被应用

  • 当拍子符号出现在引,丁上时,可以把“引”和“丁”变成主谱字输入:
    • {引/b}
    • {丁/pz}

示例:

# 乐谱数字化小测试
@这里写调式
% 来源:三五要录
% 录入:冯氏羊肉馆
% 审校:冯氏羊肉馆
% 日期:2025.10.12
=这里写插入文本

## 在这里写乐段
@支持临时转调,不写则默认继承当前调式
=这里也可以插入文本

=也可以不写乐段,系统会自动帮你生成一个不渲染的空乐段节点

{一/py}
{二/py/pz}
{三/py}
{四/py/pz}
{五/b}
{六/py/pz}
{七/py}
{八/py/pz}
{九/py}
{十/py/pz}
{匕/py}
{卜/py/pz}
{敷/b}
{乙/py/pz}
{言/py}
{合/py/pz}
{斗/py}
{乞/py/pz}
{之/py}
{也/py/pz}
{也/b}
{丁/py/r}
{引/b}
#引符号可以用/y的修饰符表示,也可以直接用主谱字

## 修饰符号展示,可以叠加

{一/py/h}
{二/hh}
{乙/ls/py}
{三/le/pz}
{四/f/py}
{五/pz/py}
{六/y/b/pz}
{七(三七)/py}
{卜(八)/h/py}
{八/hh/pz}
{九/f/py}
{十/r}

About

古乐谱数字化输入与渲染平台

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages