home

Bill's Music web pages

My ikkle brudderikins has been thrashing guitars and warbling for a good while now with some excellent results. He does gigs around Dublin at the moment and is always recording new material.
Bill is also very busy launching his first CD right now. Photos from the launch, Thur Oct 17 in the Stag's head.

Christy Moore page

older version

The best reference for music on web? Well, I certainly use it loads anyway. LSDS music archive Has often copyright problems... help keep it alive if you can.

I myself was initiated into music and played the recorder for years, then I gave it up after 7 when exams seemed more important. Much to the objection of Miss Jones, my teacher. Well, we can still play it a little. I've also encountered lessons with piano-accordion and a little piano, but sure anyway: Il Flauto Dolche

Listening to music? Well, I seem to think I have quite a broad taste, although extremely hindered by a terribly bad memory for people/song/bands names so communication about the cool song which goes "bah dah be Dahhhhreeauwnnnnnng" breaks down pretty early :), but for expression of those sounds to which I CAN connect names I provide this list of external links, DON'T forget Christy at the top of this page! And sorry if this is mostly only usedful to me.

Ummm, most links to lsds 'cos it's handy for me, 1 or 2 other links around, if you've no inerest, scroll on down for some guitar fretboard frequency analysis. Good stuff I'm telling you!

Recently got a mail from a couple of other Cobh heads. They've made some guitar pages. See here:
Jay's guitar page.
Philip Walsh about music/tabs/David Gray/stuff.

Very misc tbds & greps:
I would like to get hold of some music for Daire, when I was small we had a few records that were great :- "The waltz of the flowers" "The young Toreador" story read in the background to the opera music. And Rolf Harris "Two little Boys", "Tie me Kangaroo down", etc....

MusicTech online magazine Free reed music sounds interesting

but first Alternate radical nursery music man!

Nursery hard-core

Humpty Dumpty

Lyrics

Notes

E- 1 beat (crotchet), E--- X2 (semi-quaver), E----- X3
C--- E- D--- F- E-  G- B- C-----
Humpty  Dumpty  sat on a  wall,

C--- E- D--- F- E-  D- C-    E-----
Humpty  Dumpty  had a  great fall,

C-  C-  E-    D---   F-  E-  G-  B-    C-----
All the kings horses and all the kings men,

D- E- E-    C-  F- F-  E- D- C- B- C-
   Couldn't put Humpty together again.

   C---E-D---F-  E-G-B-C-----  C---E-D---F-  E-D-C-E-----
   C-C-E-D-----  F-E-G-B-C---  D-E-E-C-F-F-  E-D-C-B-C---

Guitar Tab

T=10, E8=C ET=D A7=E A8=F AT=G D9=B DT=C Hummm, I forget if the notes & the chords work together. oops.
   G     C       D     G       G     C       G     D
E -------------|-------------|-------------|-------------|
B -------------|-------------|-------------|-------------|
G -------------|-------------|-------------|-------------|
D -------------|-----9-T-----|-------------|-------------|
A -----7-----8-|-7-T---------|-----7-----8-|-7-----------|
E -8-----T-----|-------------|-8-----T-----|---T-8-T-----|
   C   E D   F   E G B C       C   E D   F   E D C E

   Humpty Dumpty sat on a wall, Humpty Dumpty had a great fall,


   G     C       D     G       G     C       D     G
E -------------|-------------|-------------|-------------|
B -------------|-------------|-------------|-------------|
G -------------|-------------|-7-9-9---T-T-|-9-7---------|
D -------------|-----9-T-----|-------T-----|-----T-9-T---|
A -----7-----8-|-7-T---------|-------------|-------------|
E -8-8---T-----|-------------|-------------|-------------|
   C C E D   F   E G B C       D E E C F F   E D C B C 

  All the kings horses and all the kings men, Couldn't put Humpty together again.



Hmmmm, let's take it up the fretboard.

   G     C       D     G       G     C       G     D
E -------------|-------------|-------------|-------------|
B -------------|-----X-1-----|-------------|-------------|
G -------------|---X---------|-------------|-------------|
D -----2-X---3-|-2-----------|-----2-X---3-|-2-X---X-----|
A -3-----------|-------------|-3-----------|-----3-------|
E -------------|-------------|-------------|-------------|
   C   E D   F   E G B C       C   E D   F   E D C E

   Humpty Dumpty sat on a wall, Humpty Dumpty had a great fall,


   G     C       D     G       G     C       D     G
E -------------|-------------|---X-X---1-1-|-X-----------|
B -------------|-----X-1-----|-3-----1-----|---3-1-X-1---|
G -------------|---X---------|-------------|-------------|
D -----2-X---3-|-2-----------|-------------|-------------|
A -3-3---------|-------------|-------------|-------------|
E -------------|-------------|-------------|-------------|
   C C E D   F   E G B C       D E E C F F   E D C B C 

  All the kings horses and all the kings men, Couldn't put Humpty together again.

And ...real music?

Ever tried to do a treble clef in ascii?
    __
F --||--------------|-------------|-------------|-------------|
D --/---------------|-------------|-------------|-------------|
B -//\-----Now it's a bit difficult to fit notes in here------|
G -\_/--------------|-------------|-------------|-------------|
E --|---------------|-------------|-------------|-------------|
   ^^
                            o
        _____  /         -o---
    __  | | | |         o 
F --||--|-|-|-|---o-|-------------|-------------|-------------|
    ||  | | o |   | | o           |             |             |
D --/---|-|-.-o---|-|-------------|-------------|-------------|
   /|   o o       | |       Yeuch, yeuch. Oh dear :-7         |
B -|/\------------|-|-------------|-------------|-------------|
   |||           =| |             |             |             |
G -\+/--------------|-------------|-------------|-------------|
    |               |             |             |             |
E --|---------------|-------------|-------------|-------------|
   -/
        C C E D   F   E G B C       D E E C F F   E D C B C 
        G     C       D     G       G     C       G     D


I wonder are there any good standards for electronic 
music notation?
google?q=music+editors
yahoo/Ent/Music/Sw/

MOODS project
HARMONICA project (network access music)

There's a hole in the bucket

   G        Em     C       C
E ---------------|-------------|
B ---24----------|-------------|
G -5-----5---2-5-|-------------|
D ---------5-----|---2-5---2-5-|
A ---------------|-5-----5-----|
E ---------------|-------------|

   G        Em     C       G
E ---------------|-------------|
B ---24----------|-------------|
G -5-----5---2-5-|-------2-----|
D ---------5-----|---2-5---5---|
A ---------------|-5-----------|
E ---------------|-------------|

Baah Baah Black Sheep & Insey Winsey Spider

Together as the chords and tunes are the same. Combination of A, E and D chords work nicely.
A                      D
Baah Baah Black Sheep, Have you any wool?
D         A         E          A
Yes, sir. Yes, sir. Three bags full.
A           D       A           E
One for the master, one for the maid,
    A           D              A     E        A
And one for the little boy who lives down the lane.


Spider song/rhymes are great fun.
I've seen the spider called "Itsy bitsy" and also "Eensey Weensey".
Might make more sense than "Insey winsey".

A
Insey winsey spider
        D
climbed up the water spout.
D             A
Down came the rain
    E                 A
And washed the spider out.


A            D
Out came the sun
    A                E
