Skip to content

Small music theory library with MIDI capabilities written in Rust (wip).

License

Notifications You must be signed in to change notification settings

alelouis/mumuse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mumuse

build license doc.rs crates.io rustc

A Rust small music theory library, featuring:

  • Elementary operations with notes and chords
  • Building chords from scales degrees
  • Scale modes
  • Sequence building with streams
  • Midi real time playing of streams

This is still in active development, things will brake.

  let mut stream: Stream = Stream::new();
  let mut conn_out = midi::get_output_connection("Virtual Midi Bus 1".to_string());
  
  // Constructing event stream
  let notes = ["A3", "B3", "C4", "D4", "A3", "B3", "C4", "D4"];
  let mut time = Time::new(1, 4, 1);
  let duration = Duration::new(16, 1); // 16th notes

  for n in notes {
      let note = Note::try_from(n).unwrap();
      stream.add_note(note, time, duration);
      time = time + duration;
  }

  // Real time play of events
  stream.play(&mut conn_out, 120.0, 4); // midi_connection, beat per minute, beats per bar

How to use

Add mumuse lib crate to your Cargo.toml file.

mumuse = "version"

Browse the examples/ folder in order to see capabilities of the library.
Also, you can check the documentation.

About

Small music theory library with MIDI capabilities written in Rust (wip).

Topics

Resources

License

Stars

Watchers

Forks

Languages