File size: 2,968 Bytes
af6912c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# ABC Music Notation

The input to **abcjs** is mostly standard ABC Music Notation. That notation is described here:

[ABC Notation](http://abcnotation.com/learn)

The working document for the standard is [ABC Standard](https://abcnotation.com/wiki/abc:standard)

In addition, there are many informal additions, particularly with new `%%` directives, that are supported to be compatible with other ABC software.

## Subtractions from the standard

We've made an attempt to be compatible with other ABC software, but there are some exceptions.

Some of the things that are supported by other packages are specific to that package's environment and don't apply to a web-based solution. Those features are not supported.

Here is a list of formatting options that will probably not be supported:

```
%%abc
%%abc2pscompat
%%abcm2ps
%%autoclef
%%beginps
%%beginsvg
%%bgcolor
%%break
%%breaklimit
%%breakoneoln
%%clip
%%deco
%%decoration
%%eps
%%format
%%fullsvg
%%map
%%micronewps
%%pango
%%pdfmark
%%ps
%%select
%%tune
%%voicemap
```

Some of the things that are supported by other packages we've just not gotten around to supporting yet. If you run into a feature that you would like to see, let us know.

## Additions to the standard

### Alternate note heads:

In both the K: and the V: element, you can include the parameter:

```
style=rhythm
style=harmonic
style=x
style=normal
style=triangle
```

You can also use the above as a decoration to a single note to affect just that note:

```
!style=rhythm!
```

This changes the note heads to a different shape.

Here's a sample:

<show-and-render-abc :abc='`X:1
T:alternate heads
M:C
L:1/8
U:n=!style=normal!
K:C treble style=rhythm
"Am" BBBB B2 B&gt;B | "Dm" B2 B/B/B "C" B4 |\
"Am" B2 nGnB B2 nGnA | "Dm" nDB/B/ nDB/B/ "C" nCB/B/ nCB/B/ |B8| B0 B0 B0 B0 |]
%%text This translates to:
[M:C][K:style=normal]
[A,EAce][A,EAce][A,EAce][A,EAce] [A,EAce]2 [A,EAce]&gt;[A,EAce] |\
[DAdf]2 [DAdf]/[DAdf]/[DAdf] [CEGce]4 |\
[A,EAce]2 GA [A,EAce] GA |\
D[DAdf]/[DAdf]/ D[DAdf]/[DAdf]/ C [CEGce]/[CEGce]/ C[CEGce]/[CEGce]/ |[CEGce]8 | [CEGce]2 [CEGce]2 [CEGce]2 [CEGce]2 |]
GAB2 !style=harmonic![gb]4|GAB2 [K: style=harmonic]gbgb|
[K: style=x]
C/A,/ C/C/E C/zz2|
w:Rock-y did-nt like that
`' ></show-and-render-abc>

### Chord Break:

If you want to skip a chord, then use one of the following as the chord:

```
"^break"
"^(break)"
"^no chord"
"^n.c."
"^tacet"
```

<render-abc ref="tune" :abc='`X:1
T:Struttin With Some BBQ
C:1923 Lil Hardin Armstrong
M:4/4
L:1/8
K:F
"G7"d4AFGA|dA-A6|"C7"cB"^N.C."GF EDC=B,|_B,2zF EFAc|
`' ></render-abc>

<render-audio :obj="$refs"></render-audio>

These are case-insensitive.

### mark:

To arbitrarily add the class "mark" to the next note, you can use the decoration:
```
!mark!
```

<render-abc :abc='`X:1
K:C
e!mark!f|g
`' ></render-abc>

### MIDI:

And extra octave parameter is accepted in `bassprog` and `chordprog`:
```
%%MIDI bassprog 22 octave=-1
%%MIDI chordprog 2 octave=1
```