And dried up all the rain.
A            D
Insey winsey Spider
        A      E     A
Climbed up the spout again.


I think the chords/tune in this are close enough too:

A B C D E F G,
H I J K LMNO P,
Q R S, T U V,
W, X, Y & Z.
Now I know my A B C,
Won't you come and sing with me.

Frčre Jacques & Three Blind Mice

Again, the chords are the same, but the tune is different. Very simple. Just alternate A and E chords. Please forgive my french spelling. I'll LIUOTW sometime. google it
Chicky ma ma/ songs for kids/ Frere Jacques
again mid
A  E  A        A  E  A
Frčre Jacques, frčre Jacques.
A  E   A     A  E   A
Dormez vous? Dormez vous?
A     E    A     A     E    A
Sonnez les matines, sonnez les matines.
A    E    A     A    E    A
Ding dong dell, ding dong dell.

In spanish, ... or, perhaps mexican?
Frere jacques/ frere Jacques/
dormez vous/ dormez vous/
sonnez les mattines/ sonnez les mattines/
ding dong dang/ ding dong dang/ 

As Gaeilge? >;) urgh.
Dhrifear Sheain/Colaidth thu?/
somethingiad na cloiseanna?/ding dong dell

English:
Brother John/Are you sleeping/
Morning bells are ringing (well, .. yeah)/
Ding-ding-dong



A     E     A     A     E     A
Three blind mice, three blind mice.
A   E        A    A   E        A
See how they run, see how they run.
     A       E         A
they all ran after the farmers wife,
    A             E            A
Who cut off their tails with a carving knife,
        A    E          A
Did you ever see such a thing in your life,
   A     E     A
As three blind mice.

Grep web for harmonica stuff for Bill. Quite an interesting instrument really.
encyclopedia yahoo google/search?q=harmonica someone Hooting Harmonicas ecabot
Goodish resource: Jack Mearl song index lessons

Now, For the INTERESTING bit, (IMHO)

Grrrr... This page is causing me problems as I originally wrote it using perl. Now I wonder how long it'll take me to convert to javaScript? Ahhh well ... tedium tedium...

Hephahaha! Problem solved (for me anyway). The following is a MAJOR cheat. BIG GRIN :). No tedium necessary. I load up the perl in my browser ... then do a save as ... of course the fully expanded html is saved ... and you get the following: duh! Whydidn'tIthinkofthatearlier.... I love it when I manage to doss off :)


calc-music.pl output

# Music - scales
#         frequency  12 notes  C=256Hz, 512Hz => spacing is 12th root of 2?
# Root, 3rd and 5th freq spacing?  resonant  yes! yes!  (for major scales)  wow!
# Guitar notes, chords
#

Definitions
chromaticScale A  A# B  C  C# D  D# E  F  F# G  G# 
majorSemiToneSpacing 0 2 4 5 7 9 11
minorSemiToneSpacing 0 2 3 5 7 8 10
pentatonicMajorSemiToneSpacing 0 2 4 7 9
pentatonicMinorSemiToneSpacing 0 2 3 7 8
notes A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G#
notes A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# 
notes by number 0 A 1 A# 2 B 3 C 4 C# 5 D 6 D# 7 E 8 F 9 F# 10 G 11 G# 


Guitar fretboard:  note(offset)   e(7) B(2) G(10) D(5) A(0) E(7)
||| E | F | F#| G | G#| A | A#| B | C | C#| D | D#| E | F | F#| G | G#| A | A#| B |
||| B | C | C#| D | D#| E | F | F#| G | G#| A | A#| B | C | C#| D | D#| E | F | F#|
||| G | G#| A | A#| B | C | C#| D | D#| E | F | F#| G | G#| A | A#| B | C | C#| D |
||| D | D#| E | F | F#| G | G#| A | A#| B | C | C#| D | D#| E | F | F#| G | G#| A |
||| A | A#| B | C | C#| D | D#| E | F | F#| G | G#| A | A#| B | C | C#| D | D#| E |
||| E | F | F#| G | G#| A | A#| B | C | C#| D | D#| E | F | F#| G | G#| A | A#| B |


HTML Guitar fretboard:  note(offset)   e(7) B(2) G(10) D(5) A(0) E(7)
E F F#G G#A A#B C C#D D#E F F#G G#A A#B
B C C#D D#E F F#G G#A A#B C C#D D#E F F#
G G#A A#B C C#D D#E F F#G G#A A#B C C#D
D D#E F F#G G#A A#B C C#D D#E F F#G G#A
A A#B C C#D D#E F F#G G#A A#B C C#D D#E
E F F#G G#A A#B C C#D D#E F F#G G#A A#B

HTML Guitar fretboard: C major  Red=Root Green=3rd Blue=5th
E F G A B C D E F G A B
B C D E F G A B C D E F
G A B C D E F G A B C D
D E F G A B C D E F G A
A B C D E F G A B C D E
E F G A B C D E F G A B

HTML Guitar fretboard: C major, note positions
2 43 54 75 96 110 01 22 43 54 75 96 11
6 110 01 22 43 54 75 96 110 01 22 43 5
4 75 96 110 01 22 43 54 75 96 110 01 2
1 22 43 54 75 96 110 01 22 43 54 75 9
5 96 110 01 22 43 54 75 96 110 01 22 4
2 43 54 75 96 110 01 22 43 54 75 96 11


HTML Guitar fretboard: G major  Red=Root Green=3rd Blue=5th
E F#G A B C D E F#G A B
B C D E F#G A B C D E F#
G A B C D E F#G A B C D
D E F#G A B C D E F#G A
A B C D E F#G A B C D E
E F#G A B C D E F#G A B

Modes? Modes of G major follow. Just G scale starting from different notes.
Ionian mode _IS_ major key. And pattern moves up+down fretboard giving different keys.
Learn pattern from root to root.

Ionian == natural major
Aeolian == natural minor

Pentatonic => scale has 5 notes only, drop 4th and 7th
Pentatonic G: G A B D E G
Has 5 modes, 1st to 5th  related to Ionian, Dorian, Phyrgian, Mixolydian and Aeolian, just drop the not-needed notes.

G Major: G A B C D E F#
    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
||| B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#|
||| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |
||| D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |
||| A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
           xxxxxxxxxxxxxxx
            Ionian key G => G(3)
                   xxxxxxxxxxxxxxxxxxx
                    Dorian key G => A(5)
                               xxxxxxxxxxxxxxx
                                Phyrgian key G => B(7)
                               xxxxxxxxxxxxxxx
                                Lydian key G => C(8)
                                       xxxxxxxxxxxxxxxxxxx
                                        Mixolydian key G => D(10)
                                               xxxxxxxxxxxxxxxxxxx
                                                Aeolian key G => E(12)
           xxxxxxxxxxxxxxx                                 xxxxxxxxxxxxxxx
                                                            Locrian key G => F#(14)


