#live-coding #music #interpreter #synth

bin+lib breakers

Interpreter for the Breaker livecoding language

5 releases

0.1.4 Jan 27, 2024
0.1.3 Jan 27, 2024
0.1.2 Jan 27, 2024
0.1.1 Jan 27, 2024
0.1.0 Jan 27, 2024

#352 in Audio

GPL-3.0-or-later

51KB
1K SLoC


Breaker

A minimal audio livecoding language written in Rust.

Crates.io Version docs.rs

Key FeaturesHow To UseRoadmapLicense

screenshot

Key Features

  • grids: configurable sequence of tokens which loop
    • token: either a note, a chord, a repeat _, a pause &, or an integer (which can be mapped to a sample)
    • gridtokens' length is configurable (note grid_name 3/4 for example)
  • mapping: custom token integers can be mapped to samples, with optional probability parameter
  • mixing: different grids can be mixed
  • synths: currently, only one default synth sound (filtered square) is supported
    • in the future, configurable synths will be added

Roadmap

How To Use

Here is an example breaker file, my_first_beat.br:

tempo 120 4/4

// make a new grid and name it 'beat'
// note: _ is a pause, & means 'continue playing'
grid beat {
    1 _ 2 _ 3 &
    1 _ 2 _ 3 4
} 
// map the symbols in the grid to samples
// note: 40% means that 4 will play with probability 40%
map beat {
    1: kick,
    2: hihat,
    3: snare,
    4: hihat2 40%,
}
// length of one token in the grid (default: 1/16)
note beat 1/16

grid chords {
    Cm7/C & & _
    [3]AbM7/Ab & & _
    [3]Fm7/F & & _
    [3]Fm7/F & & _
}

note chords 1/8

grid bassline {
    [2]c__[2]c__[2]c_
    [1]ab__[1]ab__[1]ab_
    [1]f__[1]f__[1]f_
    [1]f__[1]f__[1]f_
}

// adjust mix (default: 1.0)
mix bassline 2.0
mix beat 1.2

We can run this file using this command:

breaker -s samples/ my_first_beat.br

License

GNU GPLv3

Dependencies

~6–39MB
~567K SLoC