2 个版本

0.1.1 2021年11月9日
0.1.0 2020年9月12日

#795 in 音频

MIT/Apache

1MB
560

rudiments

Crates.io Crates.io License License

rudiments 是一个步进式鼓机,使用音频样本播放节奏模式。

muppets animal, personal use license

功能

  • 16步可编程小节。
  • 可按轨道配置幅度。
  • 可调整速度。
  • 单次播放或重复播放。
  • 支持多种音频文件格式
    • MP3
    • WAV
    • Vorbis
    • Flac

播放和音频文件解码由 rodio 处理。

用法

rudiments 0.1.1
A step-sequencing drum machine

USAGE:
    rudiments [FLAGS] [OPTIONS] --pattern <FILE> --instrumentation <FILE> --samples <DIRECTORY>

FLAGS:
    -h, --help       Prints help information
    -r, --repeat     Repeat the pattern until stopped
    -V, --version    Prints version information

OPTIONS:
    -i, --instrumentation <FILE>    Path to instrumentation file
    -p, --pattern <FILE>            Path to pattern file
    -s, --samples <DIRECTORY>       Search path for sample files
    -t, --tempo <NUMBER>            Playback tempo [default: 120]

输入

rudiments 加载一个 模式 文件,并将模式中的轨道绑定到 乐器配置 文件中定义的 样本 目录中的音频文件。

模式文件 (--pattern)

模式文件中的每一行代表一个轨道。模式中轨道的数量没有限制。一个轨道包含一个乐器名称、一个16步序列和一个可选的幅度。乐器名称是一个标识符,每个模式中只能出现一次。每个序列代表4/4拍中的单个小节,分为16分音符步(x 表示 播放- 表示 静音)。轨道可以包含一个范围在 [0,1] 内的可选幅度。默认情况下,轨道以全音量播放。

以下是一个模式文件内容的示例,用于标准的八分音符节奏,并且打击乐轨道以半音量播放。

hi-hat |x-x-|x-x-|x-x-|x-x-| 0.5
snare  |----|x---|----|x---|
kick   |x---|----|x---|----|

乐器配置文件 (--instrumentation)

乐器配置文件将模式文件中的乐器绑定到音频样本文件。乐器配置文件中的每一行包含一个乐器名称和一个音频文件名称。每个乐器只能出现一次,但单个音频文件可以绑定到多个乐器。

以下是一个乐器配置文件内容的示例,将五个乐器绑定到四个音频样本文件。

请注意,tom.wav 用来绑定 tom-1tom-2

hi-hat hh.wav
tom-1  tom.wav
tom-2  tom.wav
snare  snare.wav
kick   kick.wav

样本目录 (--samples)

rudiments 将在样本目录中查找乐器配置文件中列出的音频文件。

速度 (--tempo)

这调整播放速度(即每分钟的节拍数)。默认播放速度是 120。

安装

rudiments 可以使用 cargo 安装。

$ cargo install rudiments

即将推出的功能

  • 摇摆
  • 混响
  • 记录输出音频文件
  • 模式组合
  • 防止削波
  • 触发输入
  • 不同的拍号
  • 基于终端的用户界面
    • 播放跟踪
    • 实时模式编辑

缺少有趣或有用的功能?请随时提交功能请求和PR!

演示 🥁

assets 目录包含一些示例模式和来自 LinnDrum 打击乐机的音频样本。

标准八分音符节奏

$ rudiments \
    --pattern ./assets/patterns/standard \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --repeat

Burning Up (Madonna)

$ rudiments \
    --pattern ./assets/patterns/burning-up \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --tempo 140 \
    --repeat

Thriller (Michael Jackson)

$ rudiments \
    --pattern ./assets/patterns/thriller \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --tempo 118 \
    --repeat

Get a Little (Patrick Cowley)

$ rudiments \
    --pattern ./assets/patterns/get-a-little \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --repeat

I Wanna Dance With Somebody (Whitney Houston)

$ rudiments \
    --pattern ./assets/patterns/i-wanna-dance-with-somebody \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --tempo 118 \
    --repeat

Tom Sawyer (Rush)

$ rudiments \
    --pattern ./assets/patterns/tom-sawyer \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum \
    --tempo 180

Never Gonna Give You Up (Rick Astley)

$ rudiments \
    --pattern ./assets/patterns/never-gonna-give-you-up \
    --instrumentation ./assets/instrumentations/linndrum \
    --samples ./assets/samples/linndrum

依赖关系

~4–6MB
~108K SLoC