使用tabr包创作《刺客信条2》主题曲吉他谱教程
2025-06-01 18:04:19作者:侯霆垣
前言
本教程将展示如何使用R语言的tabr包来创作《刺客信条2》主题曲《Ezio's Family》的完整吉他谱。这个项目由Matthew Leonawicz改编,包含了两把吉他的编曲:一把主奏吉他(采用指弹风格)和一把节奏吉他。
准备工作
首先需要安装并加载tabr包:
library(tabr)
然后设置一些基本的元数据:
header <- list(
title = "Ezio's family",
composer = "Written by Jesper Kyd",
subtitle = "Theme from Assassin's Creed 2",
arranger = "Arranged by Matthew Leonawicz",
copyright = "2009 Ubisoft Entertainment",
tagline = paste("Arranged by Matthew Leonawicz", Sys.Date())
)
txt <- "Tune down full step: DGCFAD (Dm). Let guitar 1 ring."
outfile <- "jesper_kyd-ezios_family-custom_arrangement.pdf"
主奏吉他编曲
第一声部(旋律部分)
主奏吉他被分成两个声部,第一声部是使用手指弹奏的旋律部分。我们可以先定义一些常用的音符和琴弦序列:
s1 <- "1 3 2 3 1 2 3 2" # 琴弦序列
s2 <- "1 3 2 3 2 3 1 2"
s3 <- "x 3 2 3 1 2 3 2"
x1 <- "e4 g b g g4 b g b a4 g b g b4 b g b" # 音符序列
x2 <- gsub("b4", "g4", x1)
然后构建各个乐句:
p1a <- p(pc(x1, x2), pc(notate("8", txt), "8*31"), pn(s1, 4))
p1 <- p(pc(x1, x2), 8, pn(s1, 4))
p2 <- volta(p("e4 g b g b4 b g b a4 g b g b4 b g b", 8, pn(s1, 2)), 3)
第二声部(低音部分)
第二声部是使用拇指弹奏的低音部分:
p1 <- p("s*4", 1, "x")
p2 <- volta(p("e*2", 1, 5), 3, silent = TRUE)
x1 <- p("e e d d c c e2 g2 f#2", "1*7 2 2", "5 5 4 4 5 5 6*3")
合并声部
将两个声部合并成一个轨道:
track1a <- track(c(p1a, p2, p3, p4, p5, p6, p7, p8, p9, p10))
track1b <- track(c(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), voice = 2)
节奏吉他编曲
节奏吉他采用扫弦风格,使用字符串-品位的表示方法:
i <- "4 8 8"
i1 <- pn(i, 4)
p1a <- sfp("5*3 5*3 5321*3 5*3", "75000*3 7508*3 7005*3 75007*3", i1)
p1a2 <- sfp("5*3 5*3 5321*3 5*3", "75000*3 7508*3 7005*3 7508*3", i1)
和弦图表与标记
添加和弦图表和在谱面上方标记和弦:
chord_names <- c("e:m", "e:m7/d", "c:maj7", "c:maj9", "e:m", "g:5.9", "g:5.9/f#", "e:m5.9", "s", "a:sus2")
chord_positions <- c("x75ooo", "x55ooo", "x3545o", "x35435", "o22ooo", "3xooo5", "2xo233", "o22oo2", NA, "xo22oo")
chords <- chord_set(chord_positions, chord_names)
生成乐谱
最后将所有轨道合并并生成PDF乐谱:
trackbind(track1a, track1b, track2, id = c(1, 1, 2)) |>
score(chords, chord_seq) |>
tab(outfile, key = "em", time = "4/4", tempo = "4 = 120", header)
注意事项
- 本曲实际音高比记谱低一个全音(Dm调),采用了降调调弦法
- 当和弦中包含相同音高但不同弦时,乐谱显示会有重复音问题
- 滑音标记在某些情况下可能显示不准确
- 目前对add9和弦的支持不够完善
结语
通过这个教程,我们展示了如何使用tabr包创建复杂的吉他编曲。虽然过程需要耐心和精确度,但最终结果是一份专业级别的吉他谱。这种方法特别适合需要精确控制每个音符和技巧的复杂编曲。
登录后查看全文
热门项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
最新内容推荐
Degrees of Lewdity中文汉化终极指南:零基础玩家必看的完整教程Unity游戏翻译神器:XUnity Auto Translator 完整使用指南PythonWin7终极指南:在Windows 7上轻松安装Python 3.9+终极macOS键盘定制指南:用Karabiner-Elements提升10倍效率Pandas数据分析实战指南:从零基础到数据处理高手 Qwen3-235B-FP8震撼升级:256K上下文+22B激活参数7步搞定机械键盘PCB设计:从零开始打造你的专属键盘终极WeMod专业版解锁指南:3步免费获取完整高级功能DeepSeek-R1-Distill-Qwen-32B技术揭秘:小模型如何实现大模型性能突破音频修复终极指南:让每一段受损声音重获新生
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
567
3.84 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
68
20
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
暂无简介
Dart
799
198
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.37 K
779
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
349
200
Ascend Extension for PyTorch
Python
377
450
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
16
1