adding-scales-chords
Use when adding new scales, modes, or chord types to MusicTheory - ensures correct interval math, proper categorization, and sharp/flat preferences based on music theory conventions
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Adding Scales and Chords
Overview
Scales and chords in this project are defined by their interval structure (semitones from root). Getting intervals wrong breaks the entire musical representation.
Core principle: Verify intervals against authoritative music theory sources before implementing.
When to Use
- Adding a new scale or mode
- Adding a new chord type
- Modifying existing scale/chord intervals
- Creating a new category of scales/chords
Interval System
Intervals are semitones from root note (0-11):
| Interval Name | Semitones | Example from C |
|---|---|---|
| Unison (Root) | 0 | C |
| Minor 2nd | 1 | Db |
| Major 2nd | 2 | D |
| Minor 3rd | 3 | Eb |
| Major 3rd | 4 | E |
| Perfect 4th | 5 | F |
| Tritone | 6 | F#/Gb |
| Perfect 5th | 7 | G |
| Minor 6th | 8 | Ab |
| Major 6th | 9 | A |
| Minor 7th | 10 | Bb |
| Major 7th | 11 | B |
Adding a Scale
Location
client/src/app/services/music-theory.service.ts in the appropriate category within UNIFIED_CATEGORIES
Structure
{
id: 'scale-name-lowercase',
name: 'Display Name',
intervals: [0, 2, 4, 5, 7, 9, 11], // Semitones from root
preferSharps: true, // Sharp or flat key signature
type: 'scale' as const
}
preferSharps Rules
| Key Center | preferSharps | Reason |
|---|---|---|
| Major scales (C, G, D, A, E, B) | true | Natural sharps in key signature |
| Flat keys (F, Bb, Eb, Ab) | false | Natural flats in key signature |
| Minor scales | Match relative major | |
| Modes | Match parent scale | |
| Exotic scales | true (default) | Unless traditionally notated with flats |
Common Scale Intervals
// Diatonic Modes (from major scale)
Ionian: [0, 2, 4, 5, 7, 9, 11] // Major
Dorian: [0, 2, 3, 5, 7, 9, 10]
Phrygian: [0, 1, 3, 5, 7, 8, 10]
Lydian: [0, 2, 4, 6, 7, 9, 11]
Mixolydian: [0, 2, 4, 5, 7, 9, 10]
Aeolian: [0, 2, 3, 5, 7, 8, 10] // Natural Minor
Locrian: [0, 1, 3, 5, 6, 8, 10]
// Common Variations
Harmonic Minor: [0, 2, 3, 5, 7, 8, 11]
Melodic Minor: [0, 2, 3, 5, 7, 9, 11]
Pentatonic Maj: [0, 2, 4, 7, 9]
Pentatonic Min: [0, 3, 5, 7, 10]
Blues: [0, 3, 5, 6, 7, 10]
Adding a Chord
Location
Same file, chord categories within UNIFIED_CATEGORIES
Structure
{
id: 'chord-name-lowercase',
name: 'Display Name',
intervals: [0, 4, 7], // Semitones from root
symbol: 'maj', // Chord symbol suffix
preferSharps: true,
type: 'chord' as const
}
Common Chord Intervals
// Triads
Major: [0, 4, 7]
Minor: [0, 3, 7]
Diminished: [0, 3, 6]
Augmented: [0, 4, 8]
Sus2: [0, 2, 7]
Sus4: [0, 5, 7]
// Seventh Chords
Major 7th: [0, 4, 7, 11]
Dominant 7th: [0, 4, 7, 10]
Minor 7th: [0, 3, 7, 10]
Diminished 7th: [0, 3, 6, 9]
Half-Dim 7th: [0, 3, 6, 10]
// Extended Chords
Major 9th: [0, 4, 7, 11, 14] // Note: 14 = 2 + 12 (2nd + octave)
Dominant 9th: [0, 4, 7, 10, 14]
Verification Checklist
Before committing any scale/chord addition:
- Intervals verified against music theory reference (not memory)
- Root note (0) is first in array
- Intervals are in ascending order
- No duplicate intervals
- preferSharps matches convention
- Type discriminator is correct ('scale' or 'chord')
- ID is lowercase with hyphens
- Name is proper display case
- Symbol (for chords) follows standard notation
- Tested by selecting in UI and verifying note display
Common Mistakes
| Mistake | Impact | Prevention |
|---|---|---|
| Wrong mode intervals | Completely wrong notes displayed | Verify against reference |
| Missing root (0) | Scale doesn't start on root | Always include 0 first |
| Intervals > 11 | Works but inconsistent | Use 0-11, extended intervals wrap |
| Wrong preferSharps | Enharmonic confusion (C# vs Db) | Check key signature conventions |
Quick Test
After adding, select the new scale/chord in the UI:
- Set root to C
- Verify notes match expected (C major = C D E F G A B)
- Set root to F# - verify sharps/flats display correctly
- Play through to hear if it sounds correct
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!