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参数,所以进行了干跑。它告诉我们将在3个小节后收敛。让我们通过添加输出来看看它在MIDI文件中的样子。

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分音符,因为随着我们进入更野的音符组合,事情会变得越来越疯狂: Guitar Pro Import

贡献

非常欢迎贡献,请随意提出问题、提出拉取请求,并就这款软件提供反馈。

联系方式

如果您在使用 Poly 时遇到问题或有疑问,请随时通过电子邮件联系我

依赖项

~2.3–3MB
~58K SLoC