Major scales, on the fretboard, more obfussy, you can see the different modes here!
A Major: 
||| E |   | F#|   | G#| A |   | B |   | C#| D |   | E |   | F#|   | G#| A |   | B |
||| B |   | C#| D |   | E |   | F#|   | G#| A |   | B |   | C#| D |   | E |   | F#|
|||   | G#| A |   | B |   | C#| D |   | E |   | F#|   | G#| A |   | B |   | C#| D |
||| D |   | E |   | F#|   | G#| A |   | B |   | C#| D |   | E |   | F#|   | G#| A |
||| A |   | B |   | C#| D |   | E |   | F#|   | G#| A |   | B |   | C#| D |   | E |
||| E |   | F#|   | G#| A |   | B |   | C#| D |   | E |   | F#|   | G#| A |   | B |
A# Major: 
|||   | F |   | G |   | A | A#|   | C |   | D | D#|   | F |   | G |   | A | A#|   |
|||   | C |   | D | D#|   | F |   | G |   | A | A#|   | C |   | D | D#|   | F |   |
||| G |   | A | A#|   | C |   | D | D#|   | F |   | G |   | A | A#|   | C |   | D |
||| D | D#|   | F |   | G |   | A | A#|   | C |   | D | D#|   | F |   | G |   | A |
||| A | A#|   | C |   | D | D#|   | F |   | G |   | A | A#|   | C |   | D | D#|   |
|||   | F |   | G |   | A | A#|   | C |   | D | D#|   | F |   | G |   | A | A#|   |
B Major: 
||| E |   | F#|   | G#|   | A#| B |   | C#|   | D#| E |   | F#|   | G#|   | A#| B |
||| B |   | C#|   | D#| E |   | F#|   | G#|   | A#| B |   | C#|   | D#| E |   | F#|
|||   | G#|   | A#| B |   | C#|   | D#| E |   | F#|   | G#|   | A#| B |   | C#|   |
|||   | D#| E |   | F#|   | G#|   | A#| B |   | C#|   | D#| E |   | F#|   | G#|   |
|||   | A#| B |   | C#|   | D#| E |   | F#|   | G#|   | A#| B |   | C#|   | D#| E |
||| E |   | F#|   | G#|   | A#| B |   | C#|   | D#| E |   | F#|   | G#|   | A#| B |
C Major: 
||| E | F |   | G |   | A |   | B | C |   | D |   | E | F |   | G |   | A |   | B |
||| B | C |   | D |   | E | F |   | G |   | A |   | B | C |   | D |   | E | F |   |
||| G |   | A |   | B | C |   | D |   | E | F |   | G |   | A |   | B | C |   | D |
||| D |   | E | F |   | G |   | A |   | B | C |   | D |   | E | F |   | G |   | A |
||| A |   | B | C |   | D |   | E | F |   | G |   | A |   | B | C |   | D |   | E |
||| E | F |   | G |   | A |   | B | C |   | D |   | E | F |   | G |   | A |   | B |
C# Major: 
|||   | F | F#|   | G#|   | A#|   | C | C#|   | D#|   | F | F#|   | G#|   | A#|   |
|||   | C | C#|   | D#|   | F | F#|   | G#|   | A#|   | C | C#|   | D#|   | F | F#|
|||   | G#|   | A#|   | C | C#|   | D#|   | F | F#|   | G#|   | A#|   | C | C#|   |
|||   | D#|   | F | F#|   | G#|   | A#|   | C | C#|   | D#|   | F | F#|   | G#|   |
|||   | A#|   | C | C#|   | D#|   | F | F#|   | G#|   | A#|   | C | C#|   | D#|   |
|||   | F | F#|   | G#|   | A#|   | C | C#|   | D#|   | F | F#|   | G#|   | A#|   |
D Major: 
||| E |   | F#| G |   | A |   | B |   | C#| D |   | E |   | F#| G |   | A |   | B |
||| B |   | C#| D |   | E |   | F#| G |   | A |   | B |   | C#| D |   | E |   | F#|
||| G |   | A |   | B |   | C#| D |   | E |   | F#| G |   | A |   | B |   | C#| D |
||| D |   | E |   | F#| G |   | A |   | B |   | C#| D |   | E |   | F#| G |   | A |
||| A |   | B |   | C#| D |   | E |   | F#| G |   | A |   | B |   | C#| D |   | E |
||| E |   | F#| G |   | A |   | B |   | C#| D |   | E |   | F#| G |   | A |   | B |
D# Major: 
|||   | F |   | G | G#|   | A#|   | C |   | D | D#|   | F |   | G | G#|   | A#|   |
|||   | C |   | D | D#|   | F |   | G | G#|   | A#|   | C |   | D | D#|   | F |   |
||| G | G#|   | A#|   | C |   | D | D#|   | F |   | G | G#|   | A#|   | C |   | D |
||| D | D#|   | F |   | G | G#|   | A#|   | C |   | D | D#|   | F |   | G | G#|   |
|||   | A#|   | C |   | D | D#|   | F |   | G | G#|   | A#|   | C |   | D | D#|   |
|||   | F |   | G | G#|   | A#|   | C |   | D | D#|   | F |   | G | G#|   | A#|   |
E Major: 
||| E |   | F#|   | G#| A |   | B |   | C#|   | D#| E |   | F#|   | G#| A |   | B |
||| B |   | C#|   | D#| E |   | F#|   | G#| A |   | B |   | C#|   | D#| E |   | F#|
|||   | G#| A |   | B |   | C#|   | D#| E |   | F#|   | G#| A |   | B |   | C#|   |
|||   | D#| E |   | F#|   | G#| A |   | B |   | C#|   | D#| E |   | F#|   | G#| A |
||| A |   | B |   | C#|   | D#| E |   | F#|   | G#| A |   | B |   | C#|   | D#| E |
||| E |   | F#|   | G#| A |   | B |   | C#|   | D#| E |   | F#|   | G#| A |   | B |
F Major: 
||| E | F |   | G |   | A | A#|   | C |   | D |   | E | F |   | G |   | A | A#|   |
|||   | C |   | D |   | E | F |   | G |   | A | A#|   | C |   | D |   | E | F |   |
||| G |   | A | A#|   | C |   | D |   | E | F |   | G |   | A | A#|   | C |   | D |
||| D |   | E | F |   | G |   | A | A#|   | C |   | D |   | E | F |   | G |   | A |
||| A | A#|   | C |   | D |   | E | F |   | G |   | A | A#|   | C |   | D |   | E |
||| E | F |   | G |   | A | A#|   | C |   | D |   | E | F |   | G |   | A | A#|   |
F# Major: 
|||   | F | F#|   | G#|   | A#| B |   | C#|   | D#|   | F | F#|   | G#|   | A#| B |
||| B |   | C#|   | D#|   | F | F#|   | G#|   | A#| B |   | C#|   | D#|   | F | F#|
|||   | G#|   | A#| B |   | C#|   | D#|   | F | F#|   | G#|   | A#| B |   | C#|   |
|||   | D#|   | F | F#|   | G#|   | A#| B |   | C#|   | D#|   | F | F#|   | G#|   |
|||   | A#| B |   | C#|   | D#|   | F | F#|   | G#|   | A#| B |   | C#|   | D#|   |
|||   | F | F#|   | G#|   | A#| B |   | C#|   | D#|   | F | F#|   | G#|   | A#| B |
G Major: 
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
||| B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#|
||| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |
||| D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |
||| A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
G# Major: 
|||   | F |   | G | G#|   | A#|   | C | C#|   | D#|   | F |   | G | G#|   | A#|   |
|||   | C | C#|   | D#|   | F |   | G | G#|   | A#|   | C | C#|   | D#|   | F |   |
||| G | G#|   | A#|   | C | C#|   | D#|   | F |   | G | G#|   | A#|   | C | C#|   |
|||   | D#|   | F |   | G | G#|   | A#|   | C | C#|   | D#|   | F |   | G | G#|   |
|||   | A#|   | C | C#|   | D#|   | F |   | G | G#|   | A#|   | C | C#|   | D#|   |
|||   | F |   | G | G#|   | A#|   | C | C#|   | D#|   | F |   | G | G#|   | A#|   |

