7 messages
[quote author=RoyalPulp link=topic=11.msg42#msg42 date=1170081146]
How do you filter the "noise" out of the chords? I think you don't use the whole spectrum of audible sound. I would very much appreciate discussing some of that kind of information, if thats not too confidential.
[\/quote]

Royal -- thanks for starting this discussion.

None of this would ever work if not for I.S.Bach and his insistence on well-tempered tuning. I'm totally serious :)\302\240 The guy brought freedom, equality and fraternity to the world of tonalities. So we can simply divide the spectrum into several octaves with 24 frequency bands in each and then convert the signal into a series of notes (or, more precisely, note probabilities), without worrying about the song's key.

Then it's just a simple matter of figuring out which three chord-forming notes are the best match for each rhythm quantum, which in the current impementation is the whole bar of music (but can be done on the beat level, too). Of course it's not simple at all, but the basic idea is that rather than removing "noise" from the signal to get to the chord, we deconstruct the (digitized) signal into individual notes and then assemble the best-fitting chord out of them. We can then mix the notes into the original stream using one of the three sampled instruments that we have now: guitar, piano, and organ.

Let's see if our engineers can add a few more details on this.

Gene
Hello.
I'm Alex, engineer from CBMS.
Some details.
The short-time Fourier transform is mapped to the Pitch Class Profile (PCP), which traditionally consist of 12-dimensional vectors, with each dimension corresponding to the intensity of a semitone class (chroma). The procedure places tones of the same pitch class, independent of octave, to the same PCP bin. We use a extended PCP vector of 24 dimensions to give some flexibility in variations in tuning.
Then we compare PCP with templates of chords (vectors of same dimension) and get possibilities of chords.
Before PCP calculation we trying suppress harmonic and non-tonal sounds by smoothing of the Fourier-specter and selecting main peaks.
There are many fine points, of course. It is multistep process, during which probabilities of chords becomes more exact. We use pattern structure of pop music for example. We are trying to use probabilistic approach and fuzzy logic in any step.
Alex
Hi Gene & Alex,

thank you a lot for the explanation.
I wonder, how much of the "noise" is really eliminated.

So, after Fourier and "clipping", I get my 12 (24) Vectors filled with amplitude high values.
I can imagine, that works fine with songs with real played chords. But what do you do with songs that are played by picking? If I knew the measure length, I could combine the single played notes.

The possibility of chords, as you refer to, is easy if you only decide between 24 major\/minor chords.
But the multitude of existing "specials" will be a really hard thing, it is often not really simple to distinguish, and sometimes a matter of interpretation or belief.

Thats it for the moment, bye
RP
RP,

You're right about the measure length. We get the measures (bars) first, precisely because we need to detect chords that are not played all at once (but played by picking or maybe it's just bass guitar and voice).

We weren't focused on "specials" because we are much more interested in finding the objectively meaningful harmonic sequences rather than subjective choice of non-basic chords. Indeed the "specials" are very often a matter of interpretation or belief, and as such don't belong in the song's true content-based profile.

Gene
Hello,
I'm pretty sure you know this one, if not, it might be nice to know:
http:\/\/www.ifs.tuwien.ac.at\/mir\/chorddetection.html and associated thesis work http:\/\/www.ifs.tuwien.ac.at\/~andi\/download\/thesis\/zen_thesis07.pdf
with the most important sentence to me: ... Beat detection allone enhances detection quality by 6%, optimization by 7% and key detection alone by 13%.
Finally my question would be if key detection is already implemented?
greetings,
Jaco
(no idea of computational chord recognition, no programmer, just interested user of easy chords looking for help in analysing polyphonic songs, guessing your approach is the most helpful\/practical for guitar players)
Jaco -- yes, key detection is implemented and helps increase the precision of out recognition algorithm.

Post a reply