[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference napalm::guitar

Title:GUITARnotes - Where Every Note has Emotion
Notice:Discussion of the finer stringed instruments
Moderator:KDX200::COOPER
Created:Thu Aug 14 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:3280
Total number of notes:61432

432.0. "Computer Program for Theoretical Musicians" by UHURU::LAMBERT (Skating away...) Thu Dec 17 1987 10:32

    Announcing the opening of Phase 0 for...

    
        The Computer Program for Theoretical Musicians

    
    Basically the CPTM is a program that allows you to play around with
    basic theory concepts regarding scales and intervals - it will not
    produce sound - it will run on a VAX - it will be written in VAX-C
    it will be standard C so it should port easily.
    
    What should it do?  Here's a list of things I'm already planning.
    
    Definitions: (these are somewhat arbitrary, but necessary)
    
	note names & values are defined as follows:
    
    	A  A#/Bb  B  C  C#/Db  D  D#/Eb  E  F  F#/Gb  G  G#/Ab
        0    1    2  3    4    5    6    7  8    9   10   11

    	Keynote - actual letter name of the key, for example:
    		  "Key of C#"  the keynote is C#.  Note that the
    		  keynote for the "Key of C# Major" and the
    		  "Key of C# Minor" is C# in both cases - the
    		  major/minor differntiation being one of scale
    		  and corresponding interval structure.

        Scale - This defines the interval structure that exists
    		from keynote to keynote(octave)  for example:
    		a "major" scale has the following interval sequence
    		2,2,1,2,2,2,1  such that to get the key of C# major
    		you would start with
    
    		C#/Db(4) + 1st interval(2)  =  2nd note(6) or D#/Eb

    		Defining scales becomes a matter of identifying the
    		intervals (as integers) which will allow you to progress
    		from keynote to keynote(octave)
    
    		So far I've identified the following scale/interval
		structures:
    
		           major = { 2, 2, 1, 2, 2, 2, 1 }
		           minor = { 2, 1, 2, 2, 1, 2, 2 }
		  harmonic_minor = { 2, 1, 2, 2, 1, 3, 1 }
		   melodic_minor = { 2, 1, 2, 2, 2, 2, 1 }
		          ionian = { 2, 2, 1, 2, 2, 2, 1 }
		          dorian = { 2, 1, 2, 2, 2, 1, 2 }
		        phrygian = { 1, 2, 2, 2, 1, 2, 2 }
		          lydian = { 2, 2, 2, 1, 2, 2, 1 }
		      mixolydian = { 2, 2, 1, 2, 2, 1, 2 }
		         aeolian = { 2, 1, 2, 2, 1, 2, 2 }
		         locrian = { 1, 2, 2, 1, 2, 2, 2 }
		       diminshed = { 2, 1, 2, 1, 2, 1, 2, 1 }
		pentatonic_major = { 2, 2, 3, 2, 3 }
		pentatonic_minor = { 3, 2, 2, 3, 2 }
		       enigmatic = { 1, 3, 2, 2, 2, 1, 1 }
		neopolitan_major = { 1, 2, 2, 2, 2, 2, 1 }
		neopolitan_minor = { 1, 2, 2, 2, 1, 3, 1 }
		 hungarian_minor = { 2, 1, 3, 1, 1, 3, 1 }

       degrees - degrees are the "n-th" note in a scale, they are
		 represented by uppercase roman numerals.  for example
    		 "I" is always the keynote in a particular scale, "II"
    		 is always the 2nd note in a scale arrived at by adding
    		 the first interval to the keynote's numeric value (also
    		 doing a modulus 12 on the result; modulus is a math
    		 operation that divides the result of the addition by
                 a number (12 in this case) and takes the remainder
    		 as the answer)  another example:  say the keynote is
    		 is G#/Ab(11), the scale is major, the first interval
    		 is 2, to get degree II we add 11+2=13, but there's
    		 no note 13; so we do (11+2)mod12 which divides the
    		 13 by 12 and returns only the remainder of 1, therefore
    		 II is A#/Bb(1).

	sequence-file, this is an ascii text file that contains a sequnce
    		of note names separated by up arrows (upcaret "^") or
		down arrows (letter "v") to indicate whether the interval
    		between the notes is rising or falling.  Doubling or
		tripling or... the arrows is allowed to indicate intervals
    		of one or more octaves.  Sorry,i havn't figured out
		any way to easily and simply incorporate rythm notations.
    
SCALE IDENTIFICATION:  You will be able to specify a keynote and a scale
    and the program will list all the "degrees" in the scale

SEQUENCE FILE TRANSPOSITION:  You will be able to construct a sequence
    of notes in a sequence file using a particular keynote/scale, and
    have the program read it and produce a corresponding sequence of
    notes in another keynote/scale.  This is a degree to degree translation
    which allows transpositions between scales with the same number
    of degrees - i'm a little uncertain at this point as to how it will
    handle scales with different numbers of degrees.
    
SEQUENCE FILE INVERSION: You will be able to feed a sequence file in
    and get an inversion sequence back out.  Maybe two flavors of this;
    one in which the inversion is degree based such that if the original
    sequence was from III^VI, then the inversion would be  IIIvVII.
    The other flavor would be a pure interval inversion based upon the
    note name such that C^D# would become CvA.

