# v_midi2frq

## PURPOSE

V_MIDI2FRQ Convert musical note numbers to frequencies F=(N,S)

## SYNOPSIS

function f=v_midi2frq(n,s)

## DESCRIPTION

    V_MIDI2FRQ    Convert musical note numbers to frequencies F=(N,S)
            s is:    'e' equal tempered (default)
                'p' pythagorean scale
                'j' just intonation

     notes are numbered in semitones with middle C being 60
     On the equal tempered scale, note 69 (the A above middle C)
     has a frequency of 440 Hz.

     see FRQ2NOTE for the inverse transform

## CROSS-REFERENCE INFORMATION

This function calls:

This function is called by:

## SOURCE CODE

    0001 function f=v_midi2frq(n,s)
    0002 %V_MIDI2FRQ    Convert musical note numbers to frequencies F=(N,S)
    0003 %        s is:    'e' equal tempered (default)
    0004 %            'p' pythagorean scale
    0005 %            'j' just intonation
    0006 %
    0007 % notes are numbered in semitones with middle C being 60
    0008 % On the equal tempered scale, note 69 (the A above middle C)
    0009 % has a frequency of 440 Hz.
    0010 %
    0011 % see FRQ2NOTE for the inverse transform
    0012
    0013 % Pythagorean
    0014 %     sharps 1 2187/2048 9/8 19683/16384 81/64 4/3 729/512  3/2 6561/4096 27/16 59049/32768 243/128 2
    0015 %     flats  1 256/243   9/8 32/27       81/64 4/3 1024/729 3/2 128/81    27/16 16/9        243/128 2
    0016 %
    0017 % Just Intonation
    0018 %     sharps 1 25/24 9/8 75/64 5/4 4/3 45/32  3/2 25/16 5/3 225/128 15/8 2
    0019 %     flats  1 16/15 9/8 6/5   5/4 4/3 108/75 3/2 8/5   5/3 18/10   15/8 2
    0020
    0021
    0022 %      Copyright (C) Mike Brookes 1997
    0023 %      Version: $Id: v_midi2frq.m 10865 2018-09-21 17:22:45Z dmb $
    0024 %
    0025 %   VOICEBOX is a MATLAB toolbox for speech processing.
    0026 %   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
    0027 %
    0028 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    0029 %   This program is free software; you can redistribute it and/or modify
    0030 %   it under the terms of the GNU Lesser General Public License as published by
    0031 %   the Free Software Foundation; either version 3 of the License, or
    0032 %   (at your option) any later version.
    0033 %
    0034 %   This program is distributed in the hope that it will be useful,
    0035 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
    0036 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0037 %   GNU Lesser General Public License for more details.
    0038 %
    0039 %   You can obtain a copy of the GNU Lesser General Public License from
    0040 %   https://www.gnu.org/licenses/ .
    0041 %
    0042 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    0043
    0044 if nargin > 1
    0045   if s(1)=='p'
    0046     r=[256/243 9/8 32/27 81/64 4/3 729/512 3/2 128/81 27/16 16/9 243/128];
    0047   elseif s(1)=='j'
    0048     r=[16/15 9/8 6/5 5/4 4/3 36/25 3/2 8/5 5/3 9/5 15/8];
    0049   else
    0050     r=0;
    0051   end
    0052   if r(1)
    0053     c=[0 0 12*log(r)/log(2)-(1:11) 0];
    0054     nm=mod(n,12);
    0055     na=floor(nm);
    0056     nb=nm-na;
    0057     f=440*exp((n+c(na+2).*(1-nb)+c(na+3).*nb-69)*log(2)/12);
    0058   else
    0059     f=440*exp((n-69)*log(2)/12);
    0060   end
    0061 else
    0062   f=440*exp((n-69)*log(2)/12);
    0063 end
    0064