# 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.
    0023 %   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
    0024 %
    0025 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    0026 %   This program is free software; you can redistribute it and/or modify
    0027 %   it under the terms of the GNU Lesser General Public License as published by
    0028 %   the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
    0035 %
    0036 %   You can obtain a copy of the GNU Lesser General Public License from
    0037 %   https://www.gnu.org/licenses/ .
    0038 %
    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