1 个不稳定版本
0.1.0 | 2023年6月28日 |
---|
#377 in 音频
315KB
2K SLoC
Polyrhythmix
Polyrhythmix (Poly) 是一个命令行助手,旨在根据鼓部分的描述生成MIDI文件。它提供了一种方便的方法,在命令行中输入DSL(领域特定语言),然后计算鼓部分何时会汇聚在一起,从而方便地创作频繁跨越小节线的多节奏部分。此外,它还具有生成跟随鼓点的低音MIDI音轨的功能。
Polyrhythmix专门设计用于帮助在现代前卫摇滚、金属、djent、融合和印度卡纳蒂克音乐等领域工作的音乐家和作曲家。它的目标是简化创建复杂多节奏鼓模式的流程,使用户能够专注于创作的创意方面。
动机
我是一个吉他手,我经常使用Guitar Pro之类的六线谱编辑器。然而,编写多节奏的鼓部分很快就会变得复杂,因为节奏变化往往跨越小节线。这些部分的其他属性是:它们往往以简单的方式从简单想法展开,比如“我想创作一个鼓部分,让它在3对4的感觉下与鼓点对鼓点”。另一种思考方式是,它有一个简单的蓝图,但在西方音乐记谱法中很难表达。这就是为什么有Polyrhythmix
。我想有一个简单的工具来工作/头脑风暴节奏想法,并通过MIDI回放来评估它们。我喜欢现代前卫摇滚/金属音乐、融合,所以这非常适合。我有一种印象,它可能对印度卡纳蒂克音乐也很有用,但我希望得到一些有洞察力的确认。
功能
鼓生成:Polyrhythmix接受DSL输入来定义各种鼓乐器的多节奏模式。它智能地计算不同鼓部分何时会汇聚,确保节奏同步。
MIDI文件生成:一旦定义了多节奏模式,Polyrhythmix就会生成包含鼓部分的中MIDI文件。该文件可以导入任何兼容的软件或硬件进行进一步编辑或播放。
低音音轨生成:Polyrhythmix提供了一种选项来生成跟随鼓点的低音MIDI音轨。该功能通过将低音线和鼓点模式同步,为创建连贯的节奏部分提供了基础。
用法
Polyrhythmix可以通过所需的命令行选项作为可执行文件运行。可用的选项如下:
Usage: poly [OPTIONS]
Options:
-K, --kick <KICK>
Kick drum pattern
-S, --snare <SNARE>
Snare drum pattern
-H, --hi-hat <HIHAT>
Hi-Hat pattern
-C, --crash <CRASH>
Crash cymbal pattern
-t, --tempo <TEMPO>
Tempo value [default: 120]
-s, --time-signature <TIME_SIGNATURE>
Time signature [default: 4/4]
-o, --output-file <OUTPUT>
Output file path, make a dry run if omitted
-B, --follow-kick-drum-with-bass
Generate a second MIDI track for the bass following the kick drum
-h, --help
Print help
-V, --version
Print version
Polyrhythmix使用简单的领域特定语言(DSL)来描述鼓点模式。有关更详细的解释,请参阅DSL概述。
假设你想知道两个模式是否会收敛以及收敛的时间。我们从3对4的模式开始。第一个模式将是踩镲上的8分音符序列。
poly --kick '8x--x--' --snare '4-x'
输出
No output file path was supplied, running a dry run...
Converges over 3 bars
我们没有提供--output-file
/ -o
参数,所以
poly --kick '8x--x--' --snare '4-x' -o out.mid
输出
Converges over 3 bars
out.mid was written successfully
Polyrhythmix假设在DAW或五线谱编辑器中很容易复制在有限小节数内收敛的模式,因此在这种情况下它只生成3个小节的鼓点。在Mac OS上,我通常这样做:poly <OPTIONS> -o out.mid && open out.mid
或者poly <OPTIONS> -o out.mid && open -a 'Guitar Pro 7' out.mid
。
这样,它默认的时间签名是4/4,但我们可能想要以3/4为例来解释这个节奏模式。让我们试一试。
poly --time-signature '3/4' --kick '8x--x--' --snare '4-x' -o out.mid && open -a 'Guitar Pro 7' out.mid
输出
Converges over 2 bars
out.mid was written successfully
现在我们可以看到它将在2个小节内收敛,而不是3个小节。说实话,我更喜欢4/4的主机时间签名。让我们回到它。此外,我们还可以添加踩镲和军鼓的模式,我们还可以通过提高速度让它更有活力。
poly --time-signature '4/4' --tempo 138 --crash '4x---' --hi-hat '8-xxx' --kick '8x--x--' --snare '4-x' -o out.mid
这很酷,但让我们通过添加低音轨的蓝图来让它更有用。做这件事的简单方法就是让低音跟随踩镲。Poly
有一个选项来做这件事,叫做-B
/--follow-kick-drum-with-bass
。让我们将其添加到之前的命令中,以将低音轨添加到输出文件。
poly --time-signature '4/4' --tempo 138 --crash '4x---' --hi-hat '8.t-xxx' --kick '8x--x--' --snare '4-x' -o out.mid -B
现在输出文件中有两条轨,你可以更改低音音符来创建预期的和声环境。
让我们再试一次。
poly -t 115 -K '32xx16xx' -H '8x' -S '4--x-' -B -o bleed.mid
恭喜你,现在你有了Meshuggah的 "Bleed"的基本版本!
DSL概述
任何模式都可以用一系列音符组来描述。音符组中的所有音符长度相同。可能的长度有:
1
- 全音符2
- 二分音符4
- 四分音符8
- 八分音符16
- 十六分音符32
- 三十二分音符64
- 六十四分音符.
- 点音符(意味着它的长度是未经修改的持续时间1.5倍)。点应该在基本长度之后应用,例如:8.
。t
- 三连音音符,应在基本长度和点之后应用。例如,4.t
表示三连音的带点四分音符。
现在让我们谈谈鼓点。Poly有一个类似于鼓机的逻辑,所以我们只关心鼓点和休止符。
x
- 击打-
- 休止符
让我们组合几个简单的音符组
4x
- 一个四分音符的组。8.-x
一个休止符和一个鼓击的组。休止符和击打各有一个八分音符的长度。
可以使用以下语法重复相同长度的音符组
(3,8x-x)
表示重复三次八分音符中的击打、休止符、击打序列
现在我们知道这些,我们可以像这样排列多个组
32xx16xx
- Meshuggah 的 "Bleed" 中的踢踏舞模式
吉他 pro 备注
别忘了将 MIDI 导入量化为64分音符,因为随着我们进入更野的音符组合,事情会变得越来越疯狂:
贡献
非常欢迎贡献,请随意提出问题、提出拉取请求,并就这款软件提供反馈。
联系方式
如果您在使用 Poly 时遇到问题或有疑问,请随时通过电子邮件联系我。
依赖项
~2.3–3MB
~58K SLoC