#音乐理论 #音乐 #和弦 #音阶 #音程 #程序性 #音符

bin+lib rust-music-theory

一个库,以程序化方式实现音阶、和弦、音程、音符等音乐理论概念。

9 个版本

0.2.0 2020 年 8 月 19 日
0.1.7 2020 年 5 月 3 日
0.1.6 2020 年 1 月 25 日

#297 in 音频

Download history 26/week @ 2024-04-15 38/week @ 2024-04-22 33/week @ 2024-04-29 14/week @ 2024-05-06 23/week @ 2024-05-13 17/week @ 2024-05-20 25/week @ 2024-05-27 16/week @ 2024-06-03 21/week @ 2024-06-10 17/week @ 2024-06-17 15/week @ 2024-06-24 13/week @ 2024-07-01 15/week @ 2024-07-15 164/week @ 2024-07-29

每月 192 次下载
用于 2 crates

MIT 许可证

42KB
974

Rust 音乐理论

Build Status Coverage Status Crates.io Documentation

一个库和可执行文件,提供了音乐理论基础(如音符、和弦、音阶、音程等)的程序化实现。

目录

概述

Rust 音乐理论 用于程序化地使用音乐理论概念,如音符、和弦、音阶、音程等。该库的主要目的是让音乐理论能够在其他程序中使用,并以程序化的方式生成音乐/音频。

作为库的使用

rust-music-theory 添加到 Cargo.toml 中的依赖项。

[dependencies]
rust-music-theory = "0.2"

安装依赖项后,您可以使用库如下。

extern crate rust_music_theory as rustmt;
use rustmt::note::{Note, Notes, PitchClass};
use rustmt::scale::{Scale, ScaleType, Mode, Direction};
use rustmt::chord::{Chord, Number as ChordNumber, Quality as ChordQuality};

// to create a Note, specify a pitch class and an octave;
let note = Note::new(PitchClass::As, 4);

// Scale Example;
let scale = Scale::new(
    ScaleType::Diatonic,    // scale type
    PitchClass::C,          // tonic
    4,                      // octave
    Some(Mode::Ionian),     // scale mode
    Direction::Ascending,   // scale direction
).unwrap();

// returns a Vector of the Notes of the scale
let scale_notes = scale.notes();

// Chord Example;
let chord = Chord::new(PitchClass::C, ChordQuality::Major, ChordNumber::Triad);

// returns a Vector of the Notes of the chord
let chord_notes = chord.notes();

这是最简单的使用方式。有关详细信息,请参阅测试文件夹。

作为可执行文件的使用

cargo安装 --githttps://github.com/ozankasikci/rust-music-theory

这将使 cargo 将库作为名为 rustmt 的可执行文件安装。以下是一些使用示例;

rustmt scale D Locrian

Notes:
  1: D
  2: D#
  3: F
  4: G
  5: G#
  6: A#
  7: C
  8: D

rustmt chord C#属九和弦

Notes:
  1: C#
  2: F
  3: G#
  4: B
  5: D#
  6: G

rustmt scale list

Available Scales:
 - Major|Ionian
 - Minor|Aeolian
 - Dorian
 - Phrygian
 - Lydian
 - Mixolydian
 - Locrian
 - Harmonic Minor
 - Melodic Minor

rustmt chord list

Available chords:
 - Major Triad
 - Minor Triad
 - Suspended2 Triad
 - Suspended4 Triad
 - Augmented Triad
 - Diminished Triad
 - Major Seventh
 - Minor Seventh
 - Augmented Seventh
 - Augmented Major Seventh
 - Diminished Seventh
 - Half Diminished Seventh
 - Minor Major Seventh
 - Dominant Seventh
 - Dominant Ninth
 - Major Ninth
 - Dominant Eleventh
 - Major Eleventh
 - Minor Eleventh
 - Dominant Thirteenth
 - Major Thirteenth
 - Minor Thirteenth

从源代码构建

二进制文件实现为一个正则表达式解析器 CLI,返回给定音阶/和弦的音符。要快速本地构建和运行可执行文件;

gitclone http://github.com/ozankasikci/rust-music-theory && cdrust-music-theory

然后您可以直接使用 cargo 编译。以下是一个示例;

cargorun scale D Locrian

Notes:
  1: D
  2: D#
  3: F
  4: G
  5: G#
  6: A#
  7: C
  8: D

路线图

  • 为梅洛迪小调和和声小调音阶添加缺失的模式
    • 添加对任意变音符号的支持
    • 为正则表达式解析器添加对模式替代名称的支持
  • 正确显示等音拼写
  • 为和弦添加转位支持
  • 添加对 终止式 的支持
  • 添加一种从给定音符中查找和弦的机制

依赖项

~4.5–6MB
~103K SLoC