https://github.com/slurmulon/bach
:musical_score: Semantic music notation
https://github.com/slurmulon/bach
audio beats chords jam music musical-loops notation scale semantic song
Last synced: 3 months ago
JSON representation
:musical_score: Semantic music notation
- Host: GitHub
- URL: https://github.com/slurmulon/bach
- Owner: slurmulon
- License: mit
- Created: 2016-08-31T06:26:53.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2023-10-27T15:28:47.000Z (over 1 year ago)
- Last Synced: 2025-03-19T05:24:50.292Z (3 months ago)
- Topics: audio, beats, chords, jam, music, musical-loops, notation, scale, semantic, song
- Language: Clojure
- Homepage: http://codebach.tech
- Size: 1.23 MB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# bach
> :musical_score: Semantic music notation
---
[](https://circleci.com/gh/slurmulon/bach)
[](https://npmjs.com/bach-cljs)
[](https://clojars.org/bach)## 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.
> :warning: The project is still considered experimental should **not** be used in production.
## Documentation
- **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/#/contributeBefore diving into the docs, please note that `bach` is a new data format, so naturally there is limited [tooling](https://codebach.tech/#/dev?id=tools) 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](https://codebach.tech/#/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.
> :musical_keyboard: Try running it in the [bach editor](https://editor.codebach.tech)!
```bach
@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](https://codebach.tech/#/examples) page of the documentation.
## License
MIT