Natural Pentatonic scales, on the fretboard
C Pentatonic Major: 
||| E |   |   | G |   | A |   |   | C |   | D |   | E |   |   | G |   | A |   |   |
|||   | C |   | D |   | E |   |   | G |   | A |   |   | C |   | D |   | E |   |   |
||| G |   | A |   |   | C |   | D |   | E |   |   | G |   | A |   |   | C |   | D |
||| D |   | E |   |   | G |   | A |   |   | C |   | D |   | E |   |   | G |   | A |
||| A |   |   | C |   | D |   | E |   |   | G |   | A |   |   | C |   | D |   | E |
||| E |   |   | G |   | A |   |   | C |   | D |   | E |   |   | G |   | A |   |   |
D Pentatonic Major: 
||| E |   | F#|   |   | A |   | B |   |   | D |   | E |   | F#|   |   | A |   | B |
||| B |   |   | D |   | E |   | F#|   |   | A |   | B |   |   | D |   | E |   | F#|
|||   |   | A |   | B |   |   | D |   | E |   | F#|   |   | A |   | B |   |   | D |
||| D |   | E |   | F#|   |   | A |   | B |   |   | D |   | E |   | F#|   |   | A |
||| A |   | B |   |   | D |   | E |   | F#|   |   | A |   | B |   |   | D |   | E |
||| E |   | F#|   |   | A |   | B |   |   | D |   | E |   | F#|   |   | A |   | B |
E Pentatonic Major: 
||| E |   | F#|   | G#|   |   | B |   | C#|   |   | E |   | F#|   | G#|   |   | B |
||| B |   | C#|   |   | E |   | F#|   | G#|   |   | B |   | C#|   |   | E |   | F#|
|||   | G#|   |   | B |   | C#|   |   | E |   | F#|   | G#|   |   | B |   | C#|   |
|||   |   | E |   | F#|   | G#|   |   | B |   | C#|   |   | E |   | F#|   | G#|   |
|||   |   | B |   | C#|   |   | E |   | F#|   | G#|   |   | B |   | C#|   |   | E |
||| E |   | F#|   | G#|   |   | B |   | C#|   |   | E |   | F#|   | G#|   |   | B |
F Pentatonic Major: 
|||   | F |   | G |   | A |   |   | C |   | D |   |   | F |   | G |   | A |   |   |
|||   | C |   | D |   |   | F |   | G |   | A |   |   | C |   | D |   |   | F |   |
||| G |   | A |   |   | C |   | D |   |   | F |   | G |   | A |   |   | C |   | D |
||| D |   |   | F |   | G |   | A |   |   | C |   | D |   |   | F |   | G |   | A |
||| A |   |   | C |   | D |   |   | F |   | G |   | A |   |   | C |   | D |   |   |
|||   | F |   | G |   | A |   |   | C |   | D |   |   | F |   | G |   | A |   |   |
G Pentatonic Major: 
||| E |   |   | G |   | A |   | B |   |   | D |   | E |   |   | G |   | A |   | B |
||| B |   |   | D |   | E |   |   | G |   | A |   | B |   |   | D |   | E |   |   |
||| G |   | A |   | B |   |   | D |   | E |   |   | G |   | A |   | B |   |   | D |
||| D |   | E |   |   | G |   | A |   | B |   |   | D |   | E |   |   | G |   | A |
||| A |   | B |   |   | D |   | E |   |   | G |   | A |   | B |   |   | D |   | E |
||| E |   |   | G |   | A |   | B |   |   | D |   | E |   |   | G |   | A |   | B |
A Pentatonic Major: 
||| E |   | F#|   |   | A |   | B |   | C#|   |   | E |   | F#|   |   | A |   | B |
||| B |   | C#|   |   | E |   | F#|   |   | A |   | B |   | C#|   |   | E |   | F#|
|||   |   | A |   | B |   | C#|   |   | E |   | F#|   |   | A |   | B |   | C#|   |
|||   |   | E |   | F#|   |   | A |   | B |   | C#|   |   | E |   | F#|   |   | A |
||| A |   | B |   | C#|   |   | E |   | F#|   |   | A |   | B |   | C#|   |   | E |
||| E |   | F#|   |   | A |   | B |   | C#|   |   | E |   | F#|   |   | A |   | B |
B Pentatonic Major: 
|||   |   | F#|   | G#|   |   | B |   | C#|   | D#|   |   | F#|   | G#|   |   | B |
||| B |   | C#|   | D#|   |   | F#|   | G#|   |   | B |   | C#|   | D#|   |   | F#|
|||   | G#|   |   | B |   | C#|   | D#|   |   | F#|   | G#|   |   | B |   | C#|   |
|||   | D#|   |   | F#|   | G#|   |   | B |   | C#|   | D#|   |   | F#|   | G#|   |
|||   |   | B |   | C#|   | D#|   |   | F#|   | G#|   |   | B |   | C#|   | D#|   |
|||   |   | F#|   | G#|   |   | B |   | C#|   | D#|   |   | F#|   | G#|   |   | B |

Major scales 0 2 4 5 7 9 11
A  Major  A   B   C#  D   E   F#  G#  A 
A# Major  A#  C   D   D#  F   G   A   A#
B  Major  B   C#  D#  E   F#  G#  A#  B 
C  Major  C   D   E   F   G   A   B   C 
C# Major  C#  D#  F   F#  G#  A#  C   C#
D  Major  D   E   F#  G   A   B   C#  D 
D# Major  D#  F   G   G#  A#  C   D   D#
E  Major  E   F#  G#  A   B   C#  D#  E 
F  Major  F   G   A   A#  C   D   E   F 
F# Major  F#  G#  A#  B   C#  D#  F   F#
G  Major  G   A   B   C   D   E   F#  G 
G# Major  G#  A#  C   C#  D#  F   G   G#
Minor scales 0 2 3 5 7 8 10
A  Minor  A   B   C   D   E   F   G   A 
A# Minor  A#  C   C#  D#  F   F#  G#  A#
B  Minor  B   C#  D   E   F#  G   A   B 
C  Minor  C   D   D#  F   G   G#  A#  C 
C# Minor  C#  D#  E   F#  G#  A   B   C#
D  Minor  D   E   F   G   A   A#  C   D 
D# Minor  D#  F   F#  G#  A#  B   C#  D#
E  Minor  E   F#  G   A   B   C   D   E 
F  Minor  F   G   G#  A#  C   C#  D#  F 
F# Minor  F#  G#  A   B   C#  D   E   F#
G  Minor  G   A   A#  C   D   D#  F   G 
G# Minor  G#  A#  B   C#  D#  E   F#  G#


