[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
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.R | Title | User | Personal Name | Date | Lines |
---|
432.1 | don't mean to rain on your parade, but | CIMNET::JNELSON | | Fri Dec 18 1987 12:41 | 23 |
| 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.2 | Who really likes Mel Bay anyway? | CSC32::G_HOUSE | Greg House - CSC/CS | Sat Dec 19 1987 12:33 | 14 |
| > 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.3 | One more... | SKIVT::HEARN | Timeshare - Life's a BATCH anyway | Mon Dec 21 1987 09:13 | 8 |
|
Jon,
I'd like to see a copy of it too.
Rich
|
432.4 | if you don't like it, you don't have to use it! | UHURU::LAMBERT | Skating away... | Mon Dec 21 1987 09:56 | 23 |
| "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.5 | and another thing... | UHURU::LAMBERT | Skating away... | Mon Dec 21 1987 09:58 | 5 |
| 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.6 | A great learning tool | CSC32::G_HOUSE | Greg House - CSC/CS | Mon Dec 21 1987 15:13 | 7 |
| 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.7 | Interested party | SUBURB::BURKEG | Ovation axe man | Mon Jul 11 1988 10:42 | 6 |
|
tentatively asks......
Is it finished yet?
Gavin
|
432.8 | 1� years later | PNO::HEISER | bash-n-the code | Tue Jul 18 1989 15:51 | 3 |
| What's the status of this program?
Mike
|
432.9 | Max...Max?? | FROST::SIMON | Birds can't row boats | Wed Jul 19 1989 14:44 | 4 |
| 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.10 | | DNEAST::BOTTOM_DAVID | The sea refuses no river... | Wed Jul 19 1989 16:57 | 20 |
| 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
|