#music #rhythm #wav #web-interface #clicktrack

bin+lib metrome

从任何节奏创建节拍轨

5 个版本

0.1.26 2024年3月2日
0.1.25 2024年2月28日
0.1.24 2024年1月29日
0.1.22 2024年1月29日
0.1.18 2024年1月29日

#1 in #rhythm

GPL-3.0 许可证

585KB
812

Metrome

Metrome 是一个节拍轨生成器。它使用基于文本的简单节奏记谱法来生成任何类型的节奏节拍轨。目前,Metrome 可以作为 CLI 或 Rust crate 使用。计划添加网页界面!

为什么你会选择 Metrome,而不是节拍器呢?

你的节奏需求可能不同。对于大多数音乐家来说,一个发出恒定脉冲的简单设备可能就足够了。对于一小部分音乐家,一个 多节奏节拍器 可能能满足他们的特殊节奏需求。然而,如果你发现自己面对的是具有恒定速度、节拍和脉冲变化的乐谱,你可能需要一个专门的节拍轨来练习该乐谱。甚至偶尔出现的奇数拍也会使正常节拍器的练习变得困难。

使用方法

CLI

系统要求:运行 Metrome CLI 需要 Rust。请按照 此页面 安装 Rust。

快速入门

为了快速开始,您可以克隆此仓库并渲染示例。

git clone https://github.com/somecho/metrome
cd metrome
# Linux & Mac
./render_examples.sh
# Windows
./render_examples.ps1

运行此操作后,metrome 目录的根目录应包含许多 WAV 文件,您可以直接在命令行中运行 cvlc(如果您已安装 VLC 播放器)。否则,只需使用您选择的播放器播放 WAV 文件。

提供自己的乐谱

Metrome 乐谱只是一个没有扩展名的文本文件。要向 Metrome 提供自己的乐谱,请使用如下 - 标志: metrome - 或在 metrome 项目目录中 cargo run -- -p my_score。使用 -/--output 标志指定自定义输出路径。有关如何编写节奏乐谱的更多信息,请参阅以下部分。

编程使用示例

use metrome::{scanner, score::Score};

fn main() {
    let file = std::fs::read_to_string("myscore").unwrap();
    let tokens = scanner::scan(file).unwrap();
    let score = Score::new(tokens).unwrap();
    score.write_click_track("myscore.wav");
}

Metrome 乐谱

Metrome 使用乐谱创建节拍轨,它只是一个简单的文本文件。以下是一个简短的示例。

示例

| q. e q. e    | e e e e h 
| q. e q. e    | e e e e h 
| q q. e e e   | e e q. e e e
| e e q. e e e | e e q. e e e | 

小节

正如您所看到的,它遵循传统的记谱法,音符被分组在乐句中(如通过谱线|表示)。然而,与传统记谱法不同的是,您不需要提供拍号。乐句的作用是区分强拍和弱拍,每个乐句的第一个强拍是强的,其余的是弱的。

| q  q  q |
  ^  ^  ^
  |  |  |
  |  |  Weak
  |  Weak
  Strong

⚠每个乐谱都必须以乐句线开始和结束!

提示:您可以根据自己的喜好组织乐谱。换行符不会产生影响。

音符、时值和比例

音符可以用这些字母表示

  • w - 全音符
  • h - 二分音符
  • q - 四分音符
  • e - 八分音符
  • s - 十六分音符
  • t - 三十二分音符

或者,您也可以用比例来写音符

these two bars are the same: | 1/4 1/4 1/4 1/4 | q q q q |
ratios are great for triples: | 1/6 1/6 1/6 1/6 1/6 1/6 | 

您可以使用这些比例的任意组合。例如,| q 1/6 1/6 1/6 h |是一个有效的乐句。

带点音符

任何音符、时值或比例都可以使用点.来延长,就像传统记谱法一样。例如,q.的时长是3/8,而q..的时长是7/16

速度

速度可以像这样指定q = 140(读作:每分钟140个四分音符)。这种语法的格式是<note> = <number>,其中<note>是表示为字母或比例的时值。

速度可以指定在乐谱的任何位置

At the beginning like a normal score
q = 140
| q q q q |

After a bar 
| q q q q | h = 90 h h |

In the middle of a bar like a psycho
| q q q=150 1/6 1/6 1/6 |

注意:当未指定速度时,Metrome默认为q = 120或每分钟120个四分音符。如果您问我,这似乎很合理。

相对速度变化

在许多音乐中,速度变化可以是相对的。例如,♩=♩. ,意味着圆点四分音符现在与四分音符一样长。您通常会在从4/4(简单拍子)切换到6/8(复拍子)的音乐中找到这一点,其中脉冲分割从二变三,长度保持不变。

在Metrome中,等效的是q=q.。简单、干净。您还可以这样做1/6=q,其中四分音符现在与三连音四分音符一样快(从语义和音乐上讲是同一件事,但不同)。

示例

查看示例以供参考。

路线图

  • 接受stdin输入
  • 浮点速度
  • -o标志用于指定自定义输出路径

© 2024 Somē Cho

依赖项

~1.3–1.9MB
~36K SLoC