CHORD IDENTIFICATION: (if you've seen my previous note about this in
    MUSIC then you know i have no idea how to do this yet, but i think
    it ought ot be doable)
    
CHORD CONSTRUCTION: (see above)
    
SEQUENCE FILE HARMONIZATION: given a sequence file, construct a second
    sequence which harmonizes with the first according to a certain
    formula.  What kind of formulas would be needed?  Degree based thirds
    or fourths or fifths?  some kind of math formula which progressed
    the intervals between subsequent harmonized notes?  Use of standard
    counterpoint rules (if there are such things).
    
    OK, that's all i've thought about so far, i've actually got code
    written which will do the SCALE IDENTIFICATION function so it's
    in the works....
T.RTitleUserPersonal
Name
DateLines
432.1don't mean to rain on your parade, butCIMNET::JNELSONFri Dec 18 1987 12:4123
    don't you think that anyone who is concerned with the semi-advanced
    topics you are discussing would already be able to perform these
    functions on paper in the time it would take to boot the program?
    
    I'm not shooting down your idea, but it seems like all you're talking
    about is a program that spits information at you - sort of like
    a database, but without the data....  I think to have a successful
    program, you need to give the user something more than he could
    get by opening up a book...
    
    I wrote a similar program for guitarists a while ago (what I considered
    a valid application :-) which would, given a chord, calculate every
    possible version of that chord on the fretboard, rule out those
    which were unplayable based on finger displacement vs. fretboard
    position (the higher on the neck, the easier to play?), would instantly
    account for chord variations, etc.... and display them graphically.
    I thought it was really cool, but people I showed it to would rather
    have had Mel Bay's dictionary in their hands.
    
    Just a thought, trying to be constructive...
    
    Jon
    
432.2Who really likes Mel Bay anyway?CSC32::G_HOUSEGreg House - CSC/CSSat Dec 19 1987 12:3314
>        I wrote a similar program for guitarists a while ago (what I considered
>    a valid application :-) which would, given a chord, calculate every
>    possible version of that chord on the fretboard, rule out those
>    which were unplayable based on finger displacement vs. fretboard
>    position (the higher on the neck, the easier to play?), would instantly
>    account for chord variations, etc.... and display them graphically.

    Jon,
    
    You still have a copy of it?
    
    Greg
    
        
432.3One more...SKIVT::HEARNTimeshare - Life's a BATCH anywayMon Dec 21 1987 09:138
    
    	Jon,
    
    		I'd like to see a copy of it too.
    
    
    
    					Rich
432.4if you don't like it, you don't have to use it!UHURU::LAMBERTSkating away...Mon Dec 21 1987 09:5623
	"flame on"

    i recognized that what I needed from a computer program might not be
    what others would find useful which is why i posted this note in the
    first place.  if you can think of additional functions that could be
    developed from the basic features i've described fine, if you can't,
    that's OK too - but if the most constructive thing you can come up with
    is "don't do it, here's my program..." then i think you should start
    your own note so people don't get confused about what this note is
    supposed to be about. 

    i'm not doing my program for anyone's benefit but my own, i do a lot of
    composition in my cellar, and the ability to construct harmony lines,
    transpositions, etc... is a need that I have.  i don't understand your
    comment about how long it would take to load/boot; programs that run on
    VAXen don't need to be booted - you just run 'em. There's no way I
    could come up with tanspositions and inversions on paper faster than a
    computer could - these things are mathmatical derivations of a basic
    series and computers have always been faster at math than me. 
    
	"flame off"


432.5and another thing...UHURU::LAMBERTSkating away...Mon Dec 21 1987 09:585
    given the preponderance of chord dictionaries in existance, and
    their relative cheapness, i would postulate that programs which
    construct chord diagrams are of somewhat limited use as well...
    
    -max-
432.6A great learning toolCSC32::G_HOUSEGreg House - CSC/CSMon Dec 21 1987 15:137
    Seems to me that, if nothing else, writing a program to do something
    forces you to learn it very thoroughly.  I think Maxs program sounds
    like a fun project, whether it's useful to anyone else or not. 
    I know I'd like to see it when it's done.
    
    Greg
    
432.7Interested partySUBURB::BURKEGOvation axe manMon Jul 11 1988 10:426
    
    tentatively asks......
    
    	Is it finished yet?
    
    Gavin
432.81� years laterPNO::HEISERbash-n-the codeTue Jul 18 1989 15:513
    What's the status of this program?
    
    Mike
432.9Max...Max??FROST::SIMONBirds can't row boatsWed Jul 19 1989 14:444
Doing a quick check of this conference, it appears that Max hasn't written
anything to this conference in over a year.....you out there Max???


432.10DNEAST::BOTTOM_DAVIDThe sea refuses no river...Wed Jul 19 1989 16:5720
I have, thanks to another local guitarist, a postscript blank of a neck or
a .rags of the same thing..

(RAGS is a decwindows color graphics tool, and a .rags file was created in RAGS)

Anyone who wants a copy of either is welcome to it.

There are also several others where certain scales have been entered.

C minor
C pent min
D major
D mixo
D pent maj
D pent min
E maj

these are available in either format....see me or vaxmail me

dbii