Pentatonic scales
A  Pentatonic Major  A   B   C#  E   F#  A 
A  Pentatonic Minor  A   B   C   E   F   A 
A# Pentatonic Major  A#  C   D   F   G   A#
A# Pentatonic Minor  A#  C   C#  F   F#  A#
B  Pentatonic Major  B   C#  D#  F#  G#  B 
B  Pentatonic Minor  B   C#  D   F#  G   B 
C  Pentatonic Major  C   D   E   G   A   C 
C  Pentatonic Minor  C   D   D#  G   G#  C 
C# Pentatonic Major  C#  D#  F   G#  A#  C#
C# Pentatonic Minor  C#  D#  E   G#  A   C#
D  Pentatonic Major  D   E   F#  A   B   D 
D  Pentatonic Minor  D   E   F   A   A#  D 
D# Pentatonic Major  D#  F   G   A#  C   D#
D# Pentatonic Minor  D#  F   F#  A#  B   D#
E  Pentatonic Major  E   F#  G#  B   C#  E 
E  Pentatonic Minor  E   F#  G   B   C   E 
F  Pentatonic Major  F   G   A   C   D   F 
F  Pentatonic Minor  F   G   G#  C   C#  F 
F# Pentatonic Major  F#  G#  A#  C#  D#  F#
F# Pentatonic Minor  F#  G#  A   C#  D   F#
G  Pentatonic Major  G   A   B   D   E   G 
G  Pentatonic Minor  G   A   A#  D   D#  G 
G# Pentatonic Major  G#  A#  C   D#  F   G#
G# Pentatonic Minor  G#  A#  B   D#  E   G#

End of music - Begin of Frequency


Notes same A 5th on 1st == 2nd open (A)
Notes same D 5th on 1st == 3rd open (D)
Notes same G 5th on 1st == 4th open (G)
Notes same B 4th on 1st == 5th open (B)
Notes same E 5th on 1st == 6th open (E)

1st string open (E) is lowest. 6th string closed at rightmost B is highest
relative octave offsets of strings eBGDAE 7 2 10 5 0 7   (low->high) EADGBe 7 0 5 10 2 7
Call A lower than lowest E 0. => we get offsets : 7 12 17 22 26 31  (x +5 +5 +5 +4 +5)
 .. and highest B offset is 50.


 12 or 13 ???   12 too small (but right?), 13 too big, real Guitar in between?


2.71828182845905 1 -1.99840144432528e-15
 e = 2.71828182845906 log(2.71828182845906) = 1 (should be 1)
 1.0594630943593**12 = 2.00000000000001 (should be 2)


HTML Guitar fretboard: Fret number and length(mm)
Offset, note and frequency(Hz) (if next lowest C off fretboard == 64Hz) (offset from next lowest A off fretboard)
Note every 12 semitones (=frets) means 2*frequency
0 652.0 1 615.4 2 580.9 3 548.3 4 517.5 5 488.4 6 461.0 7 435.2 8 410.7 9 387.710 365.911 345.412 326.013 307.714 290.415 274.116 258.717 244.218 230.519 217.6
31 322.5 E 32 341.7 F 33 362.0 F#34 383.6 G 35 406.4 G#36 430.5 A 37 456.1 A#38 483.3 B 39 512.0 C 40 542.4 C#41 574.7 D 42 608.9 D#43 645.1 E 44 683.4 F 45 724.1 F#46 767.1 G 47 812.7 G#48 861.1 A 49 912.3 A#50 966.5 B
26 241.6 B 27 256.0 C 28 271.2 C#29 287.4 D 30 304.4 D#31 322.5 E 32 341.7 F 33 362.0 F#34 383.6 G 35 406.4 G#36 430.5 A 37 456.1 A#38 483.3 B 39 512.0 C 40 542.4 C#41 574.7 D 42 608.9 D#43 645.1 E 44 683.4 F 45 724.1 F#
22 191.8 G 23 203.2 G#24 215.3 A 25 228.1 A#26 241.6 B 27 256.0 C 28 271.2 C#29 287.4 D 30 304.4 D#31 322.5 E 32 341.7 F 33 362.0 F#34 383.6 G 35 406.4 G#36 430.5 A 37 456.1 A#38 483.3 B 39 512.0 C 40 542.4 C#41 574.7 D
17 143.7 D 18 152.2 D#19 161.3 E 20 170.9 F 21 181.0 F#22 191.8 G 23 203.2 G#24 215.3 A 25 228.1 A#26 241.6 B 27 256.0 C 28 271.2 C#29 287.4 D 30 304.4 D#31 322.5 E 32 341.7 F 33 362.0 F#34 383.6 G 35 406.4 G#36 430.5 A
12 107.6 A 13 114.0 A#14 120.8 B 15 128.0 C 16 135.6 C#17 143.7 D 18 152.2 D#19 161.3 E 20 170.9 F 21 181.0 F#22 191.8 G 23 203.2 G#24 215.3 A 25 228.1 A#26 241.6 B 27 256.0 C 28 271.2 C#29 287.4 D 30 304.4 D#31 322.5 E
7 80.6 E 8 85.4 F 9 90.5 F#10 95.9 G 11 101.6 G#12 107.6 A 13 114.0 A#14 120.8 B 15 128.0 C 16 135.6 C#17 143.7 D 18 152.2 D#19 161.3 E 20 170.9 F 21 181.0 F#22 191.8 G 23 203.2 G#24 215.3 A 25 228.1 A#26 241.6 B
Real guitar string length max,min = 652,217 
Guitar One,Two => i=0..20 soo....is that one too many? YES :(
Guitar 3,4 => i=0..19 OK? YES :)
Guitar 3 (from 217 up) 650.265271364483 613.768686069926 579.320496709797 546.805735654377 516.115887911183 487.14852896627 459.806982951936 434.000000000001 409.641451703856 386.650043672908 364.949044220113 344.4660282771 325.132635682241 306.884343034962 289.660248354898 273.402867827188 258.057943955591 243.574264483134 229.903491475967 217
Guitar 4 (from 652 dn) 652 615.406051868464 580.865964227501 548.264462745421 517.492742941633 488.448107061798 461.033621333628 435.15779245943 410.734262265728 387.681519490886 365.922627748855 345.384968761129 325.999999999999 307.703025934231 290.43298211375 274.13223137271 258.746371470816 244.224053530898 230.516810666813 217.578896229715
Real guitar x = 1.05961166227198, not 1.0594630943593   oh yeah _BIG_ difference:0.000148567912684028
Real guitar 652 615.319765924439 580.703089474396 548.033878967767 517.202573811516 488.10577707549 460.645908736897 434.730878432573 410.273776621559 387.19258312226 365.40989204673 344.852652209614 325.451922141168 307.142638882764 289.863399789504 273.55625660819 258.166521140057 243.642581836544 229.935730713018 216.999999999999

Frequency:   256 * 1.0594630943593**12 = 512.000000000002     512 1024     1024 2048.00000000001
 0 C  128.00   1 C# 135.61   2 D  143.68   3 D# 152.22   4 E  161.27   5 F  170.86   6 F# 181.02   7 G  191.78   8 G# 203.19   9 A  215.27  10 A# 228.07  11 B  241.63  12 C  256.00  13 C# 271.22  14 D  287.35  15 D# 304.44  16 E  322.54  17 F  341.72  18 F# 362.04  19 G  383.57  20 G# 406.37  21 A  430.54  22 A# 456.14  23 B  483.26  24 C  512.00  25 C# 542.45  26 D  574.70  27 D# 608.87  28 E  645.08  29 F  683.44  30 F# 724.08  31 G  767.13  32 G# 812.75  33 A  861.08  34 A# 912.28  35 B  966.53  36 C  1024.00  37 C# 1084.89  38 D  1149.40  
