Musicaltypesetting
mScore.js
and more

Calculating the accidental of a note from a key

We will number the pitches of notes as follows (ignoring octaves):

CDEFGAB
$0$$1$$2$$3$$4$$5$$6$

(Major) keys are described by the number of sharps they have, with double sharps counting as $2$, flats as $-1$ etc., that is

E♭B♭FCGDAEBF♯C♯G♯
$-3$$-2$$-1$$0$$1$$2$$3$$4$$5$$6$$7$$8$

Let us first only look at keys where $0$ or more notes are sharps, but not all of them, i.e. from C major to F♯ major ($0\leq k\leq 6$).

$k=0$ has no sharps, and $k=1$ has one at the note F (pitch $3$). Each further key adds a sharp at the next pitch along the circle of fifths, that is the previous added sharp’s pitch $+4$ (fifth $=4$ steps up). In mathematical notation, switching from $k$ to $k+1$ adds a sharp to the notes with pitch $(3+4k\mod 7)=:n_k$.

Since $\gcd(4,7)=1$ this equation can be rewritten as $3+4k\equiv n_k (\text{mod}\ 7) \Leftrightarrow k\equiv (n_k-3) / 4\equiv 2(n_k+4)\equiv 2n_k+1 (\text{mod}\ 7)$. Thus the pitch $n$ has a sharp if and only if the key is $k>k_n:=(2n+1\mod 7)$.

This is for keys $k = 0,\dots,6$. If we pass from $k$ to $k+7$ all pitches receive an extra sharp, resulting in some of them having double sharps; in the same way $k-7$ provides a flat key (all notes flat, some of them raised again to become natural). Therefore the number of “sharps” of pitch $n$ under key $k$ (now all possible keys allowed) is given by $$s(n,k) := \left\lfloor\frac k7\right\rfloor + \begin{cases}1,&(k\mod 7)>k_n\\0,&\text{else}\end{cases}.$$ This formula can be simplified by noting that $-6\leq (k\mod 7)-k_n\leq 6$ and thus $$s(n,k) = \left\lfloor\frac k7\right\rfloor + \left\lceil\frac{(k\mod 7)-k_n}7\right\rceil = \left\lfloor\frac k7\right\rfloor + \left\lceil\frac{k - 7\left\lfloor\frac k7\right\rfloor - k_n}7\right\rceil = \left\lceil\frac{k-k_n}7\right\rceil.$$ So as end result we obtain $$s(n,k) = \left\lceil\frac{k-(2n+1\mod 7)}7\right\rceil.$$

© 2017 Florian Käferböck

Mathematical typesetting uses MathJax.