Communitygithub.com

bass-tab

将歌曲来源(制表符截图、PDF、链接、注释等)转换为紧凑的贝斯制表符,并生成一至两页的伴奏图表PDF,包含段落标签、折叠重复、和弦与歌词。

bass-tab 是什么?

该技能专注于将贝斯制表符的各种来源(截图、PDF、在线链接等)整合为结构化的歌曲数据文件,然后自动渲染为紧凑的文本制表符(.tab)和一页或两页的伴奏图表PDF。其核心原则是“只取来源实际展示的内容”,绝不依赖记忆或外部资源编造音符。技能支持段落标签、和弦名称、歌词对齐和折叠重复标记,确保图表清晰可读。适用于任何需要制作、修正、渲染或打印贝斯制表的场景,仅依赖Python3,处理非拉丁字符时需Pillow库。最终输出的是面向演奏者的演奏图表,而非原始制表符格式。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jcl2018/skillset/tree/HEAD/skills/bass-tab

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

bass-tab 是做什么的?

将来源实际展示的内容转换为歌曲数据文件,然后渲染紧凑的贝斯制表符(.tab)和一份可打印的伴奏图表PDF(1-2页美国信纸尺寸)。仅需python3;当标题或艺术家为非拉丁字符(如中文)时还需要Pillow。如果没有它,chart2pdf.py 和 tab2pdf.py 会拒绝运行而非打印?;在虚拟环境中安装(python3 -m venv v && v/bin/pip install pillow)并使用该Python运行脚本,或传递--allow-lossy。 脚本位于此文件旁的scripts/目录;从技能文件夹运行它们,或提供完整路径。

歌曲文件

每首歌一个目录,包含三个文件:

<slug>/
  <slug>.py     真实来源:结构化数据,可手动编辑(从 templates/song-template.py 开始)
  <slug>.tab    由 scripts/tabgen.py 生成
  <slug>.pdf    伴奏图表,由 scripts/chart2pdf.py 直接从 <slug>.py 生成

<slug>.py 提供 META / BARS / SECTIONS / CHORDS / LYRICS。重复的乐段只编写一次,并在每次出现的位置标记引用,因此一次修正即可更新所有副本。切勿将重复展开为独立副本。

LYRICS 将小节号映射到该小节对应的歌词。歌词可能来自所有者,或来源中可见的内容(例如制表符视频中的屏幕歌词)。切勿自行编造歌词,或凭记忆或通过网络搜索填充;如果没有来源显示歌词,则保留 LYRICS = {} 并告知所有者可自行添加。无歌词的歌曲也能正常渲染。歌词按原样打印,每次重新生成时保留。

渲染

python3 scripts/chart2pdf.py <slug>/<slug>.py -o <slug>/<slug>.pdf [--paper letter|a4]
python3 scripts/tabgen.py <slug>/<slug>.py <slug>/<slug>.tab --bars <如果 META slots == 16 则为 1,否则为 3> --cut compact

PDF 是一份图表,风格类似于在线制表符播放器:每行若干小节,每个段落开头有粗体段落标签,重复乐段在重复记号之间只绘制一次并标注次数(x4),重复前面段落的段落缩写为一行(Chorus 2 = Chorus (bars 13-16)),和弦名称标注在 CHORDS 定义的小节上方,歌词放在所属小节下方。默认使用美国信纸尺寸,最多2页:制表符数字保持9pt或更大,在字体缩小之前会先收紧间距并折叠重复,如果歌曲仍然无法容纳则拒绝并显示其名称。报告页数。处理非拉丁歌词或标题时需要 Pillow(见上文)。--collapse-sections 强制使用引用行。

长版单行PDF仍然可用:tabgen.py ... --cut compact 然后 tab2pdf.py <slug>.tab -o <slug>-long.pdf。--cut compact 是文本表单。 它是唯一携带重复记法(折叠乐段标记为 A-B xN)的裁剪模式。--cut full 是调试视图(每个小节,外加格式中不显示的节拍标尺行),永远不是交付物。为输出提供完整路径。

文本格式:标题行(曲名、艺术家、调性、速度、拍号、调弦、来源、图例),然后每个段落一个 [Name - bars a-b . m:ss] 标题,一行和弦,一行小节号,一行节奏行 R|,四行弦行 G D A E;然后是注意事项,最后是 [Checked] 块。谱表行固定为77个字符,因此每首歌以相同比例打印;如果某行过长,则减少每行的小节数。

从来源创建歌曲文件

严格按照以下步骤执行;这是该技能的核心。

  1. 只取来源实际展示的内容。 制表符截图或PDF可以读取。录音链接则不能:你无法听取音频。从歌曲URL中只获取打印的曲名、速度和段落名称,其他一律不要。绝不凭对歌曲的记忆提供小节。一个可见的空白胜过一个看起来正确但实际上不对的小节。
  2. 仅限贝斯轨道。 如果来源显示多种乐器,则只取贝斯并说明使用了哪个轨道。如果有两个贝斯轨道或贝斯加倍:询问,不要自行选择。
  3. 交叉检查每个重复,并只编码一次。 阅读每个出现的位置并进行比较。一致是最强的验证手段;不一致意味着至少有一个读数是错误的。出现位置一致:只编码一次。不一致:说明情况,分别给出两种计数,将读数标记为估计值。没有任何重复的小节无法交叉检查;在表单上说明这一点。
  4. 绝不断言未经检查的内容。 像“与A-B小节相同”这样的声明是从数据生成的,而不是手动输入的。段落小节范围由边界计算得出。
  5. 结构、和弦、速度。 使用来源自身的标签填充 SECTIONS。为每个小节提供其和弦条目:和弦确定了品位于哪根弦上(第7品在E弦上是B,在A弦上是E),因此 tabgen.py 会推导出弦线,如果某个品/和弦对在所有弦上均不匹配则报错。在 META 中填写速度;段落时间戳由速度计算得出。
  6. 报告未完成的工作。 哪些小节缺失,哪些是估计值,哪个来源提供了什么。每次转录结束时都要包含这些信息,而不是一个“一切正常”的声明。

凭肉眼读取节奏和从未测量过的品距是已知的薄弱点;在 CAVEATS 中说明。

建议

在转录完成或应要求时,提供三种类型的建议,并与转录内容明确分开:练习(首先要练习什么)、音乐性(和声进行的作用)以及编配(简化或添加)。编配建议是你的创作;切勿让它看起来像是来源所说。

检查

仓库中的 tests/bass-tab/run.sh 会渲染一首示例歌曲并与记录的基线进行比较,并检查虚构歌曲的图表(段落标签、折叠重复、歌词对齐、2页限制)。

相关技能