What is the meaning of the EchoNest API's getT


The EchoNest Analyzer Documentation states the following regarding timbre:

timbre is the quality of a musical note or sound that distinguishes different types of musical instruments, or voices. It is a complex notion also referred to as sound color, texture, or tone quality, and is derived from the shape of a segment’s spectro-temporal surface, independently of pitch and loudness. The Echo Nest Analyzer’s timbre feature is a vector that includes 12 unbounded values roughly centered around 0. Those values are high level abstractions of the spectral surface, ordered by degree of importance. For completeness however, the first dimension represents the average loudness of the segment; second emphasizes brightness; third is more closely correlated to the flatness of a sound; fourth to sounds with a stronger attack; etc. See an image below representing the 12 basis functions (i.e. template segments). The actual timbre of the segment is best described as a linear combination of these 12 basis functions weighted by the coefficient values: timbre = c1 x b1 + c2 x b2 + ... + c12 x b12, where c1 to c12 represent the 12 coefficients and b1 to b12 the 12 basis functions as displayed below. Timbre vectors are best used in comparison with each other.

My understanding is that the b vector ({b1...b12}) is what is being returned by your API's getTimbre method. But then where are the {c1...c12} coefficients coming from? I don't understand how to acquire a scalar timbre from a vector timbre (primarily because your analysis API is closed source). Can you help me out with this?


Note that answers on this website come from volunteers. To get official support for the library, you need to contact the publisher directly.

b1 … b12 is not the result of the audio analysis, it is merely descriptive of what the analysis does. They are fixed constants as shown in the diagram:

The vector of scalars c1 … c12 is what the analyzer produces. Of course, the sound cannot be perfectly described by only 12 numbers. Multiplying the scalars by the functions won't reproduce the original music because there's not enough data there; it's only an approximation. Possibly, though, you'll get a similar "mood" from each segment, so it could be interesting to try and listen.


  • Error: assembly specified in the dependencies manifest was not found.
  • I add a “align” constraint, but Xcode add a “pin” constraint autolayout
  • XML Meta Schema
  • chaincode in hyperledger composer vs chaincode in hyperleger fabric?
  • How to change a Lambert Conic Conformal raster projection to latlon degree R
  • Choosing radix and modulus prime in rabin-karp rolling hash
  • Taylor Series Difference between exp(-x) and exp(+x)
  • Threads have almost no overhead; processes have considerable overhead. What does it mean? [closed]
  • jQuery Animate transform infinite
  • jquery validator.methods.number and comma instead of dot in number
  • Weka - binary classification giving polarized/biased results
  • not able to install mysql on ubuntu 11 [closed]
  • Is it possible to change mysql DB encoding charset from within a laravel migration?
  • WCF - certificate not configured properly with HTTP.SYS in the HTTPS case. Works with Charles proxy
  • Pulling a subset of a matrix in MATLAB
  • Marshalling of a c++ struct which contains pointers to another c++ struct
  • How to solve Bad Request (#400) Unable to verify your data submission in yii2?
  • Alarm Even Application Closed in iPhone
  • Creating a table in “MSWord” document out of a text in a .txt file
  • can i initialize an array outside the method just like we initialize a member/field variable
  • Can't get JAXB to handle interfaces with simple example
  • Horner's rule in C++
  • Set Visual Studio (conditional) breakpoint on local variable value
  • How to prevent stack overflow when using Scala's Predef.implicitly
  • OpenMP for dependent variables
  • Rails 4 order by virtual attribute
  • How to draw cross background via css which is responsive
  • Show direction of linestring on map - auto zoom on map
  • MATLAB Combine matrices of different dimensions, filling values of corresponding indices
  • Google Analytics - Using Client ID as a custom dimension
  • Numpy: How to get rid of the minima along axis=1, given the indices - in an efficient way?
  • R Leaflet Legend: specify order instead of alphabetical
  • Retrieving specified columns from a list of csv files to create a data data frame in R
  • Control modification in presentation layer
  • Can Jackson SerializationFeature be overridden per field or class?
  • Redux, normalised entities and lodash merge
  • Rearranging Cells in UITableView Bug & Saving Changes
  • Android Studio and gradle
  • JTable with a ScrollPane misbehaving
  • How to get NHibernate ISession to cache entity not retrieved by primary key