|
A-Z (artist name) of Guitar Tab
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
0-9
Click HERE for an easy print version of theory - guitarscales c
################################################################
# The following is the author's own interpretation of the song #
# to be used for studying or private use only. Downloaded from #
# www.TabGuitarLessons.com. FREE GUITAR SOFTWARE + LOTS MORE! #
# Home of the 60 minute fretboard memory technique. You'll #
# memorise ALL the notes and positions on the fretboard in 60 #
# minutes or less. visit www.TabGuitarLessons.com today. #
################################################################
BUG ALERT! The previous posting of this program had a small error.
If you asked for a C dorian, you'd get a D dorian. All other modes
were shifted too. Here is the correct version:
-------------------------------------------------------------------
Here's a nifty little program I wrote to help guitar players learn
their scales.
You specify the starting note and the mode (Ionian,Lydian, etc), and
it produces two diagrams.
o The first is just a picture of the guitar neck showing where the all
of the notes are.
o The second shows you where the notes are for the particular tonic/mode
that you desire.
My Ibanez has 24 frets, but if you have fewer, you can easily modify
the program (just change MAXFRETS).
You can also easily modify the program to produce scales for different
tunings by changing the "guitar" array. EX: for the King's X/Pearl
Jam/Sound Garden/Neil Young "D" tuning, set it to {4,11,7,2,9,2}
With a little doing, you should be able to modify for instruments
with different number of stings (change MAXFRETS and fix draw_bound()
where it draws the "pearl inlays" on the neck).
BE FOREWARNED! This can produce W I D E output!
columns required = 6 + 6 * MAXFRETS
Example: 6 + 6 * 24 frets = 150 columns needed.
Good luck!
--------------------------------------------------------------------
#include
/* Version 1.1 C dorian was really a D dorian, etc. */
/* guitar_scales.c */
/* By William A. Huston */
/* huston@ap040.ti.com or huston@mksol.dseg.ti.com */
/* Submitted to the alt.guitar 3 Jun 92 */
/* You are free to use/copy/modify, as long as you keep */
/* all of these comments intact. Thanks and enjoy! */
/* change this to be the number of frets desired. */
/* BE FOREWARNED! This can produce W I D E output! */
/* columns required = 6 + 6 * MAXFRETS */
/* Example: 6 + 6 * 24 frets = 150 columns needed */
#define MAXFRET 24
#define STRING 6
char *note_text[12] =
{ " C ", /* 0 */
"C#/Db", /* 1 */
" D ", /* 2 */
"D#/Eb", /* 3 */
" E ", /* 4 */
" F ", /* 5 */
"F#/Gb", /* 6 */
" G ", /* 7 */
"G#/Ab", /* 8 */
" A ", /* 9 */
"A#/Bb", /* 10 */
" B " }; /* 11 */
/* change the following if you use a non-standard tuning */
char guitar[STRING] = {4,11,7,2,9,4} ; /* E=4 (hi), B=11, G,D,A,E (lo) */
char mode_start[7] = {0,2,4,5,7,9,11} ; /* intervals relative to tonic for ionian */
char *mode_text[7] = {"Ionian","Dorian","Phrygian",
"Lydian","Mixolydian","Aeolian","Locrian"};
char note_value[12];
void draw_bound(int string)
{
int fret;
printf("\n ");
for (fret =1; fret <= MAXFRET; fret ++)
{
if (((string == 2) && ((fret == 3 ) || (fret == 5 ) || (fret == 7 ) || (fret ==9 ) ||
(fret == 15) || (fret == 17) || (fret == 19) || (fret ==21)
)
) ||
(((string == 1) || (string == 3)) &&
((fret == 12) || (fret == 24))
)
)
printf("|=(*)="); /* a pearl inlay! */
else
printf("|=====");
}
printf("|\n");
}
/* draw the top line */
void draw_first()
{
int fret;
printf("\n\n ");
for (fret =1;fret <=MAXFRET;fret++)
printf("|=====");
printf("|\n");
}
main(argc,argv)
int argc;
char *argv[];
{
static int tonic = -1;
static int mode = -1;
char junk[100];
int k,x,i,string,fret,crap;
if (argc == 3)
{
sscanf(argv[1],"%d",&tonic);
sscanf(argv[2],"%d",&mode);
}
while (tonic <0 || tonic >11)
{
for (x=0;x<12;x++)
printf ("\t\t%3d : %s\n",x,note_text[x]);
printf("\n What tonic? ");
gets(junk);
sscanf(junk,"%d",&tonic);
if (tonic <0 || tonic >11)
printf("*** %d is an invalid input!\n",tonic);
else
printf("The tonic you selected was %d (%s)\n",tonic,note_text[tonic]);
}
while (mode <0 || mode >6)
{
for (x=0;x<7;x++)
printf ("\t\t%3d : %s\n",x,mode_text[x]);
printf("\n What mode? ");
gets(junk);
sscanf(junk,"%d",&mode);
if (mode <0 || mode >11)
printf("*** %d is an invalid input!\n",mode);
}
printf("\nYou have picked a %s %s scale.\n\n",note_text[tonic],mode_text[mode]);
k = mode_start[mode];
for (x=0;x<7;x++)
{
i = mode_start[(x+mode) % 7];
printf("%2d: %s\n",x+1,note_text[(tonic+i-k+12) % 12]);
note_value[(tonic+i-k+12) % 12] = x + 1 ;
}
/* print neck all notes */
draw_first();
for (string =0; string
|