# v_frq2cent

## PURPOSE

V_FRQ2ERB Convert Hertz to Cents frequency scale [C,CR]=(FRQ)

## SYNOPSIS

function [c,cr] = v_frq2cent(frq)

## DESCRIPTION

```V_FRQ2ERB  Convert Hertz to Cents frequency scale [C,CR]=(FRQ)
[c,cr] = v_frq2mel(frq) converts a vector of frequencies (in Hz)
to the corresponding values on the logarithmic cents scale.
100 cents corresponds to one semitone and 440Hz corresponds to 5700
cents.
The optional cr output gives the gradient in Hz/cent.

The relationship between cents and frq is given by:

c = 1200 * log2(f/(440*(2^((3/12)-5)))

Reference:

[1] Ellis, A.
On the Musical Scales of Various Nations
Journal of the Society of Arts, 1885, 485-527```

## CROSS-REFERENCE INFORMATION

This function calls:
• v_xticksi V_XTIXKSI labels the x-axis of a plot using SI multipliers S=(AH)
• v_yticksi V_YTIXKSI labels the y-axis of a plot using SI multipliers S=(AH)
This function is called by:

## SOURCE CODE

```0001 function [c,cr] = v_frq2cent(frq)
0002 %V_FRQ2ERB  Convert Hertz to Cents frequency scale [C,CR]=(FRQ)
0003 %    [c,cr] = v_frq2mel(frq) converts a vector of frequencies (in Hz)
0004 %    to the corresponding values on the logarithmic cents scale.
0005 %   100 cents corresponds to one semitone and 440Hz corresponds to 5700
0006 %   cents.
0007 %   The optional cr output gives the gradient in Hz/cent.
0008 %
0009 %    The relationship between cents and frq is given by:
0010 %
0011 %    c = 1200 * log2(f/(440*(2^((3/12)-5)))
0012 %
0013 %    Reference:
0014 %
0015 %     [1] Ellis, A.
0016 %         On the Musical Scales of Various Nations
0017 %         Journal of the Society of Arts, 1885, 485-527
0018
0019 %      Copyright (C) Mike Brookes 1998
0020 %      Version: \$Id: v_frq2cent.m 10865 2018-09-21 17:22:45Z dmb \$
0021 %
0022 %   VOICEBOX is a MATLAB toolbox for speech processing.
0024 %
0025 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0026 %   This program is free software; you can redistribute it and/or modify
0028 %   the Free Software Foundation; either version 2 of the License, or
0029 %   (at your option) any later version.
0030 %
0031 %   This program is distributed in the hope that it will be useful,
0032 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
0033 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0034 %   GNU General Public License for more details.
0035 %
0036 %   You can obtain a copy of the GNU General Public License from
0037 %   http://www.gnu.org/copyleft/gpl.html or by writing to
0038 %   Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
0039 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0040 persistent p q
0041 if isempty(p)
0042     p=1200/log(2);
0043     q=5700-p*log(440);
0044 end
0045 af=abs(frq);
0046 % c = 1200*sign(frq).*log2(frq/(440*2^((3/12)-5)));
0047 c=sign(frq).*(p*log(af)+q);
0048 cr=af/p;
0049 if ~nargout
0050     plot(frq,c,'-x');
0051     xlabel(['Frequency (' v_xticksi 'Hz)']);
0052     ylabel(['Frequency (' v_yticksi 'Cents)']);
0053 end```