Closed Kirtai closed 1 year ago
It generally does a bass then chord accompaniment when it can on each beat. If there is something irregular it will just play chords on each beat. Each common time signature has a pattern that it will try to follow. For instance in 4/4 it will play root chord 5th chord
. In 3/4 it will play root chord chord
. However, if there are the wrong number of beats in a measure, or the chord changes in the middle of a measure it will just play chords.
The chords it currently recognizes are the following:
// diminished (all flat 5 chords)
'dim': [ 0, 3, 6 ],
'°': [ 0, 3, 6 ],
'˚': [ 0, 3, 6 ],
'dim7': [ 0, 3, 6, 9 ],
'°7': [ 0, 3, 6, 9 ],
'˚7': [ 0, 3, 6, 9 ],
'ø7': [ 0, 3, 6, 10 ],
'm7(b5)': [ 0, 3, 6, 10 ],
'm7b5': [ 0, 3, 6, 10 ],
'm7♭5': [ 0, 3, 6, 10 ],
'-7(b5)': [ 0, 3, 6, 10 ],
'-7b5': [ 0, 3, 6, 10 ],
'7b5': [ 0, 4, 6, 10 ],
'7(b5)': [ 0, 4, 6, 10 ],
'7♭5': [ 0, 4, 6, 10 ],
'7(b9,b5)': [ 0, 4, 6, 10, 13 ],
'7b9,b5': [ 0, 4, 6, 10, 13 ],
'7(#9,b5)': [ 0, 4, 6, 10, 15 ],
'7#9b5': [ 0, 4, 6, 10, 15 ],
'maj7(b5)': [ 0, 4, 6, 11 ],
'maj7b5': [ 0, 4, 6, 11 ],
'13(b5)': [ 0, 4, 6, 10, 14, 21 ],
'13b5': [ 0, 4, 6, 10, 14, 21 ],
// minor (all normal 5, minor 3 chords)
'm': [ 0, 3, 7 ],
'-': [ 0, 3, 7 ],
'm6': [ 0, 3, 7, 9 ],
'-6': [ 0, 3, 7, 9 ],
'm7': [ 0, 3, 7, 10 ],
'-7': [ 0, 3, 7, 10 ],
'-(b6)': [ 0, 3, 7, 8 ],
'-b6': [ 0, 3, 7, 8 ],
'-6/9': [ 0, 3, 7, 9, 14 ],
'-7(b9)': [ 0, 3, 7, 10, 13 ],
'-7b9': [ 0, 3, 7, 10, 13 ],
'-maj7': [ 0, 3, 7, 11 ],
'-9+7': [ 0, 3, 7, 11, 13 ],
'-11': [ 0, 3, 7, 11, 14, 17 ],
'm11': [ 0, 3, 7, 11, 14, 17 ],
'-maj9': [ 0, 3, 7, 11, 14 ],
'-∆9': [ 0, 3, 7, 11, 14 ],
'mM9': [ 0, 3, 7, 11, 14 ],
// major (all normal 5, major 3 chords)
'M': [ 0, 4, 7 ],
'6': [ 0, 4, 7, 9 ],
'6/9': [ 0, 4, 7, 9, 14 ],
'6add9': [ 0, 4, 7, 9, 14 ],
'69': [ 0, 4, 7, 9, 14 ],
'7': [ 0, 4, 7, 10 ],
'9': [ 0, 4, 7, 10, 14 ],
'11': [ 0, 7, 10, 14, 17 ],
'13': [ 0, 4, 7, 10, 14, 21 ],
'7b9': [ 0, 4, 7, 10, 13 ],
'7♭9': [ 0, 4, 7, 10, 13 ],
'7(b9)': [ 0, 4, 7, 10, 13 ],
'7(#9)': [ 0, 4, 7, 10, 15 ],
'7#9': [ 0, 4, 7, 10, 15 ],
'(13)': [ 0, 4, 7, 10, 14, 21 ],
'7(9,13)': [ 0, 4, 7, 10, 14, 21 ],
'7(#9,b13)': [ 0, 4, 7, 10, 15, 20 ],
'7(#11)': [ 0, 4, 7, 10, 14, 18 ],
'7#11': [ 0, 4, 7, 10, 14, 18 ],
'7(b13)': [ 0, 4, 7, 10, 20 ],
'7b13': [ 0, 4, 7, 10, 20 ],
'9(#11)': [ 0, 4, 7, 10, 14, 18 ],
'9#11': [ 0, 4, 7, 10, 14, 18 ],
'13(#11)': [ 0, 4, 7, 10, 18, 21 ],
'13#11': [ 0, 4, 7, 10, 18, 21 ],
'maj7': [ 0, 4, 7, 11 ],
'∆7': [ 0, 4, 7, 11 ],
'Δ7': [ 0, 4, 7, 11 ],
'maj9': [ 0, 4, 7, 11, 14 ],
'maj7(9)': [ 0, 4, 7, 11, 14 ],
'maj7(11)': [ 0, 4, 7, 11, 17 ],
'maj7(#11)': [ 0, 4, 7, 11, 18 ],
'maj7(13)': [ 0, 4, 7, 14, 21 ],
'maj7(9,13)': [ 0, 4, 7, 11, 14, 21 ],
'7sus4': [ 0, 5, 7, 10 ],
'm7sus4': [ 0, 3, 7, 10, 17 ],
'sus4': [ 0, 5, 7 ],
'sus2': [ 0, 2, 7 ],
'7sus2': [ 0, 2, 7, 10 ],
'9sus4': [ 0, 5, 7, 10, 14 ],
'13sus4': [ 0, 5, 7, 10, 14, 21 ],
// augmented (all sharp 5 chords)
'aug7': [ 0, 4, 8, 10 ],
'+7': [ 0, 4, 8, 10 ],
'+': [ 0, 4, 8 ],
'7#5': [ 0, 4, 8, 10 ],
'7♯5': [ 0, 4, 8, 10 ],
'7+5': [ 0, 4, 8, 10 ],
'9#5': [ 0, 4, 8, 10, 14 ],
'9♯5': [ 0, 4, 8, 10, 14 ],
'9+5': [ 0, 4, 8, 10, 14 ],
'-7(#5)': [ 0, 3, 8, 10 ],
'-7#5': [ 0, 3, 8, 10 ],
'7(#5)': [ 0, 4, 8, 10 ],
'7(b9,#5)': [ 0, 4, 8, 10, 13 ],
'7b9#5': [ 0, 4, 8, 10, 13 ],
'maj7(#5)': [ 0, 4, 8, 11 ],
'maj7#5': [ 0, 4, 8, 11 ],
'maj7(#5,#11)': [ 0, 4, 8, 11, 18 ],
'maj7#5#11': [ 0, 4, 8, 11, 18 ],
'9(#5)': [ 0, 4, 8, 10, 14 ],
'13(#5)': [ 0, 4, 8, 10, 14, 21 ],
'13#5': [ 0, 4, 8, 10, 14, 21 ]
It plays the bass notes in a set octave, from MIDI number 32 to 44.
The chords start one octave above the bass note and are always stacked with the root on the bottom.
I don't know if this is what you were asking but I can clarify it more if you need.
Thanks, that's pretty much what I was looking for :)
Is it possible to override the bass, chord, base, chord for 4/4 to get an accentless strum and similarly for 6/8 etc?
On Mon, 9 Jan 2023, 06:30 Paul Rosen, @.***> wrote:
It generally does a bass then chord accompaniment when it can on each beat. If there is something irregular it will just play chords on each beat. Each common time signature has a pattern that it will try to follow. For instance in 4/4 it will play root chord 5th chord. In 3/4 it will play root chord chord. However, if there are the wrong number of beats in a measure, or the chord changes in the middle of a measure it will just play chords.
The chords it currently recognizes are the following:
// diminished (all flat 5 chords)
'dim': [ 0, 3, 6 ],
'°': [ 0, 3, 6 ],
'˚': [ 0, 3, 6 ],
'dim7': [ 0, 3, 6, 9 ],
'°7': [ 0, 3, 6, 9 ],
'˚7': [ 0, 3, 6, 9 ],
'ø7': [ 0, 3, 6, 10 ],
'm7(b5)': [ 0, 3, 6, 10 ],
'm7b5': [ 0, 3, 6, 10 ],
'm7♭5': [ 0, 3, 6, 10 ],
'-7(b5)': [ 0, 3, 6, 10 ],
'-7b5': [ 0, 3, 6, 10 ],
'7b5': [ 0, 4, 6, 10 ],
'7(b5)': [ 0, 4, 6, 10 ],
'7♭5': [ 0, 4, 6, 10 ],
'7(b9,b5)': [ 0, 4, 6, 10, 13 ],
'7b9,b5': [ 0, 4, 6, 10, 13 ],
'7(#9,b5)': [ 0, 4, 6, 10, 15 ],
'7#9b5': [ 0, 4, 6, 10, 15 ],
'maj7(b5)': [ 0, 4, 6, 11 ],
'maj7b5': [ 0, 4, 6, 11 ],
'13(b5)': [ 0, 4, 6, 10, 14, 21 ],
'13b5': [ 0, 4, 6, 10, 14, 21 ],
// minor (all normal 5, minor 3 chords)
'm': [ 0, 3, 7 ],
'-': [ 0, 3, 7 ],
'm6': [ 0, 3, 7, 9 ],
'-6': [ 0, 3, 7, 9 ],
'm7': [ 0, 3, 7, 10 ],
'-7': [ 0, 3, 7, 10 ],
'-(b6)': [ 0, 3, 7, 8 ],
'-b6': [ 0, 3, 7, 8 ],
'-6/9': [ 0, 3, 7, 9, 14 ],
'-7(b9)': [ 0, 3, 7, 10, 13 ],
'-7b9': [ 0, 3, 7, 10, 13 ],
'-maj7': [ 0, 3, 7, 11 ],
'-9+7': [ 0, 3, 7, 11, 13 ],
'-11': [ 0, 3, 7, 11, 14, 17 ],
'm11': [ 0, 3, 7, 11, 14, 17 ],
'-maj9': [ 0, 3, 7, 11, 14 ],
'-∆9': [ 0, 3, 7, 11, 14 ],
'mM9': [ 0, 3, 7, 11, 14 ],
// major (all normal 5, major 3 chords)
'M': [ 0, 4, 7 ],
'6': [ 0, 4, 7, 9 ],
'6/9': [ 0, 4, 7, 9, 14 ],
'6add9': [ 0, 4, 7, 9, 14 ],
'69': [ 0, 4, 7, 9, 14 ],
'7': [ 0, 4, 7, 10 ],
'9': [ 0, 4, 7, 10, 14 ],
'11': [ 0, 7, 10, 14, 17 ],
'13': [ 0, 4, 7, 10, 14, 21 ],
'7b9': [ 0, 4, 7, 10, 13 ],
'7♭9': [ 0, 4, 7, 10, 13 ],
'7(b9)': [ 0, 4, 7, 10, 13 ],
'7(#9)': [ 0, 4, 7, 10, 15 ],
'7#9': [ 0, 4, 7, 10, 15 ],
'(13)': [ 0, 4, 7, 10, 14, 21 ],
'7(9,13)': [ 0, 4, 7, 10, 14, 21 ],
'7(#9,b13)': [ 0, 4, 7, 10, 15, 20 ],
'7(#11)': [ 0, 4, 7, 10, 14, 18 ],
'7#11': [ 0, 4, 7, 10, 14, 18 ],
'7(b13)': [ 0, 4, 7, 10, 20 ],
'7b13': [ 0, 4, 7, 10, 20 ],
'9(#11)': [ 0, 4, 7, 10, 14, 18 ],
'9#11': [ 0, 4, 7, 10, 14, 18 ],
'13(#11)': [ 0, 4, 7, 10, 18, 21 ],
'13#11': [ 0, 4, 7, 10, 18, 21 ],
'maj7': [ 0, 4, 7, 11 ],
'∆7': [ 0, 4, 7, 11 ],
'Δ7': [ 0, 4, 7, 11 ],
'maj9': [ 0, 4, 7, 11, 14 ],
'maj7(9)': [ 0, 4, 7, 11, 14 ],
'maj7(11)': [ 0, 4, 7, 11, 17 ],
'maj7(#11)': [ 0, 4, 7, 11, 18 ],
'maj7(13)': [ 0, 4, 7, 14, 21 ],
'maj7(9,13)': [ 0, 4, 7, 11, 14, 21 ],
'7sus4': [ 0, 5, 7, 10 ],
'm7sus4': [ 0, 3, 7, 10, 17 ],
'sus4': [ 0, 5, 7 ],
'sus2': [ 0, 2, 7 ],
'7sus2': [ 0, 2, 7, 10 ],
'9sus4': [ 0, 5, 7, 10, 14 ],
'13sus4': [ 0, 5, 7, 10, 14, 21 ],
// augmented (all sharp 5 chords)
'aug7': [ 0, 4, 8, 10 ],
'+7': [ 0, 4, 8, 10 ],
'+': [ 0, 4, 8 ],
'7#5': [ 0, 4, 8, 10 ],
'7♯5': [ 0, 4, 8, 10 ],
'7+5': [ 0, 4, 8, 10 ],
'9#5': [ 0, 4, 8, 10, 14 ],
'9♯5': [ 0, 4, 8, 10, 14 ],
'9+5': [ 0, 4, 8, 10, 14 ],
'-7(#5)': [ 0, 3, 8, 10 ],
'-7#5': [ 0, 3, 8, 10 ],
'7(#5)': [ 0, 4, 8, 10 ],
'7(b9,#5)': [ 0, 4, 8, 10, 13 ],
'7b9#5': [ 0, 4, 8, 10, 13 ],
'maj7(#5)': [ 0, 4, 8, 11 ],
'maj7#5': [ 0, 4, 8, 11 ],
'maj7(#5,#11)': [ 0, 4, 8, 11, 18 ],
'maj7#5#11': [ 0, 4, 8, 11, 18 ],
'9(#5)': [ 0, 4, 8, 10, 14 ],
'13(#5)': [ 0, 4, 8, 10, 14, 21 ],
'13#5': [ 0, 4, 8, 10, 14, 21 ]
It plays the bass notes in a set octave, from MIDI number 32 to 44.
The chords start one octave above the bass note and are always stacked with the root on the bottom.
I don't know if this is what you were asking but I can clarify it more if you need.
— Reply to this email directly, view it on GitHub https://github.com/paulrosen/abcjs/issues/865#issuecomment-1374887146, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABL6VKJ7VNC6WCN2JPEMP3DWRL2URANCNFSM6AAAAAATJJ24LA . You are receiving this because you are subscribed to this thread.Message ID: @.***>
There's not a built in way, yet, but I'd like functionality like that, too.
But what you can do is modify the output before it goes to the synth by specifying a sequenceCallback
. https://paulrosen.github.io/abcjs/audio/synthesized-sound.html#init-synthoptions. You have to read through the passed in array of values and replace the bass notes with full chords.
Thanks for the pointer.
I interrupted the closing of this Issue so I guess it can be closed now.
On Tue, 17 Jan 2023, 03:59 Paul Rosen, @.***> wrote:
There's not a built in way, yet, but I'd like functionality like that, too.
But what you can do is modify the output before it goes to the synth by specifying a sequenceCallback. https://paulrosen.github.io/abcjs/audio/synthesized-sound.html#init-synthoptions. You have to read through the passed in array of values and replace the bass notes with full chords.
— Reply to this email directly, view it on GitHub https://github.com/paulrosen/abcjs/issues/865#issuecomment-1384182603, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABL6VKJRDHXQ2FTLURV5WDDWSVO53ANCNFSM6AAAAAATJJ24LA . You are receiving this because you commented.Message ID: @.***>
In the demo on the main page, abcjs plays the accompaniment (D, Em) etc but there doesn't seem to be any description anywhere of how it actually does that.
So how does it play these chords?