A converter from chord progression strings to AST built in Rust that outputs wasm, so it can be used from JavaScript too.
NOTE: This library releases multiple packages.
- Rust: https://crates.io/crates/chord-progression-parser
- JS/TS(bundler): https://www.npmjs.com/package/@lainnao/chord-progression-parser-bundler
- JS/TS(server): https://www.npmjs.com/package/@lainnao/chord-progression-parser-node
- JS(CDN): https://www.npmjs.com/package/@lainnao/chord-progression-parser-web
You can try it on CodeSandbox
- English
- Japanese
-
Install
cargo add chord-progression-parser
-
And use
use chord_progression_parser::parse_chord_progression_string; fn main() { let input: &str = " @section=Intro [key=E]E - C#m(7) - Bm(7) - C#(7) F#m(7) - Am(7) - F#(7) - B @section=Verse E - C#m(7) - Bm(7) - C#(7) F#m(7) - Am(7) - F#(7) - B "; let result = parse_chord_progression_string(input); println!("{:#?}", result); }
-
Install (example, use with
Vite
)npm install @lainnao/chord-progression-parser-bundler npm install -D vite-plugin-wasm
-
Edit
vite.config.js
import { defineConfig } from "vite"; import wasm from "vite-plugin-wasm"; export default defineConfig({ plugins: [wasm()], });
-
And use
import { parseChordProgressionString } from "@lainnao/chord-progression-parser-bundler/chord_progression_parser"; const result = parseChordProgressionString("C"); console.log(result);
-
Install
npm install @lainnao/chord-progression-parser-node
-
And use
import { parseChordProgressionString } from "@lainnao/chord-progression-parser-node/chord_progression_parser"; const result = parseChordProgressionString("C"); console.log(result);
-
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <h1>load wasm directly example</h1> <h2>parse C</h2> <pre id="result"></pre> <script type="module"> import * as mod from "https://cdn.jsdelivr.net/npm/@lainnao/chord-progression-parser-web@0.6.0/chord_progression_parser.js"; (async () => { // initialize wasm await mod.default(); // use const result = mod.parseChordProgressionString("C"); console.log(result); document.querySelector("#result").innerHTML = JSON.stringify( result, null, 2 ); })(); </script> </body> </html>