# [Tutor] Musical Pitch

kevin parks kp8 at mac.com
Tue Feb 24 03:47:26 EST 2004

```Hi all.... I am here once again seeking some advice... You see i do
lots of stuff with music (and python) and i am starting to think that
there may be a better way of dealing with musical pitch. One problem is
that there are a lot of different ways to represent a note and
sometimes you want one and other times you need another representation,
and more often than not, you need ways of moving fluidly between the
two. So far i have just been sort of making things up as i go along,
making huge silly lists or dictionaries. In order to spare the list
some bandwidth i'll just post a URL showing the type of monstrous
kludgy constructs i have been using:

http://www.people.virginia.edu/~kpp9c/pitchname.py.html

But i am wondering if maybe it is time for me to take another (possibly
OO ? gasp!) oriented approach or just build a pitch module that i can
import and reuse.

Here are some possible representations just to give you a taste of what
i am up against (here i am talking 12 tone equal temperament, i have
other tools i use for dealing with tuning ratios)

1. Old fashioned letter names : A4 (C#3, and  the like)
2. Frequencies in Hz : 440.00
3. MIDI note numbers: 69
4. Octave point pitch-class: 8.09 (middle c = 8.00, there are 12 pitch
classes in an octave, 8.12 would = 9.00)
5. Octave point decimal : 8.75 (middle c = 8.00, but now the
pitch-class continuum is 100/12 (8.333..) * number of half steps. An
octave run of which would look something like this:

C    8.000000
C#    8.083335
D    8.166671
D#    8.249998
E    8.333333
F     8.416668
F#    8.500004
G    8.583331
G3    8.666666
A    8.750001
A#    8.833337
B    8.916664

So in all, 5 different representations of pitch....

Then there would be a slew of modulo 12 operations that maybe could be
functions or methods if i decide to get fancy such as transposition,
inversion, reducing to 1 oct range, compliment, pitch mapping.... etc.

All of which i hope to build up over time....

so... I am wondering:

1. anyone already have something like this hacked together?
2. anyone bored and want to take a whack helping me get started?
Or even just suggest some possible paths?

cheers,

kp

```