Mercurial > hg > aimmat
diff aim-mat/tools/note2fre.m @ 0:74dedb26614d
Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author | tomwalters |
---|---|
date | Fri, 20 May 2011 12:32:31 +0100 |
parents | |
children | 20ada0af3d7d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/aim-mat/tools/note2fre.m Fri May 20 12:32:31 2011 +0100 @@ -0,0 +1,74 @@ +% support file for 'aim-mat' +% +% This external file is included as part of the 'aim-mat' distribution package +% http://www.pdn.cam.ac.uk/cnbh/aim2006 +% $Date: 2008-06-10 18:00:16 +0100 (Tue, 10 Jun 2008) $ +% $Revision: 585 $ + +function [fre,oct,nr_note]=note2fre(note) + +% translates the note to the frequency + +note_names=['A ';'B ';'C ';'C#';'D ';'D#';'E ';'F ';'F#';'G ';'G#';'H ']; +lowest_note=27.5; % Hz =A1 440 Hz= a5 + + +rnote=note(1); +if strcmp(rnote(1),' ') || double(rnote(1))==9 + note=note(2:end); + rnote=note(1); +end +if strcmp(note(2),'#') + rnote=[rnote '#']; + octnum=note(3); +elseif strcmp(note(2),'b') + rnote=[rnote 'b']; + octnum=note(3); +else + octnum=note(2); +end + + +% http://www.jita.com.cn/Seiten/Theorie/musik_theorie_1.htm +switch rnote + case {'A','a'} + nr_note=1; + case {'A#','a#','Bb','bb'} + nr_note=2; + case {'H','h','B','b'} + nr_note=3; + case {'C','c'} + nr_note=4; + case {'C#','c#','Db','db'} + nr_note=5; + case {'D','d'} + nr_note=6; + case {'D#','d#','Eb','eb'} + nr_note=7; + case {'E','e'} + nr_note=8; + case {'F','f'} + nr_note=9; + case {'F#','f#','Gb','gb'} + nr_note=10; + case {'G','g'} + nr_note=11; + case {'G#','g#','Ab','ab'} + nr_note=12; + otherwise + fre=0; + return +end + +oct=str2num(octnum); + +% compansate for that the octave changes at C +if nr_note > 3 + calcoct=oct-1; +else + calcoct=oct; +end +gescent=calcoct*1200+100*(nr_note-1); +fre=cent2fre(lowest_note,gescent); + +