Musical scale generator
C major comes out as C D E F G A B with the pattern whole, whole, half, whole, whole, whole, half: pick a root such as F sharp or B flat and a scale type to get every note spelled the way a teacher expects. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Root
- C
- Scale
- major
- Scale input
- major
- Note count
- 7
- Interval pattern
- W-W-H-W-W-W-H
A musical scale is an ordered set of pitches built from a root note and a fixed pattern of whole and half steps. Students, songwriters, and ear-training apps constantly need the note list for C major, A natural minor, D dorian, G mixolydian, F sharp major pentatonic, or the blues scale starting on E, and they need that list spelled consistently every time. This musical scale generator accepts a root such as C, F sharp, or B flat and a scale type such as major, natural minor, harmonic minor, melodic minor, a church mode, major or minor pentatonic, blues, whole tone, or chromatic, then returns the spelled notes, degree table, semitone steps from the root, and a whole-half interval pattern.
How a root and scale type become a note list
Western equal temperament divides the octave into twelve semitones. Each letter A through G has a base pitch class on that circle: C is zero, D is two, E is four, F is five, G is seven, A is nine, and B is eleven. Accidentals shift the class by whole semitones before the value is reduced modulo twelve.
For seven-note diatonic families the generator walks consecutive letter names from the root and attaches the accidental that hits each target pitch class, so C major spells C D E F G A B and F sharp major carries the expected sharps rather than a random mix of flats. Non-diatonic scales use sharp or flat chromatic tables chosen from the root spelling so E flat blues stays readable for flat-key players.
Where musical scale generators show up in real work
Music theory classes assign scale spelling drills, key-signature checks, and mode identification every week; a single trusted oracle that returns both the note list and the interval pattern speeds grading and demo setup without arguing about enharmonic choices. Songwriters exploring a progression need a quick, correct list of available tones in D dorian or B flat major before they invent a melody that fights the harmony.
Ear-training and mobile practice apps require a deterministic backend so progressive lessons never disagree with the classroom chalkboard on whether F sharp major includes E sharp. If you later need the interval between two arbitrary notes, full chord-quality analysis, just-intonation ratios, or MIDI file rewriting, treat those as separate search intents and landings rather than overloading this musical scale generator page; the sibling musical interval calculator covers two-note distances under a different SEO term.
What you can do with it
Theory homework and answer keys
Generate spelled note lists and W/H patterns for textbook roots and modes so teachers and auto-graders share one ground truth.
Practice-sheet and warm-up builders
Fill guitar, piano, or voice warm-up sheets for a chosen root and scale type without hand-writing accidentals.
Songwriting and mode exploration
List available tones in dorian, mixolydian, blues, or pentatonic collections before drafting a melody or solo.
FAQ
Which scale types are supported?
Major (ionian), natural minor (aeolian), harmonic minor, melodic minor, dorian, phrygian, lydian, mixolydian, locrian, major pentatonic, minor pentatonic, blues, whole tone, and chromatic.
What root spellings can I enter?
Letters A–G with optional accidentals (#, b, x, ##, bb, ♯, ♭), for example C, F#, Bb, or Eb. Optional octave digits are accepted and ignored for spelling.
How is C major different from A minor?
They share pitch classes but start on different roots and use different degree orderings: C major is C D E F G A B; A natural minor is A B C D E F G. The response always begins on the root you requested.
Are enharmonic roots treated the same?
Pitch class is the same for C# and Db, so interval steps match, but spelling follows the root you typed (sharp-side vs flat-side tables and diatonic letter walk from that letter).
What does it cost?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/scale-notes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"root":"C","scale":"major"}'const res = await fetch("https://api.kit.forhosting.com/hobby/scale-notes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"root": "C",
"scale": "major"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/scale-notes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"root": "C",
"scale": "major"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/scale-notes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"root":"C","scale":"major"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"root":"C","scale":"major"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/scale-notes", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"root": "C",
"scale": "major"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.scale_notes",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Unrecognized scale types and illegal note spellings fail with a clear invalid_input error instead of inventing a bogus collection of pitches.
How a root and scale type become a note list
A scale type is nothing more than a frozen list of offsets from that root: major (ionian) uses zero, two, four, five, seven, nine, and eleven; natural minor (aeolian) flattens the third, sixth, and seventh relative to major; dorian, phrygian, lydian, mixolydian, and locrian rotate the same diatonic material to different starting degrees; harmonic and melodic minor raise selected degrees; major and minor pentatonic drop two notes; blues inserts the classic flat five; whole tone steps by two throughout; chromatic walks every semitone. The entire pipeline is pure deterministic arithmetic: no random seeds, no wall-clock timestamps, no network calls, and no model drift, so the same root and scale type always produce the same JSON. Empty fields, bare numbers as roots, letters outside A through G, and scale names outside the catalog fail early with invalid_input naming the problem so clients can highlight the bad field without guessing.
What you send and what you get back
Send root as a note string and scale as a type string. Root may be a bare pitch class such as C, F sharp written F#, B flat written Bb, or a double accidental such as C## or Dbb; an optional octave digit is accepted and ignored for spelling because a scale is pitch-class material, not a single MIDI register. Spaces, hyphens, and mixed case normalize to the same key, so Natural Minor and natural-minor both resolve. Classic checks include C major as C D E F G A B, A natural minor as A B C D E F G, G mixolydian with a flat seventh relative to G major, and E minor pentatonic as E G A B D. Scale accepts canonical names and common aliases: major or ionian, natural_minor or minor or aeolian, harmonic_minor, melodic_minor, dorian, phrygian, lydian, mixolydian, locrian, major_pentatonic, minor_pentatonic or pentatonic, blues, whole_tone, and chromatic. Aliases include tonic, note, and key for the root, and scale_type, mode, and scale_name for the type. Missing required fields, empty strings, unrecognized roots, and unrecognized scale types fail with invalid_input and are not charged. On success the response echoes the inputs, returns scale as the canonical catalog name, notes as the ordered list of spellings, degrees as objects with degree index, note, pitch class, and semitones from the root, plus note_count, intervals_semitones, a W/H style interval_pattern, method, and formula text for tests. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where musical scale generators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.