🎼 Semantic music notation
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.
- Home: https://codebach.tech
- Guide: https://codebach.tech/#/guide
- Examples: https://codebach.tech/#/examples
- Syntax: https://codebach.tech/#/syntax
- Development: https://codebach.tech/#/dev
- Contribute: https://codebach.tech/#/contribute
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.
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.
MIT