Frequency's 128 ... 256 ... 512: 128 135.61127607799 143.6751421836 152.218510720348 161.269894386544 170.859501333765 181.019335983756 191.783305840216 203.18733465193 215.269482304951 228.070071843927 241.631824046514 256.000000000001 271.22255215598 287.350284367201 304.437021440698 322.539788773089 341.71900266753 362.038671967514 383.566611680432 406.374669303861 430.538964609904 456.140143687856 483.26364809303 512.000000000003 542.445104311963 574.700568734403 608.874042881397 645.07957754618 683.438005335063 724.07734393503 767.133223360867 812.749338607725 861.077929219811 912.280287375715 966.527296186063 1024.00000000001 1084.89020862393 1149.40113746881


And major Roots, 3rds and 5ths?  resonance?  yep. reasonably close.
1st (root, 3rd, 5th, root) frequencies
2nd Calculated resonant frequencies: Root, +rootDif/4, +rootDif/2
A  Major  A  215.27  C# 271.22  E  322.54  A  430.54
             215.27     269.09     322.90
A# Major  A# 228.07  D  287.35  F  341.72  A# 456.14
             228.07     285.09     342.11
B  Major  B  241.63  D# 304.44  F# 362.04  B  483.26
             241.63     302.04     362.45
C  Major  C  256.00  E  322.54  G  383.57  C  512.00
             256.00     320.00     384.00
C# Major  C# 271.22  F  341.72  G# 406.37  C# 542.45
             271.22     339.03     406.83
D  Major  D  287.35  F# 362.04  A  430.54  D  574.70
             287.35     359.19     431.03
D# Major  D# 304.44  G  383.57  A# 456.14  D# 608.87
             304.44     380.55     456.66
E  Major  E  322.54  G# 406.37  B  483.26  E  645.08
             322.54     403.17     483.81
F  Major  F  341.72  A  430.54  C  512.00  F  683.44
             341.72     427.15     512.58
F# Major  F# 362.04  A# 456.14  C# 542.45  F# 724.08
             362.04     452.55     543.06
G  Major  G  383.57  B  483.26  D  574.70  G  767.13
             383.57     479.46     575.35
G# Major  G# 406.37  C  512.00  D# 608.87  G# 812.75
             406.37     507.97     609.56
....................
....................
....................
....................
....................
....................

Perl code

.. I'm just learning ... but it's quite powerful. I'm sure what I'm doing here is quite limited but there's lovely knacky things about perl that make it easy. I'd recommend perl to anyone.

#!/local/bin/perl

use CGI::Request;
my $cgi = GetRequest;

my $formComments=<<"EINDE"
# Music - scales
#         frequency  12 notes  C=256Hz, 512Hz => spacing is 12th root of 2?
# Root, 3rd and 5th freq spacing?  resonant  yes! yes!  (for major scales)  wow!
# Guitar notes, chords
#
EINDE
;

my $modeComments=<<"EINDE"
Modes? Modes of G major follow. Just G scale starting from different notes.
Ionian mode _IS_ major key. And pattern moves up+down fretboard giving different keys.
Learn pattern from root to root.

Ionian == natural major
Aeolian == natural minor

Pentatonic => scale has 5 notes only, drop 4th and 7th
Pentatonic G: G A B D E G
Has 5 modes, 1st to 5th  related to Ionian, Dorian, Phyrgian, Mixolydian and Aeolian, just drop the not-needed notes.

G Major: G A B C D E F#
    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
||| B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#|
||| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |
||| D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |
||| A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B | C |   | D |   | E |
||| E |   | F#| G |   | A |   | B | C |   | D |   | E |   | F#| G |   | A |   | B |
           xxxxxxxxxxxxxxx
            Ionian key G => G(3)
                   xxxxxxxxxxxxxxxxxxx
                    Dorian key G => A(5)
                               xxxxxxxxxxxxxxx
                                Phyrgian key G => B(7)
                               xxxxxxxxxxxxxxx
                                Lydian key G => C(8)
                                       xxxxxxxxxxxxxxxxxxx
                                        Mixolydian key G => D(10)
                                               xxxxxxxxxxxxxxxxxxx
                                                Aeolian key G => E(12)
           xxxxxxxxxxxxxxx                                 xxxxxxxxxxxxxxx
                                                            Locrian key G => F#(14)
EINDE
;

# needed for numeric sort
sub numericCompare { $a <=> $b; }

###########
# 
sub defineGlobals
{
# 13 divisions for an octave, 12 notes.
$chromaticScale="A  A# B  C  C# D  D# E  F  F# G  G# ";
$maxScaleNotes=12;
$chromaticScaleR="A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# A  A# B  C  C# D  D# E  F  F# G  G# ";

@noteColourTable= ( "444444", "445555", "446666", "447777", "448888", "449999", "44AAAA", "44BBBB", "44CCCC", "44DDDD", "44EEEE", "44FFFF" );
@noteColourTable2= ( "000000", "000000", "000000", "000000", "000000", "000000", "000000",
                     "1100BC", "1100EF", "220055", "2200AA", "220056", "360089", 
		     "36CCCC", "36FF55", "445510", "443333", "446666", "449999",
                     "4400BC", "4400EF", "660000", "660023", "660056", "660089",
                     "66CCCC", "66FF55", "885510", "883333", "886666", "889999",
                     "8800BC", "8800EF", "AA0000", "AA0023", "AA0056", "AA0079",
                     "AACCCC", "AAFF55", "CC5510", "CC3333", "CC6666", "CC9999",
                     "CC00BC", "CC00EF", "EE0000", "EE0023", "EE0056", "EE3399",
                     "EFFF55", "FFFFFF" );

# Major chords => 0 2 45 7 9 BC   (semi-tone spacing)
@majorSemiToneSpacing = ( 0,2,4,5,7,9,11 );
@majorR35ToneSpacing = ( 0,4,7 );
@pentatonicMajorSemiToneSpacing = ( 0,2,4,7,9 );
# Minor chords    0 23 5 78 A C
@minorSemiToneSpacing = ( 0,2,3,5,7,8,10 );
@minorR35ToneSpacing = ( 0,3,7 );
@pentatonicMinorSemiToneSpacing = ( 0,2,3,7,8 );

# interesting perl feature! look at major and minor semitonespacing,
# there was more messing with major and it got left before going all the way to the end.
# print major....  gave 3 5 7 8 10 0 2  print minor... gave 0 2 3 5 7 8 10
# so remember to sort with foreaches when order matters (e.g. printing scales).
# also sort produces 0 10 2 3 5 7 8  !! 
# so sort numericCompare ...
# nope! This was it: (after foreach $root (major....) )
# $root+=3;# going from C natural so we get all natural notes - don't ask.  #yeow! this changes @majorSemiToneSpacing!
# added 3 to all in @major...

# Guitar fretboard note offsets   e(7) B(2) G(10) D(5) A(0) E(7)   (high->low)  I think?
@guitarFretNotes = (31,26,22,17,12,7);
#@guitarFretNotes = (7,2,10,5,0,7);
$maxGuitarFrets=20;

@notes = split(/ [ ]*/,$chromaticScaleR);
}


