npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

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.

npm version License: MIT Tests


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?

  1. One rule: sharp → i, flat → u — no memorization needed for each accidental
  2. Phonetically distinct: Every chromatic note sounds unique when sung
  3. SVS-optimized: Designed for use in AI Singing Voice Synthesis (Singeria SVS Engine)
  4. Language-neutral: Works in any language as syllables are universal
  5. Beginner-friendly: Learners can derive any chromatic name from the diatonic base

Installation

npm install ju-solfege

Or 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