ju-solfege
v1.0.8
Published
Ju Solfège Chromatic — A fixed-doh chromatic solfège system invented by Paisan Chamnong (JiewJumnong). Sharps use the 'i' vowel, flats use the 'u' vowel. Designed for music education and AI singing voice synthesis.
Downloads
48
Maintainers
Readme
Ju Solfège Chromatic
A chromatic solfège system where sharps use the vowel 'i' and flats use the vowel 'u'. Created by Paisan Chamnong (JiewJumnong), 2025.
What is Ju Solfège?
Ju Solfège Chromatic is a fixed-doh solfège system designed for the full 12-tone chromatic scale. It extends the standard 7-note diatonic solfège (Do Re Mi Fa Sol La Ti) with a single, memorable rule for accidentals:
| Direction | Rule | Vowel | |-----------|------|-------| | Sharp ♯ | Replace the main vowel with i | Di, Ri, Fi, Si, Li | | Flat ♭ | Replace the main vowel with u | Ru, Mu, Su, Lu, Tu |
This makes the system easy to remember, phonetically distinct, and suitable for AI singing voice synthesis (SVS) engines.
The 12-Tone Chromatic Scale
| MIDI | Pitch | Ju ♯ | Ju ♭ | Ju Alt ♯ | Ju Alt ♭ | American | British | |------|-------|------|------|----------|----------|----------|---------| | 0 mod 12 | C | Do | Do | Doh | Doh | Do | Doh | | 1 mod 12 | C# | Di | — | di | — | Di | Di | | 1 mod 12 | Db | — | Ru | — | ru | Ra | Raw | | 2 mod 12 | D | Re | Re | Re | Re | Re | Ray | | 3 mod 12 | D# | Ri | — | ri | — | Ri | Ri | | 3 mod 12 | Eb | — | Mu | — | mu | Me | Maw | | 4 mod 12 | E | Mi | Mi | Mi | Mi | Mi | Me | | 5 mod 12 | F | Fa | Fa | Fah | Fah | Fa | Fah | | 6 mod 12 | F# | Fi | — | fi | — | Fi | Fi | | 6 mod 12 | Gb | — | Su | — | su | Se | Saw | | 7 mod 12 | G | Sol | Sol | Sol | Sol | Sol | Soh | | 8 mod 12 | G# | Si | — | si | — | Si | Si | | 8 mod 12 | Ab | — | Lu | — | lu | Le | Law | | 9 mod 12 | A | La | La | Lah | Lah | La | Lah | | 10 mod 12 | A# | Li | — | li | — | Li | Li | | 10 mod 12 | Bb | — | Tu | — | tu | Te | Taw | | 11 mod 12 | B | Ti | Ti | Ti | Ti | Ti | Ti |
Why Ju Solfège?
- One rule:
sharp → i,flat → u— no memorization needed for each accidental - Phonetically distinct: Every chromatic note sounds unique when sung
- SVS-optimized: Designed for use in AI Singing Voice Synthesis (Singeria SVS Engine)
- Language-neutral: Works in any language as syllables are universal
- Beginner-friendly: Learners can derive any chromatic name from the diatonic base
Installation
npm install ju-solfegeOr use via CDN (browser):
<script src="https://cdn.jsdelivr.net/npm/ju-solfege/index.js"></script>Usage
Node.js / CommonJS
const { juSolfege, toSolfege, labelMelody, chromaticScale } = require('ju-solfege');
// MIDI → Ju Solfège
juSolfege(61); // "Di" (C#4, sharp variant)
juSolfege(61, 'flat'); // "Ru" (Db4, flat variant)
juSolfege(61, 'sharp', true); // "Di4" (with octave)
// Multi-system conversion
toSolfege(63, 'ju_sharp'); // "Ri"
toSolfege(63, 'ju_flat'); // "Mu"
toSolfege(63, 'american'); // "Ri"
toSolfege(63, 'british'); // "Ri"
toSolfege(60, 'thai'); // "โด"
// Label a melody
labelMelody([60, 62, 64, 65, 67, 69, 71, 72]);
// => ['Do', 'Re', 'Mi', 'Fa', 'Sol', 'La', 'Ti', 'Do']
// Full chromatic scale from C4
chromaticScale(60, 'sharp');
// => [
// { midi: 60, syllable: 'Do', pitch: 'C4' },
// { midi: 61, syllable: 'Di', pitch: 'C#4' },
// { midi: 62, syllable: 'Re', pitch: 'D4' },
// ...
// ]Browser
<script src="ju-solfege/index.js"></script>
<script>
const { juSolfege, toSolfege } = window.JuSolfege;
console.log(juSolfege(61)); // "Di"
console.log(toSolfege(66, 'ju_flat')); // "Su"
</script>API Reference
juSolfege(midi, variant?, octave?)
Convert a MIDI note number to Ju Solfège.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| midi | number | — | MIDI note number (0–127) |
| variant | 'sharp'\|'flat' | 'sharp' | Sharp or flat variant |
| octave | boolean | false | Append octave number |
toSolfege(midi, system?, octave?)
Convert MIDI to any solfège system.
| System value | Description |
|---|---|
| 'ju_sharp' | Ju Solfège — sharp variant |
| 'ju_flat' | Ju Solfège — flat variant |
| 'american' | American Fixed-doh Chromatic |
| 'british' | British Tonic Sol-fa |
| 'thai' | Thai Solfège |
| 'western' | Western Do Re Mi |
| 'num' | Jianpu / Numeric |
| 'pitch' | Western pitch name (C4, D#5…) |
labelMelody(midiArray, variant?, octave?)
Convert an array of MIDI numbers to syllables.
chromaticScale(rootMidi?, variant?)
Generate full 12-note chromatic scale from a root.
fromNoteName(noteName, variant?)
Convert a note name string ("C#4", "Bb3") to Ju Solfège.
Comparison with Other Systems
| Note | Ju ♯ | Ju ♭ | Ju Alt ♯ | Ju Alt ♭ | TUE (-ue) | TIA (-ia) | TUEA (-uea) | TUA (-ua) | American | British |
|------|------|------|----------|----------|-------------|-------------|---------------|-------------|----------|---------|
| C | Do | Do | Doh | Doh | Do | Do | Do | Do | Do | Doh |
| C# | Di | — | di | — | — | — | — | — | Di | Di |
| Db | — | Ru | — | ru | Rue | Ria | Ruea | Rua | Ra | Raw |
| D | Re | Re | Re | Re | Re | Re | Re | Re | Re | Ray |
| D# | Ri | — | ri | — | — | — | — | — | Ri | Ri |
| Eb | — | Mu | — | mu | Mue | Mia | Muea | Mua | Me | Maw |
| E | Mi | Mi | Mi | Mi | Mi | Mi | Mi | Mi | Mi | Me |
| F | Fa | Fa | Fah | Fah | Fa | Fa | Fa | Fa | Fa | Fah |
| F# | Fi | — | fi | — | — | — | — | — | Fi | Fi |
| Gb | — | Su | — | su | Sue | Sia | Suea | Sua | Se | Saw |
| G | Sol | Sol | Sol | Sol | Sol | Sol | Sol | Sol | Sol | Soh |
| G# | Si | — | si | — | — | — | — | — | Si | Si |
| Ab | — | Lu | — | lu | Lue | Lia | Luea | Lua | Le | Law |
| A | La | La | Lah | Lah | La | La | La | La | La | Lah |
| A# | Li | — | li | — | — | — | — | — | Li | Li |
| Bb | — | Tu | — | tu | Tue | Tia | Tuea | Tua | Te | Taw |
| B | Ti | Ti | Ti | Ti | Ti | Ti | Ti | Ti | Ti | Ti |
🇹🇭 Thai Phonetic Extensions for SVS
For developers working with Singing Voice Synthesis (SVS) or AI vocal generation, an official phonetic extension case study has been published. This extension establishes the use of Thai long vowels (-ue, -ia, -uea, -ua) as alternatives for descending flats in order to improve formant resonance and natural phonation.
👉 Read the Official Thai Vowel Case Study & Usage Terms (THAI_EXTENSION.md)
Applications
- AI Singing Voice Synthesis (SVS) — Used in Singeria SVS Engine
- Music Education — Chromatic solfège for students
- MIDI Tools — Automatic lyric generation from MIDI files
- Music Notation Software — Label notes with solfège
Integration with Singeria
This library is built into Singeria SVS:
// In Singeria Piano Roll — label all notes with Ju Solfège
singeriaRunCmd('labelSolfege', { mode: 'ju_sharp' });
singeriaRunCmd('labelSolfege', { mode: 'ju_flat' });Author & Copyright
Inventor: Paisan Chamnong (JiewJumnong) Year: 2025 Copyright: © 2025 Paisan Chamnong (JiewJumnong) License: MIT
The Ju Solfège Chromatic system — specifically its rule of using vowel 'i' for sharps and 'u' for flats as applied to fixed-doh chromatic solfège — is an original intellectual contribution by Paisan Chamnong.
Contributing
Contributions, translations, and applications of Ju Solfège are welcome. Please open an issue or pull request on GitHub.
License
MIT — see LICENSE
