{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"FMP\"\n", "\"AudioLabs\"\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"C6\"\n", "

Tempo and Beat

\n", "
\n", "\n", "
\n", "\n", "

\n", "Following Section 6.2.1 of [Müller, FMP, Springer 2015], we introduce in this noteook the concepts of beat and tempo. \n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Basic Notions and Assumptions\n", "\n", "Temporal and structural regularities are perhaps the most important incentives for people to get involved and to interact with music. It is the **beat** that drives music forward and provides the temporal framework of a piece of music. Intuitively, the beat corresponds to the pulse a human taps along when listening to music. The beat is often described as a sequence of perceived pulse positions, which are typically equally spaced in time and specified by two parameters: the **phase** and the **period**. The term **tempo** refers to the rate of the pulse and is given by the reciprocal of the beat period. The following figure illustrates these notions using the beginning of \"Another one bites the dust\" by Queen.\n", "\n", "\"FMP_C6_F01.png\"\n", "\n", "
\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The extraction of tempo and beat information from audio recordings is a challenging problem in particular for music with weak note onsets and local tempo changes. For example, in the case of romantic piano music, the pianist often takes the freedom of speeding up and slowing down the tempo—an artistic means also referred to as **tempo rubato**. There is a wide range of music where the notions of tempo and beat remain rather vague or are even nonexistent. Sometimes, the rhythmic flow of music is deliberately interrupted or disturbed by **syncopation**, where certain notes outside the regular grid of beat positions are stressed. The following audio example indicate some of the challenges:\n", "\n", "\n", "\n", "Music with weak onsets (Borodin, String Quartet No. 2, 3rd movement):
\n", "\n", "\n", "Romantic music with local tempo fluctuations (rubato) and global tempo changes (Chopin, Op.68, No. 3):
\n", "\n", "\n", "Music with syncopation (Fauré, Op.15):
\n", "\n", "\n", "To make the problem of tempo and beat tracking feasible, most automated approaches rely on two basic assumptions. \n", "\n", "* The first assumption is that beat positions occur at [note onset positions](../C6/C6S1_OnsetDetection.html).\n", "* The second assumption is that beat positions are more or less equally spaced—at least for a certain period of time.\n", "\n", "Even though both assumptions may be violated and inappropriate for certain types of music, they are convenient and reasonable for a wide range of music including most rock and popular songs.\n", "\n", "In the following code cell, we present for each of the above examples a visualization of a [spectral-based novelty function](../C6/C6S1_NoveltySpectral.html) along with manually annotated beat positions (**quarter note level**). Furthermore, a **sonification** indicates the annotated beats by short click sounds placed on top of the original music recordings. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:47:39.690049Z", "iopub.status.busy": "2024-02-15T08:47:39.689771Z", "iopub.status.idle": "2024-02-15T08:47:44.166687Z", "shell.execute_reply": "2024-02-15T08:47:44.165960Z" } }, "outputs": [ { "data": { "image/png": "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unzSJL333nv1s88+U1UNKYv9aWMF9L///a8++eSTqitW6M6dO3XBggV6yCGHhNjy448/6g033KBHH310hE3OVrduXf3LX/6igJ5++unufucT9U1Au3XrpuvWrdPCwsKI8vbp0ydi3xu9ekWtm0qVKumRRx4Zsm/06NFauHx5zPps1qyZtm7dWmfOnBmyf1Tv3iH1ce+99+qtt96qgNavX18XL16sI0eODNFpAvrzzz+7yyAA+tBDDymgZ555ZkTew4cPd/Vyc3OTOv+nnHKKAnpb8+b66KOPJqXj5PHxxx+H2Hb99deH/A6XB2v5hLPOOitmus65v7lZs5DrJzs725V5/fXX9dlnn42afvg2atQoVVXds2dPyP6Xs7J069atmp+fr6qq3333nXssJydHL7vssrjl8G6fffaZ3nvvvQrowIED9aSTToop+9BDD7llOuGEExTQmjVr6rZt23THN9+4x6666qqo+Tu8//772gS0QYMGqqo6Y8YMBfTKK69UQEeMGKGFhYW6Y8cOzcvL08MPP9y154svvgipW2eZAmfbsmWLXnvttRHlVlXtFeNa2bNnj/bq1UvPP//8CB2HuXPnusfatWun3377bcg1Ee88xto6n3dexL4pU6aE/B44cGBI+vPmzdNp06aF7I/XzuMdj2Z/7dq1FXCXhIi1HXXUUe7/C8aMcespFZsKCwtD7iWAPvbYY6qq+sorr4ScB2dpgljbPffc434avwnorFmzdO7cuaqqOnjw4BDZF154wbX366+/dnUWLlyoqhqz/7njjjvc//929tnu//v379dvvvlG8/LyQuQvvfRSBasvDq+Ds846SydOnJhSnTlLyTjtu2LFiqqqWr9+fQV0wIABUc/7FVdcEZHmsmXLVFXdOuvbt6/qihX6+uuvR8g2bdo0ql2P3XRTyO9oy6IQZ3mApJwRoBWwAvgZeDiR/Omnn66qqqNHj9Z169ZpixYtdEXYyXf+HzFiREgBNm/eHFHIArujcxqs95jXAXG2FVEqKto2bty4CJ2rr77a3ec9EdWrV3dPgtNpOjr16tXT/Pz8kLRPPvnkiPw2H364+3+FChUS2hevHHXr1o0rX61atYjj3bp1i9i3OuzCcLaqVatGOC/PPfecbqpRI6m6DbfrvCgdbTJl79u3r7vv9ttvjyn/1FNPuXrRnLR42/pq1fSRRx5J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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import os, sys\n", "import sys\n", "import numpy as np\n", "from scipy import signal\n", "from matplotlib import pyplot as plt\n", "import librosa\n", "import IPython.display as ipd\n", "import pandas as pd\n", "sys.path.append('..')\n", "import libfmp.b\n", "import libfmp.c2\n", "import libfmp.c6\n", "%matplotlib inline\n", "\n", "def plot_sonify_novelty_beats(fn_wav, fn_ann, title=''):\n", " ann, label_keys = libfmp.c6.read_annotation_pos(fn_ann, label='onset', header=0)\n", " df = pd.read_csv(fn_ann, sep=';', keep_default_na=False, header=None)\n", " beats_sec = df.values\n", " Fs = 22050\n", " x, Fs = librosa.load(fn_wav, Fs)\n", " x_duration = len(x)/Fs\n", " nov, Fs_nov = libfmp.c6.compute_novelty_spectrum(x, Fs=Fs, N=2048, H=256, gamma=1, M=10, norm=1)\n", " figsize=(8,1.5)\n", " fig, ax, line = libfmp.b.plot_signal(nov, Fs_nov, color='k', figsize=figsize,\n", " title=title)\n", " libfmp.b.plot_annotation_line(ann, ax=ax, label_keys=label_keys, \n", " nontime_axis=True, time_min=0, time_max=x_duration)\n", " plt.show()\n", " x_beats = librosa.clicks(beats_sec, sr=Fs, click_freq=1000, length=len(x))\n", " ipd.display(ipd.Audio(x + x_beats, rate=Fs))\n", "\n", "#print('Carlos Gardel: Por Una Cabeza') \n", "#fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_PorUnaCabeza_quarter.csv')\n", "#fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_PorUnaCabeza.wav')\n", "#plot_sonify_novelty_beats(fn_wav, fn_ann)\n", "\n", "title = 'Borodin: String Quartet No. 2, 3rd movement' \n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Borodin-sec39_RWC_quarter.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Borodin-sec39_RWC.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)\n", "\n", "title = 'Chopin: Op.68, No. 3' \n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Chopin.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Chopin.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)\n", "\n", "title = 'Fauré: Op.15' \n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Faure_Op015-01-sec0-12_SMD126.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_Faure_Op015-01-sec0-12_SMD126.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tempogram Representations\n", "\n", "In Fourier analysis, a [(magnitude) spectrogram](../C2/C2_STFT-Basic.html) is a time–frequency representations of a given signal. A large value $\\mathcal{Y}(t,\\omega)$ of a spectrogram indicates that the signal contains at time instance $t$ a periodic component that corresponds to the frequency $\\omega$. We now introduce a similar concept referred to as a **tempogram**, which indicates for each time instance the local relevance of a specific tempo for a given music recording. Mathematically, we model a tempogram as a function\n", "\n", "\\begin{equation}\n", " \\mathcal{T}:\\mathbb{R}\\times \\mathbb{R}_{>0}\\to \\mathbb{R}_{\\geq 0}\n", "\\end{equation} \n", "\n", "depending on a time parameter $t\\in\\mathbb{R}$ measured in seconds and a tempo parameter $\\tau \\in \\mathbb{R}_{>0}$ measured in **beats per minute** (**BPM**). Intuitively, the value $\\mathcal{T}(t,\\tau)$ indicates the extent to which the signal contains a locally periodic pulse of a given tempo $\\tau$ in a neighborhood of time instance $t$. Just as with spectrograms, one computes a tempogram in practice only on a discrete time–tempo grid. As before, we assume that the sampled time axis is given by $[1:N]$. To avoid boundary cases and to simplify the notation in the subsequent considerations, we extend this axis to $\\mathbb{Z}$. Furthermore, let $\\Theta\\subset\\mathbb{R}_{>0}$ be a finite set of tempi specified in $\\mathrm{BPM}$. \n", "Then, a **discrete tempogram** is a function \n", "\n", "\\begin{equation}\n", " \\mathcal{T}:\\mathbb{Z}\\times \\Theta\\to \\mathbb{R}_{\\geq 0}.\n", "\\end{equation}\n", "\n", "Most approaches for deriving a tempogram representation from a given audio recording proceed in two steps. \n", "\n", "* Based on the assumption that pulse positions usually go along with note onsets, the music signal is first converted into a [novelty function](../C6/C6S1_OnsetDetection.html). This function typically consists of impulse-like spikes, each indicating a note onset position.\n", "* In the second step, the locally periodic behavior of the novelty function is analyzed. \n", "\n", "To obtain a tempogram,one quantifies the periodic behavior for various periods $T>0$ (given in seconds) in a neighborhood of a given time instance. The rate $\\omega=1/T$ (measured in $\\mathrm{Hz}$) and the tempo $\\tau$ (measured in $\\mathrm{BPM}$) are related by \n", "\n", "\\begin{equation}\n", " \\tau = 60 \\cdot \\omega.\n", "\\end{equation} \n", "\n", "For example, a sequence of impulse-like spikes that are regularly spaced with period $T=0.5~\\mathrm{sec}$ corresponds to a rate of $\\omega=1/T=2~\\mathrm{Hz}$ or a tempo of $\\tau=120~\\mathrm{BPM}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pulse Levels\n", "\n", "One major problem in determining the tempo of a music recording arises from the fact that pulses in music are often organized in complex hierarchies that represent the rhythm. In particular, there are various levels that are presumed to contribute to the human perception of tempo and beat. The **tactus** level typically corresponds to the quarter note level and often matches the foot tapping rate. Thinking at a larger musical scale, one may also perceive the tempo at the **measure** level, in particular when listening to fast music or to highly expressive music with strong rubato. Finally, one may also consider the **tatum** (temporal atom) level, which refers to the fastest repetition rate of musically meaningful accents occurring in the signal. The next example illustrates these notions using the song \"Happy Birthday to you.\"\n", "\n", "\"FMP_C6_F12.png\"\n", "\n", "
\n", "\n", "\n", "\n", "In the following code cell, we visualize manually annotated pulse positions for different pulse levels shown on top of a [spectral-based novelty function](../C6/C6S1_NoveltySpectral.html). Furthermore, one can listen to a **sonification** of the pulse positions overlaid with the original music recordings. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:47:44.177714Z", "iopub.status.busy": "2024-02-15T08:47:44.177354Z", "iopub.status.idle": "2024-02-15T08:47:45.217593Z", "shell.execute_reply": "2024-02-15T08:47:45.216663Z" } }, "outputs": [ { "data": { "image/png": "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xOc+/LDdCI+RA9ymb7aYoGF8ej80NzdTUmLvHxhGd0VE5qjqNurN212tqver6sGqevDgwdvMpSkcimWiVLGkEyytBYr075/9pEKhiMrV0mrY48j28tFHSXvQNRRLOsHSWmBUVFQAsLKYXhAognJNY2kteky4bC9//3vSHrSipaUlN4bzLJ25oLm5mbfffrso0pqmCNLaq1cvAJr/9reEPelCiqBc01hai56swkVEHiO14+koEVkuItm2jS9s7r8/aQ9aUVNTkxvDeZbOXHDLLbcwevRoNk2enP3kQqEIyrVnz54A9HnssYQ96UKKoFzTWFqLnihvFZ2lqjupag9VHaaqD3SFY3nLn/6UtAetaG5uzo3hPEtnLpgzZw4AM8aPT9iTLqQIytUJlzk/+lHCnnQheViuDQ0NnHHGGbzxxht+DedhWn3T3NxMU1NTUaS1M9hQUQRUlWnTptHQ0ABnn520O63wLVxqa2uZNGkSLWee6dVuPtKvXz8ADiymiEue1d9c4ITLqBtvTNiT3PPRRx+lhEEelusrr7zC9OnT+d73vufXcB6m1Te77roru+66a1GktTOYcInAzJkzOeecc7j44ovhpJOSdqcVvoXL7bffzjXXXMPzlZVe7eYjfYMZ+4v22CNhT9pnp5124txzz/VrNM/qby5wk3OX7L13wp7knv3335+DDjrIW7m++OKLzJ8/34utRYsWAamV1L1SBHV42bJlLF++vCjS2hlMuETArQsxffp0Lwp469atvPbaa7HtQGvh4mOiblNTEwD/2mWX2LbyHSdc5owalbAn21JXV8eqVat49NFHvdhbt24df/zjH4viCc6t3bJozBgv9q688kquueYaL7Z8s3btWgC2nHqqF3tHH300++23nxdba9asAWDHHXf0Yi+Npzrct29fLr/8ci+2coWvci00il64rF+/no8//jjjOa4zb2xshEDExOHiiy/mkEMOYeXKlbFthYVLY2NjbHuuM7+hCMLsffr0AWDitdd6sXfnnXdy7LHHerH19ttve7Hj+Na3vsVpp53mpf7mO+5B44IL/bxHMHnyZCZNmuTFVktLCyLCrbfe6sWeo3dQl/MJtyCm94UxPdXhmpoa7rjjDi+2ckU+lms+ULDCpaWlJVJHXlVVxQ477JDxHCdcmpubwcNNOHfuXICsgikKzjdITYaLixMuF3lq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "title = 'Pulse on measure level'\n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday_measure.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)\n", "\n", "title = 'Pulse on tactus level'\n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday_tactus.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)\n", "\n", "title = 'Pulse on tatum level'\n", "fn_ann = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday_tatum.csv')\n", "fn_wav = os.path.join('..', 'data', 'C6', 'FMP_C6_Audio_HappyBirthday.wav')\n", "plot_sonify_novelty_beats(fn_wav, fn_ann, title)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tempo Octave, Harmonic, and Subharmonic\n", "\n", "Often the tempo ambiguity that arises from the existence of different pulse levels is also reflected in a tempogram $\\mathcal{T}$. Higher pulse levels often correspond to integer multiples $\\tau,2\\tau,3\\tau,\\ldots$ of a given tempo $\\tau$. As with pitch, we call such integer multiples **(tempo) harmonics** of $\\tau$. Furthermore, integer fractions $\\tau,\\tau/2,\\tau/3,\\ldots$ are referred to as **(tempo) subharmonics** of $\\tau$. Analogous to the notion of an octave for musical pitches, the difference between two tempi with half or double \n", "the value is called a **tempo octave**. \n", "\n", "The following example shows two different types of tempograms for a click track of increasing tempo (raising from $170$ to $200~\\mathrm{BPM}$ over the course of $20~\\mathrm{sec}$). The first tempogram emphasizes tempo harmonics, whereas the second tempogram emphasizes tempo subharmonics. The entry marked by the red rectangle indicates that the music signal has a dominant tempo of $\\tau=180~\\mathrm{BPM}$ around time position $t=5~\\mathrm{sec}$.\n", "\n", "\"FMP_C6_F11.png\"\n", "\n", "\n", "
\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the following, we will study two conceptually different methods that are used to derive these two tempograms: Fourier-based tempograms that emphasize tempo harmonics and autocorrelation-based tempograms that emphasize tempo subharmonics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Global Tempo\n", "\n", "Assuming a more or less steady tempo, it suffices to determine one **global** tempo value for the entire recording. Such a value may be obtained by averaging the tempo values obtained from a frame-wise periodicity analysis. For example, based on a tempogram representation, one can average the tempo values over all time frames to obtain a function $\\mathcal{T}_\\mathrm{Average}:\\Theta\\to\\mathbb{R}_{\\geq 0}$ that only depends on $\\tau\\in\\Theta$. Assuming that the relevant time positions lie in the interval $[1:N]$, one may define $\\mathcal{T}_\\mathrm{Average}$ by\n", "\n", "\\begin{equation}\n", "\\label{eq:BeatTempo:TempoAna:AutoCor:TempoAv}\n", " \\mathcal{T}_\\mathrm{Average}(\\tau) := \\frac{1}{N}\\sum_{n\\in[1:N]} \\mathcal{T}(n,\\tau).\n", "\\end{equation}\n", "\n", "The maximum \n", "\n", "\\begin{equation}\n", "\\label{eq:BeatTempo:TempoAna:AutoCor:TempoAvMax}\n", " \\hat{\\tau} := \\max\\{\\mathcal{T}_\\mathrm{Average}(\\tau)\\,\\mid\\, \\tau\\in\\Theta\\}\n", "\\end{equation}\n", "\n", "of this function then yields an estimate for the global tempo of the recording. Of course, more refined methods for estimating a single tempo value may be applied. For example, instead of using a simple average, one may apply median filtering, which is more robust to outliers and noise. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Notes\n", "\n", "In the following notebooks, we introduce two conceptually different methods for computing tempogram representations:\n", "\n", "* Fourier-based tempograms\n", "* Autocorrelation-based tempograms \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Meinard Müller and Vlora Arifi-Müller. \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\"C0\"\"C1\"\"C2\"\"C3\"\"C4\"\"C5\"\"C6\"\"C7\"\"C8\"
" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" } }, "nbformat": 4, "nbformat_minor": 1 }