Exactly.
See also
http://www.audiocontentanalysis.org/code/audio-features/spectral-centroid/

Alexander

On 2016-02-01 17:24, robert bristow-johnson wrote:
> well, i remember a paper from long ago from James Beauchamp where he
> defines spectral centroid as
> 
>  
> 
>   SUM{ |c_n| n } / SUM{ |c_n| }
> 
>  
> 
> where c_n is the complex Fourier coefficient for the nth harmonic.  if
> you wanted to base it on energy
> 
>  
> 
>   SUM{ |c_n|^2 n } / SUM{ |c_n|^2 }
> 
>  
> 
> it will give you the harmonic number (in fractional form) where the
> centroid of magnitude or magnitude-squared (which is energy) is.
> 
> note that this expression is independent of the fundamental frequency, f0.
> 
>  
> 
>  
> 
> ---------------------------- Original Message ----------------------------
> 
> Subject: [music-dsp] Cheap spectral centroid recipe
> From: "Evan Balster" <e...@imitone.com>
> Date: Mon, February 1, 2016 1:41 pm
> To: music-dsp@music.columbia.edu
> --------------------------------------------------------------------------
> 
>>
>> First posting here. I'm an outsider to the DSP world, but I do quite a lot
>> of DSP research and development. In the course of my work I have turned up
>> a number of simple tricks which I imagine would prove handy to other
>> developers. I have combed through a handful of classic music-dsp
>> discussions (eg. pink noise generation) and I get the idea that sharing
>> techniques is encouraged here -- so I would like to make a habit of doing
>> this.
>>
>>
>> To that end: A handy, cheap algorithm for approximating the power-weighted
>> spectral centroid -- a signal's "mean frequency" -- which is a good
>> heuristic for perceived sound brightness
>> <https://en.wikipedia.org/wiki/Brightness#Brightness_of_sounds>. In spite
>> of its simplicity, I can't find any mention of this trick online -- the
>> literature almost always prescribes FFT.
>>
>> 1. Apply a first-difference filter to input signal A, yielding signal B.
>> 2. Square signal A, yielding signal AA; square signal B, yielding signal
>> BB.
>> 3. Apply a low-pass filter of your choice to AA, yielding PA, and BB,
>> yielding PB.
>> 4. Divide PB by PA, then multiply the result by the input signal's
>> sampling rate divided by pi.
>>
> 
> i *think* what that will get you is
> 
>   SUM{ |c_n|^2 f0^2 n^2 } / SUM{ |c_n|^2 }
> 
>  
> 
> and it will be proportional to the square of frequency.  is that what
> you want?
>  
> what if the first-difference filter (which is + 6 dB/oct) was replaced
> by an inverse pinking filter (which is +3 dB/oct) and you did that?
>  then the centroid measure would be proportional to frequency but still
> be based on energy.  you would still have to divide by f0 (requiring a
> pitch detector) to make it independent of the fundamental frequency and
> dependent only on the waveshape.
> 
>  
> 
>> [example code] <http://pastebin.com/EfRv4HRC>
>>
> 
>  
> 
> i'll look at it.
> 
> thanks Evan.
> 
> 
> 
> --
> 
>  
> 
> r b-j                   r...@audioimagination.com
> 
>  
> 
> 
> "Imagination is more important than knowledge."
> 
> 
> 
> _______________________________________________
> dupswapdrop: music-dsp mailing list
> music-dsp@music.columbia.edu
> https://lists.columbia.edu/mailman/listinfo/music-dsp
> 

-- 
Alexander Lerch

Assistant Professor, GT Center for Music Technology
www.gtcmt.gatech.edu

www.AudioContentAnalysis.org

_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to