###########
# Pass in offset of root along chromatic scale from A, e.g. A=0 C=3 G=10
# $what is major or minor or pentatonicmajor ......
# globals @majorSemiToneSpacing or @pentatonic... or @minor... are passed in
# Uses globals @notes $maxScaleNotes
sub printScale
{
local ($root, $what, *scaleToneSpacing) = @_;
printf "%-2s %s ",$notes[$root],$what;
my @scaleNote;
my $c=0;
foreach $i (sort numericCompare @scaleToneSpacing) {
  $scaleNote[$c++]=$notes[($i + $root) % $maxScaleNotes];
  printf " %-2s ",$scaleNote[$c-1];
}
printf " %-2s\n",$notes[$root];
# printf " %-2s  3rd=%-2s 5th=%-2s\n",$notes[$root],$scaleNote[2],$scaleNote[4];
}


###########
# 
# Uses globals @notes @guitarFretNotes $maxGuitarFrets $maxScaleNotes
sub printGuitarFretboard
{
foreach $note (@guitarFretNotes) {
  print "\n||";
  for ($i=0;$i<$maxGuitarFrets;$i++) {
#    print "| $notes[$note+$i%$maxScaleNotes]";
    printf "| %-2s", $notes[$note+$i%$maxScaleNotes];
  }
  print "|";
}
}


