Skip to content

slurmulon/bach

Repository files navigation

bach

🎼 Semantic music notation


build npm clojars

Introduction

bach is a semantic music notation designed to be both human and computer friendly.

Although its primary domain is music, bach enables the synchronization of rhythmic timelines with just about anything.

⚠️ The project is still considered experimental should not be used in production.

Documentation

Before diving into the docs, please note that bach is a new data format, so naturally there is limited tooling and integration support for it today.

But whether you're an adventerous musician or a developer exploring bach for their project, we advise that you read our Guide page since it provides the most comphrensive overview of bach available.

Example

The following bach data represents the loopable progression of a rock backing track.

🎹 Try running it in the bach editor!

@meter = 4|4
@tempo = 83

:A = [
  3/8 -> {
    scale('E aeolian')
    chord('Em9')
  }
  5/8 -> chord('C')
  3/8 -> chord('Em9')
  4/8 -> chord('C')
  9/8 -> chord('C/D')
]

:B = [
  3/8 -> chord('B')
  5/8 -> chord('Em9')
  1 -> chord('Em9')
]

:C = [
  3/8 -> chord('B')
  5/8 -> chord('G')
  1 -> chord('G')
]

play! [
  7 of :A
  2 of :B
  3 of [
    :C
    when !{ last? } do { :B }
  ]
  3/8 -> chord('B')
  5/8 -> chord('Em9')
  1 -> chord('B7b13')
]

You can find more examples of bach in the Examples page of the documentation.

License

MIT