Crates.io | chord-progression-parser |
lib.rs | chord-progression-parser |
version | 0.6.2 |
source | src |
created_at | 2023-11-22 17:24:42.222227 |
updated_at | 2024-05-22 17:31:32.213978 |
description | a converter from chord progression strings to AST |
homepage | |
repository | https://github.com/lainNao/chord-progression-parser |
max_upload_size | |
id | 1045375 |
size | 429,942 |
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
Rust
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);
}
JavaScript/TypeScript (using bundler, like Vite, or If you are using Next.js)
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);
JavaScript/TypeScript (server like Node.js, Bun)
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);
JavaScript(CDN)
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>