###########
# Pass in offset of root along chromatic scale from A, e.g. A=0 C=3 G=10
# globals @majorSemiToneSpacing or @pentatonic... or @minor... are passed in
# Uses globals @notes @guitarFretNotes $maxGuitarFrets $maxScaleNotes
sub printGuitarFretboardScale
{
#$root=$_[0];
#*scaleToneSpacing=@_[1];
local ($root, *scaleToneSpacing) = @_;

  foreach $note (@guitarFretNotes) {
    print "\n||";
    for ($i=0;$i<$maxGuitarFrets;$i++) {
      # if this_note     isin  this_scale
      # if ($note+$i)%$maxScaleNotes isin (@scaleToneSpacing)+$root
      undef $where;
      for ($[ .. $#scaleToneSpacing) {
        $where=$_, last if (($scaleToneSpacing[$_]+$root)%$maxScaleNotes eq ($note+$i)%$maxScaleNotes);
      }
      if (defined($where)) {
        printf "| %-2s", $notes[($note+$i)%$maxScaleNotes];
      }
      else {
        print "|   ";
      }
    }
    print "|";
  }

}



###########
# 
# Uses globals @notes @guitarFretNotes $maxGuitarFrets $maxScaleNotes
# colour by note
sub printGuitarFretboardTable
{
print "";
foreach $note (@guitarFretNotes) {
  print "";
  for ($i=0;$i<$maxGuitarFrets;$i++) {
    $colour=$noteColourTable[($note+$i)%$maxScaleNotes];
    printf "", $notes[$note+$i%$maxScaleNotes];
  }
  print "";
}
print "
%-2s
\n"; } ########### # Pass in offset of note along chromatic scale from A, e.g. A=0 C=3 G=10 # Uses globals @notes @majorSemiToneSpacing @guitarFretNotes $maxGuitarFrets $maxScaleNotes sub printGuitarFretboardScaleTable { $root=$_[0]; print ""; foreach $note (@guitarFretNotes) { print ""; for ($i=0;$i<$maxGuitarFrets;$i++) { # if this_note isin this_scale # if ($note+$i)%$maxScaleNotes isin (@majorSemiToneSpacing)+$root undef $where; for ($[ .. $#majorSemiToneSpacing) { $where=$_, last if (($majorSemiToneSpacing[$_]+$root)%$maxScaleNotes eq ($note+$i)%$maxScaleNotes); } if (defined($where)) { if ($where == 0) { printf "", $notes[$note+$i%$maxScaleNotes]; } elsif ($where == 2) { printf "", $notes[$note+$i%$maxScaleNotes]; } elsif ($where == 4) { printf "", $notes[$note+$i%$maxScaleNotes]; } else { printf "", $notes[$note+$i%$maxScaleNotes]; } } else { printf ""; } } print ""; } print "
%-2s%-2s%-2s%-2s
\n"; } ########### # Assuming low E note (7) lower C below that (3) maps to ... 64Hz? # colour by offset (maps to frequency) sub printGuitarFretboardTableFreq { print ""; print ""; for ($i=0;$i<$maxGuitarFrets;$i++) { printf ""; foreach $note (@guitarFretNotes) { print ""; for ($i=0;$i<$maxGuitarFrets;$i++) { # $colour=$noteColourTable[($note+$i)%$maxScaleNotes]; $colour= ((($note+$i-7)*0x05 ) % 0x100 ) * 0x10000 +((($note+$i)*0x14 ) % 0x100 ) * 0x100 + (($note+$i-7)*0x33 ) % 0x100; # $colour=$noteColourTable2[$note+$i]; printf "", $colour%0x1000000, $note+$i, 64*($twelfthroot2**($note+$i-3)), $notes[$note+$i%$maxScaleNotes]; } print ""; } print "
%2d %4.1f", $i, 652/($twelfthroot2**$i); } print "
%2d %-3.1f %-2s
\n"; } ########### # sub printBlankColourTable { print ""; foreach $note (@guitarFretNotes) { print ""; for ($i=0;$i<$maxGuitarFrets;$i++) { $colour= ((($note+$i-7)*0x05 ) % 0x100 ) * 0x10000 +((($note+$i)*0x14 ) % 0x100 ) * 0x100 + (($note+$i-7)*0x33 ) % 0x100; printf "", $colour%0x1000000; } print ""; } print "
.
\n"; } ########### # MAIN: { print "calc-music.pl
$formComments\n";

defineGlobals();

print "\nDefinitions\n";
print "chromaticScale $chromaticScale\n";
# print "$chromaticScaleR\n";
print "majorSemiToneSpacing @majorSemiToneSpacing\n";
print "minorSemiToneSpacing @minorSemiToneSpacing\n";
print "pentatonicMajorSemiToneSpacing @pentatonicMajorSemiToneSpacing\n";
print "pentatonicMinorSemiToneSpacing @pentatonicMinorSemiToneSpacing\n";
print "notes @notes\n";

print "notes ";
foreach $note (@notes) {
  print "$note ";
  }
print "\n";

print "notes by number ";
for ($i=0;$i<$maxScaleNotes;$i++) {
    print "$i $notes[$i] ";
  }

print "

";

print "\n\nGuitar fretboard:  note(offset)   e(7) B(2) G(10) D(5) A(0) E(7)";
&printGuitarFretboard;

print "

";

print "\n\nHTML Guitar fretboard:  note(offset)   e(7) B(2) G(10) D(5) A(0) E(7)\n
"; &printGuitarFretboardTable(); print "
";

print "\n\nHTML Guitar fretboard: C major  Red=Root Green=3rd Blue=5th\n
"; &printGuitarFretboardScaleTable(3); print "
\n\nHTML Guitar fretboard: C major, note positions\n
"; $root=3; print ""; foreach $note (@guitarFretNotes) { print ""; for ($i=0;$i<20;$i++) { undef $where; for ($[ .. $#majorSemiToneSpacing) { $where=$_, last if (($majorSemiToneSpacing[$_]+$root)%12 eq ($note+$i)%12); } if (defined($where)) { printf ""; } else { printf ""; } } print ""; } print "
$where $majorSemiToneSpacing[$where]
\n";
print "\n\nHTML Guitar fretboard: G major  Red=Root Green=3rd Blue=5th\n
"; &printGuitarFretboardScaleTable(10); print "
\n\n$modeComments";
print "\n\nMajor scales, on the fretboard, more obfussy, you can see the different modes here!";
for($root=0;$root<$maxScaleNotes;$root++){
  print "\n$notes[$root] Major: ";
  &printGuitarFretboardScale($root,*majorSemiToneSpacing);
}

print "\n\nNatural Pentatonic scales, on the fretboard";
foreach $root (sort numericCompare @majorSemiToneSpacing) {
  $r=$root+3; #$root+=3;# going from C natural so we get all natural notes - don't ask.  #yeow! this changes @majorSemiToneSpacing!
  $r%=$maxScaleNotes; # might as well
  print "\n$notes[$r] Pentatonic Major: ";
  &printGuitarFretboardScale($r,*pentatonicMajorSemiToneSpacing);
}


print "\n\nMajor scales @majorSemiToneSpacing\n";
for($root=0;$root<$maxScaleNotes;$root++){
  &printScale($root,"Major",*majorSemiToneSpacing);
}

print "Minor scales @minorSemiToneSpacing\n";
for($root=0;$root<$maxScaleNotes;$root++){
  &printScale($root,"Minor",*minorSemiToneSpacing);
}

print "\n\nPentatonic scales\n";
for($root=0;$root<$maxScaleNotes;$root++){
  &printScale($root,"Pentatonic Major",*pentatonicMajorSemiToneSpacing);
  &printScale($root,"Pentatonic Minor",*pentatonicMinorSemiToneSpacing);
}


print "

End of music - Begin of Frequency


";


my $guitarComments=<<"EINDE"
Notes same A 5th on 1st == 2nd open (A)
Notes same D 5th on 1st == 3rd open (D)
Notes same G 5th on 1st == 4th open (G)
Notes same B 4th on 1st == 5th open (B)
Notes same E 5th on 1st == 6th open (E)

1st string open (E) is lowest. 6th string closed at rightmost B is highest
relative octave offsets of strings eBGDAE 7 2 10 5 0 7   (low->high) EADGBe 7 0 5 10 2 7
Call A lower than lowest E 0. => we get offsets : 7 12 17 22 26 31  (x +5 +5 +5 +4 +5)
 .. and highest B offset is 50.
EINDE
;

print "$guitarComments";

#         frequency  13 notes  C=256Hz, 512Hz => spacing is 13th root of 2?

# log(ab) = log(a) + log(b)    log(a/b) = log(a) - log(b)   log(a^b) = b*log(a)
# log(x) = y  =>   e^y=x

# #%#%###!@!! 13 should be 12?????
print "\n\n 12 or 13 ???   12 too small (but right?), 13 too big, real Guitar in between?\n\n";

# x^13 = 2   =>
# log(x^12) = log(2) =>
# log(x) = log(2)/12  =>
# e^(log(2)/12) = x

# calculate e :- shouldn'tthis be easier?
$e = 2.718;
$loge = log($e);
$diff=1-$loge;
for($e=2.718281828459;$e<2.72 && $diff>0;$e+=0.00000000000001) {
  $loge=log($e);
  $diff=1-$loge;
  if ($diff<0) {
    print "\n$e $loge $diff\n";
    }
  }

$x = $e**(log(2)/12);
$two = $x**12;
$twelfthroot2=$x;

print " e = $e log($e) = $loge (should be 1)\n";
print " $x**12 = $two (should be 2)\n";

print "\n\nHTML Guitar fretboard: Fret number and length(mm)";
print "\nOffset, note and frequency(Hz) (if next lowest C off fretboard == 64Hz) (offset from next lowest A off fretboard)";
print "\nNote every 12 semitones (=frets) means 2*frequency\n";
print "
"; &printGuitarFretboardTableFreq; print "
";



$guitarMaxLength = 652;
$guitarMinLength = 217;

$guitarThree[19]=217;
$guitarFour[0]=652;

print "Real guitar string length max,min = $guitarMaxLength,$guitarMinLength \n";
print "Guitar One,Two => i=0..20 soo....is that one too many? YES :(\n"; 
print "Guitar 3,4 => i=0..19 OK? YES :)\n"; 
for ($i=1;$i<20;$i++){
    $guitarThree[19-$i]=$guitarThree[20-$i]*$x;
    $guitarFour[$i]=$guitarFour[$i-1]/$x;
}
print "Guitar 3 (from 217 up) @guitarThree\n";
print "Guitar 4 (from 652 dn) @guitarFour\n";

# length difference  652-217   should be divisible in 20.
# 217 * $x2**19 = 652   pretty much YES.
$logx2 = log(652/217)/19;
$x2 = $e**(log(652/217)/19);
$delta=$x2-$x;
print "Real guitar x = $x2, not $x   oh yeah _BIG_ difference:$delta\n";
for ($i=0;$i<20;$i++){
    $guitarReal[$i]=652/($x2**$i);
}
print "Real guitar @guitarReal\n";

# Frequency should correlate though
# C = 256   *  $x**12   should be 512 ?  well, of course! That's the way I worked out $x silly.
$h=256*($x**12);
$h1=512*($x**12);
$h2=1024*($x**12);
print "\nFrequency:   256 * $x**12 = $h     512 $h1     1024 $h2\n";
# 39? silly cabbage. (cabbalo) should be 37
for ($i=0;$i<39;$i++){
    $noteFreq[$i]=128*($x**$i);
    printf "%2d %-2s %4.2f  ",$i,$notes[$i+3],$noteFreq[$i];
}
print "\nFrequency's 128 ... 256 ... 512: @noteFreq\n";

print "\n\nAnd major Roots, 3rds and 5ths?  resonance?  yep. reasonably close."; 
print "\n1st (root, 3rd, 5th, root) frequencies";
print "\n2nd Calculated resonant frequencies: Root, +rootDif/4, +rootDif/2\n";
for($root=0;$root<12;$root++){
  printf "%-2s Major", $notes[$root];
  foreach $i (@majorR35ToneSpacing,12) {
    $frequency = 256*($x**($root+$i-3));    # C is 3rd note
    printf "  %-2s %4.2f", $notes[($i + $root) % 12], $frequency;
  }
  print "\n        ";
  $rootFrequency = 256*($x**($root-3));    # C is 3rd note
  $topRootFrequency = 256*2*($x**($root-3));    # C is 3rd note
  $rootPlusHalf=$rootFrequency+($topRootFrequency-$rootFrequency)/2;
  $rootPlusQuart=$rootFrequency+($topRootFrequency-$rootFrequency)/4;
  printf "     %4.2f     %4.2f     %4.2f\n", $rootFrequency, $rootPlusQuart, $rootPlusHalf;
}

print "
"; &printBlankColourTable; print "
"; }