Krumhansl-Schmuckler Key Estimation Algorithm (Computational Musicology)

  Рет қаралды 655

Daniel Szelogowski

Daniel Szelogowski

Күн бұрын

Пікірлер: 11
@maheshwaranup5695
@maheshwaranup5695 2 күн бұрын
Thank u very much buddy I was lost for 2 days, neither gemini nor perplexity could solve this
@jameslinton6424
@jameslinton6424 Жыл бұрын
Excellent video! I have one question regarding the 'main' function. Why did you mention 'Read open the MIDI file and extract the pitch class distribution' when the script is actually analyzing audio? Does Librosa somehow convert the audio to MIDI before generating a chromagram? Thank you, Daniel, for sharing this valuable code with us.
@dszelogowski
@dszelogowski Жыл бұрын
Thanks for the feedback! Calculating the chromagram in itself is the pitch-class distribution; librosa uses the short-time Fourier transform (STFT) algorithm to do a frequency distribution analysis, which can then be classified into the different pitch sets by their frequency. No need to convert to MIDI as a result, which is spectacular in terms of performance! As a result, the chromagram returned from the STFT is just a visualization of the pitch-class distribution; taking the sum over axis=1 thus gives us the number of occurrences of each note, which the algorithm uses to approximate the key.
@NilsBarbier
@NilsBarbier Жыл бұрын
Why do you use a circulant matrix ? Can you develop this part please ! Have a great day !
@dszelogowski
@dszelogowski Жыл бұрын
This implementation uses a circulant matrix to speed up the computation of the correlation between the pitch class distribution of a piece of music and the key profiles. A circulant matrix is a matrix that is invariant to circular shifts, meaning that if you shift the rows or columns of the matrix by any number of positions, the matrix will not change. This property makes circulant matrices very efficient for computing correlations since the correlation of two vectors can be computed by multiplying the vectors together and then taking the DFT of the product. In the algorithm, the pitch class distribution of a piece of music is represented as a vector. The key profiles are also represented as vectors. The correlation between the pitch class distribution and the key profiles can then be computed by multiplying the two vectors together and then taking the DFT of the product. If the key profiles were not circulant matrices, then the correlation would have to be computed by multiplying the vectors and then summing the products. This would be much slower than using a circulant matrix because the DFT of a product of two vectors is much faster to compute than the sum of the products.
@NilsBarbier
@NilsBarbier Жыл бұрын
@@dszelogowski Waw thank you so much for your answer! But what does DFT mean ? (I'm french so sorry ahah)
@dszelogowski
@dszelogowski Жыл бұрын
@@NilsBarbier no worries! It's the Discrete Fourier Transform.
@voinaalex6424
@voinaalex6424 Жыл бұрын
amazing video! did you test the accuracy of the algorithm on more complex musical pieces (e.g house, pop, rap songs) ?
@obineg5752
@obineg5752 8 ай бұрын
haha, he used "more complex" in the same sentence with "house, pop, rap" ;)
@PaulNahay
@PaulNahay 10 ай бұрын
A little solfege lesson in the correct nomenclature for the "black notes" in any key: "do#" is really "di", "re#" is really "ri", "fa#" is really "fi", "so#" is really "si", "la#" is really "li", "re flat" is really "ra", "mi flat" is really "me", "so flat" is really "se", "la flat" is really "le", and "ti flat" is really "te".
Lecture 1A: Overview and Introduction to Lisp
1:12:56
MIT OpenCourseWare
Рет қаралды 284 М.
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
Daily Coding (day 1) - Advent of Code problem 10
1:03:01
jacob stephens
Рет қаралды 21
Mastering Python - Everything You Need To Know To Become a Python Master
16:02
#1 Rasmus Hougaard: Human leadership in the age of AI
52:37
Mindful AI Podcast
Рет қаралды 5 М.
Integrating Artifical Intelligence in Music
52:26
Daniel Szelogowski
Рет қаралды 12
Statistical Rethinking 2023 - 01 - The Golem of Prague
50:48
Richard McElreath
Рет қаралды 118 М.
the TRUTH about C++ (is it worth your time?)
3:17
Low Level
Рет қаралды 833 М.
What is the Heisenberg Uncertainty Principle? A wave packet approach
1:01:57
Physics Explained
Рет қаралды 317 М.
Daily Coding (day 2) - Advent of Code problem 11
32:57
jacob stephens
Рет қаралды 24