3.0.9 • Published 9 months ago

chord-transposer v3.0.9

Weekly downloads
13
License
MIT
Repository
github
Last release
9 months ago

Chord Transposer

Typescript library for transposing musical chords within text.

Usage

Install via npm:

npm install chord-transposer

Import the package using your preferred import syntax:

const Transposer = require('chord-transposer');

import * as Transposer from 'chord-transposer';

import { transpose, Chord, KeySignatures } from 'chord-transposer';

Transposing

To a certain key signature:

> Transposer.transpose(
"G        C           Am7            C        D7       G\n" +
"Saying I love you is not the words I want to hear from you").toKey('F').toString()
'F        Bb          Gm7            Bb       C7       F\n' +
'Saying I love you is not the words I want to hear from you'

up or down any number of semitones:

// Up 7 semitones.
> Transposer.transpose(
"G        C           Am7            C        D7       G\n" +
"Saying I love you is not the words I want to hear from you").up(7).toString()
'D        G           Em7            G        A7       D\n' +
'Saying I love you is not the words I want to hear from you'

// Down 4 semitones.
> Transposer.transpose(
"G        C           Am7            C        D7       G\n" +
"Saying I love you is not the words I want to hear from you").down(4).toString()
'Eb       Ab          Fm7            Ab       Bb7      Eb\n' +
'Saying I love you is not the words I want to hear from you'

Auto Key Signature

If the key signature is not specified, the key will be inferred from the first chord.

> Transposer.transpose('F  C7 Bb').toKey('D').toString()
'D  A7 G'

> Transposer.transpose('Fm  C Ab').toKey('Dm').toString()
'Dm  A F'

Supported Chords

> Transposer.transpose('A Bmaj CM Dm/F E7/G# Gsus4').toKey('F').toString()
'F Gmaj AbM Bbm/Db C7/E  Ebsus4'

> Transposer.transpose('Abm Bbmin C- Ddim Ebaug F+ Gb+5').toKey('Dm').toString()
'Dm  Emin  Gb- Abdim Aaug  Cb+ C+5'

Parsing

When text is passed into transpose, it is parsed into Token[][] where Token = Chord | string. You can access these through tokens to parse however you like:

> Transposer.transpose('C  G  Am  G7/B  C    F  C   F   G7\n'+
                       'O Canada  Our home and native land').tokens
[
  [
    Chord { root: 'C', suffix: '', bass: undefined },
    '  ',
    Chord { root: 'G', suffix: '', bass: undefined },
    '  ',
    Chord { root: 'A', suffix: 'm', bass: undefined },
    '  ',
    Chord { root: 'G', suffix: '7', bass: 'B' },
    '  ',
    Chord { root: 'C', suffix: '', bass: undefined },
    '    ',
    Chord { root: 'F', suffix: '', bass: undefined },
    '  ',
    Chord { root: 'C', suffix: '', bass: undefined },
    '   ',
    Chord { root: 'F', suffix: '', bass: undefined },
    '   ',
    Chord { root: 'G', suffix: '7', bass: undefined }
  ],
  [ 'O Canada  Our home and native land' ]
]

You can also parse individual chords:

> const Transposer = require('chord-transposer')
> Transposer.Chord.parse('Cm7/E')
Chord { root: 'C', suffix: 'm7', bass: 'E' }
3.0.9

9 months ago

3.0.4

9 months ago

3.0.3

9 months ago

3.0.8

9 months ago

3.0.1

3 years ago

3.0.0

3 years ago

2.5.2

3 years ago

2.5.1

3 years ago

2.4.0

3 years ago

2.3.2

3 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.1

4 years ago

2.0.2

5 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.4.0

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.0

7 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago