|
1 | | -# notation |
| 1 | +# Fun Notation |
2 | 2 |
|
3 | | -## DSL for notation writing, using proc-macro to write tabs easily |
| 3 | +## What's the idea? |
4 | 4 |
|
5 | | -- https://github.com/dtolnay/syn |
6 | | -- https://github.com/dtolnay/proc-macro-workshop |
7 | | -- https://github.com/korken89/smlang-rs |
8 | | -- https://blog.logrocket.com/macros-in-rust-a-tutorial-with-examples/ |
| 5 | +This is my experimentation on musical notations. |
9 | 6 |
|
| 7 | +Want to create some applications to help me to visualize music, practice easier, and provide nicer way to show scores or tabs. |
10 | 8 |
|
11 | | -# project template for web and native |
| 9 | +Some of current tried ideas: |
12 | 10 |
|
13 | | -- https://bevy-cheatbook.github.io/platforms/wasm/cargo-make.html |
14 | | -- https://github.com/mrk-its/bevy_webgl2_app_template |
| 11 | +### Colors for notes |
15 | 12 |
|
16 | | -# Todo |
| 13 | +Colors are based on the relative notation. |
17 | 14 |
|
18 | | -proc_macro performance issue |
| 15 | +(TODO: need more explanation and an image here) |
| 16 | + |
| 17 | +### Color and shapes for chords |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +(TODO: need more explanation) |
| 22 | + |
| 23 | +### Guitar tabs to show both pitch and durations for notes |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +(TODO: need more explanation) |
| 28 | + |
| 29 | +## What's implemented? |
| 30 | + |
| 31 | +### Guitar Tab + Melody + Lyrics |
| 32 | + |
| 33 | +Features: |
| 34 | + |
| 35 | +- audio for each notes, sound quality not good enough (esp. in browser) |
| 36 | +- guitar fretboard synced with current played notes |
| 37 | +- A/B repeat for selected bars |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | +[Watch on Youtube](https://youtu.be/vxXcNSpCZ5Y) |
| 43 | + |
| 44 | +[Try in browser](https://www.amateurguitar.com/songs/scarborough-fair/) |
| 45 | +Note that the web version is only working in desktop browser, the touch input is not working on mobile browsers yet. |
| 46 | + |
| 47 | +Desktop versions will be released later. |
| 48 | + |
| 49 | +You can also build it by yourself, make sure follow the [Bevy Engine Setup](https://bevyengine.org/learn/book/getting-started/setup/) first. |
| 50 | +``` |
| 51 | +cd app/notation_viewer |
| 52 | +cargo run --features native |
| 53 | +``` |
| 54 | + |
| 55 | +## How it's built? |
| 56 | + |
| 57 | +The current version is writted in [Rust](https://www.rust-lang.org), on top of [Bevy Engine](https://bevyengine.org), started as a demo to learn both the language and the game engine, but got much progress and show some potentials quickly. |
| 58 | + |
| 59 | +At this moment, there is no visual editor yet, instead a DSL in Rust is created to write tabs (also serving learning purpose at the first place), it's far from perfect, and got me quite some headaches some time, but did learned a lot, and some part of it is really nice. Plan to write some blogposts later on this topic. |
| 60 | + |
| 61 | +## What's the plan? |
| 62 | + |
| 63 | +Will try to make the guitar tab part useful for myself first, do more experiments on visual representation for music, then maybe release some applications or maybe games in the future. |
| 64 | + |
| 65 | +---- |
| 66 | +## Some Inspirations |
| 67 | + |
| 68 | +### [Chromesthesia Color for Notes](https://en.wikipedia.org/wiki/Chromesthesia) |
| 69 | + |
| 70 | +Most colorful notation systems using rainbow colors for notes, but I found this chromesthesia system is much better for me to feel the music, especially when apply the colors to chords. |
| 71 | + |
| 72 | + |
| 73 | +### [Hook Theory](https://www.hooktheory.com/) |
| 74 | + |
| 75 | +This is really awesome, have tons of materials for music learning, also has a very powerful web application. |
| 76 | + |
| 77 | +### [Groove Pizza](https://apps.musedlab.org/groovepizza/?museid=qD-Y91QD3&) |
| 78 | + |
| 79 | +Very nice web application to visualize rhythm. |
19 | 80 |
|
20 | | -- https://github.com/rust-lang/rust/issues/65080 |
|
0 commit comments