Skip to content

computes scales based on circle of 5ths and 4ths and draw guitar fretboard with natural notes on it

Notifications You must be signed in to change notification settings

dan-reznik/guitar_fretboard

Repository files navigation

Guitar Fretboard

My attempt at:

  • Calculating frequencies of musical scales
  • Calculating circle of 5ths' and 4ths' major and minor scales
  • Drawing guitar fretboard, show natural notes on it
library(tidyverse)
source("scale_util.R")

Creates a "circle of fifths" data frame

tones12 <- tibble(degree=1:13,
                  notes=c("C","C#","D","D#","E","F","F#","G","G#","A","A#","B","C2"),
                  notesF=c("C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B","C2"),
                  majorIdx=c(T,F,T,F,T,T,F,T,F,T,F,T,T),
                  minorIdx=c(T,F,T,T,F,T,F,T,T,F,T,F,T),
                  freqMult=accumulate(degree[-13],~.x*semitone,.init=1),
                  freq=middleC*freqMult,
                  # 5ths
                  roots5ths=getRoots(12,8), # P5 is 8th note
                  notes5ths=notes[roots5ths],
                  freq5ths=getFreqSeries(12,freqMult[8]),
                  majorScale5ths=map_chr(roots5ths,getScale,notes,majorIdx),
                  majorSharps5ths=map_chr(majorScale5ths,getSharps),
                  minorScale5ths=map_chr(roots5ths,getScale,notes,minorIdx),   
                  minorSharps5ths=map_chr(minorScale5ths,getSharps),
                  # 4ths
                  roots4ths=getRoots(12,6), # P4 is 6th note
                  notes4ths=notesF[roots4ths],
                  freq4ths=getFreqSeries(12,freqMult[6]),
                  majorScale4ths=map_chr(roots4ths,getScale,notesF,majorIdx),
                  majorFlats4ths=map_chr(majorScale4ths,getFlats),
                  minorScale4ths=map_chr(roots4ths,getScale,notesF,minorIdx),
                  minorFlats4ths=map_chr(minorScale4ths,getFlats)
)

Scales w/ the circle of 5ths (signatures have sharps)

degree root major_scale major_sharps minor_scale minor_sharps
1 C C,D,E,F,G,A,B C,D,D#,F,G,G#,A# D#,G#,A#
2 G G,A,B,C,D,E,F# F# G,A,A#,C,D,D#,F A#,D#
3 D D,E,F#,G,A,B,C# F#,C# D,E,F,G,A,A#,C A#
4 A A,B,C#,D,E,F#,G# C#,F#,G# A,B,C,D,E,F,G
5 E E,F#,G#,A,B,C#,D# F#,G#,C#,D# E,F#,G,A,B,C,D F#
6 B B,C#,D#,E,F#,G#,A# C#,D#,F#,G#,A# B,C#,D,E,F#,G,A C#,F#
7 F# F#,G#,A#,B,C#,D#,F F#,G#,A#,C#,D# F#,G#,A,B,C#,D,E F#,G#,C#
8 C# C#,D#,F,F#,G#,A#,C C#,D#,F#,G#,A# C#,D#,E,F#,G#,A,B C#,D#,F#,G#
9 G# G#,A#,C,C#,D#,F,G G#,A#,C#,D# G#,A#,B,C#,D#,E,F# G#,A#,C#,D#,F#
10 D# D#,F,G,G#,A#,C,D D#,G#,A# D#,F,F#,G#,A#,B,C# D#,F#,G#,A#,C#
11 A# A#,C,D,D#,F,G,A A#,D# A#,C,C#,D#,F,F#,G# A#,C#,D#,F#,G#
12 F F,G,A,A#,C,D,E A# F,G,G#,A#,C,C#,D# G#,A#,C#,D#
13 C C,D,E,F,G,A,B C,D,D#,F,G,G#,A# D#,G#,A#

Scales w/ the circle of 4ths (signatures have flats)

degree root major_scale major_flats minor_scale minor_flats
1 C C,D,E,F,G,A,B C,D,Eb,F,G,Ab,Bb Eb,Ab,Bb
2 F F,G,A,Bb,C,D,E Bb F,G,Ab,Bb,C,Db,Eb Ab,Bb,Db,Eb
3 Bb Bb,C,D,Eb,F,G,A Bb,Eb Bb,C,Db,Eb,F,Gb,Ab Bb,Db,Eb,Gb,Ab
4 Eb Eb,F,G,Ab,Bb,C,D Eb,Ab,Bb Eb,F,Gb,Ab,Bb,B,Db Eb,Gb,Ab,Bb,Db
5 Ab Ab,Bb,C,Db,Eb,F,G Ab,Bb,Db,Eb Ab,Bb,B,Db,Eb,E,Gb Ab,Bb,Db,Eb,Gb
6 Db Db,Eb,F,Gb,Ab,Bb,C Db,Eb,Gb,Ab,Bb Db,Eb,E,Gb,Ab,A,B Db,Eb,Gb,Ab
7 Gb Gb,Ab,Bb,B,Db,Eb,F Gb,Ab,Bb,Db,Eb Gb,Ab,A,B,Db,D,E Gb,Ab,Db
8 B B,Db,Eb,E,Gb,Ab,Bb Db,Eb,Gb,Ab,Bb B,Db,D,E,Gb,G,A Db,Gb
9 E E,Gb,Ab,A,B,Db,Eb Gb,Ab,Db,Eb E,Gb,G,A,B,C,D Gb
10 A A,B,Db,D,E,Gb,Ab Db,Gb,Ab A,B,C,D,E,F,G
11 D D,E,Gb,G,A,B,Db Gb,Db D,E,F,G,A,Bb,C Bb
12 G G,A,B,C,D,E,Gb Gb G,A,Bb,C,D,Eb,F Bb,Eb
13 C C,D,E,F,G,A,B C,D,Eb,F,G,Ab,Bb Eb,Ab,Bb

Draw fretboard w/ naturals

draw_naturals(tones12)

About

computes scales based on circle of 5ths and 4ths and draw guitar fretboard with natural notes on it

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages