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

Waves and Waveforms

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

\n", "Following Section 1.3.1 of [Müller, FMP, Springer 2015], we introdue in this notebook the concept of waveforms and their visualization.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pressure–Time Plot\n", "\n", "A **sound** is generated by a vibrating object such as the vocal cords of a singer, the string and soundboard of a violin, the diaphragm of a kettledrum, or the prongs of a tuning fork. These vibrations cause displacements and oscillations of air molecules, resulting in local regions of compression and rarefaction. The alternating pressure travels through the air as a **wave**, from its source to a listener or a microphone. At its destination, it\n", "can then be perceived as sound by the human or converted into an electrical signal by a microphone. Graphically, the change in air pressure at a certain location can be represented by a **pressure–time plot**, also referred to as the **waveform** of the sound. The waveform shows the deviation of the air pressure from the average air pressure. \n", "\n", "\"C1\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Waveform of Sinusoid\n", "\n", "If the points of high and low air pressure repeat in an alternating and regular fashion, the resulting waveform is called **periodic**. In this case, the **period** of the wave is defined as the time required to complete a cycle. The **frequency**, measured in **Hertz** (Hz), is the reciprocal of the period. The following figure shows a **sinusoid**, which is the simplest type of periodic waveform.\n", "\n", "\"C1\"\n", "\n", "In this example, the waveform has a period of a quarter second and hence a frequency of 4 Hz. A sinusoid is completely specified by its **frequency**, its **amplitude** (the peak deviation of the sinusoid from its mean), and its **phase** (determining where in its cycle the sinusoid is at time zero)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:46:45.003504Z", "iopub.status.busy": "2024-02-15T08:46:45.003256Z", "iopub.status.idle": "2024-02-15T08:46:46.197969Z", "shell.execute_reply": "2024-02-15T08:46:46.197061Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import os\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline\n", "\n", "Fs = 100\n", "duration = 2\n", "amplitude = 1.5\n", "phase = 0.1\n", "frequency = 3\n", "\n", "num_samples = int(Fs * duration)\n", "t = np.arange(num_samples) / Fs\n", "x = amplitude * np.sin(2 * np.pi * (frequency * t - phase))\n", "\n", "plt.figure(figsize=(10, 2))\n", "plt.plot(t, x, color='blue', linewidth=2.0, linestyle='-')\n", "plt.xlim([0, duration])\n", "plt.xlabel('Time (seconds)')\n", "plt.ylabel('Amplitude')\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Waveform of Real Audio Example\n", "\n", "As a real audio example, let us consider a piano recording of a C major scale.\n", "\n", "\"C-major \n", "\n", "
\n", "\n", "\n", "\n", "The following code generates a plot of a waveform representation." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:46:46.228030Z", "iopub.status.busy": "2024-02-15T08:46:46.227771Z", "iopub.status.idle": "2024-02-15T08:46:48.040309Z", "shell.execute_reply": "2024-02-15T08:46:48.039703Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAACICAYAAADtTo36AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAoSUlEQVR4nO3deXhU5d3/8fc3C9lICISw7yBBFkFAMCpU1goqbkVwq+KCUK0LpRYf22pc+vhQtbVqUYv4q2hFa1GxKqKtS7UFFcQFZaugIDvIjglJ7t8fM4lJSMIkmZkzy+d1XbmYc+bMOR9mkpnv3Oc+923OOURERERE4k2C1wFERERERLygQlhERERE4pIKYRERERGJSyqERURERCQuqRAWERERkbikQlhERERE4pKnhbCZnWZmq8xsrZnNqOb+U81sj5kt9//82oucIiIiIhJ7krw6sJklAg8Bo4CNwAdmtsA593mVTf/lnDsj7AFFREREJKZ5VggDg4C1zrkvAcxsHnAWULUQPqrmzZu7Tp06BTediIiIiES9pUuX7nDO5VZ3n5eFcFtgQ4XljcDgarbLN7OPgU3AdOfciqobZGRkVFqePHkykydPDmJUEREREYlGZvZVTfd5WQhbNeuqzve8DOjonNtvZmOBF4Bjqj4oNzeXDz/8MPgJRURERCRmeXmx3EagfYXldvhafcs55/Y65/b7b78CJJtZ8/BFFBEREZFY5WUh/AFwjJl1NrNGwERgQcUNzKyVmZn/9iB8eXeGPamIiIiIxBzPukY454rN7FrgNSARmOOcW2FmU/z3Pwz8CJhqZsXAIWCic65q9wkRERERkTqzWKgrBw4c6NRHWERERESqMrOlzrmB1d2nmeVEREREJC6pEBYRERGRuKRCWERERETikgphEREREYlLKoRFREREJC6pEBYRERGRuKRCWERERCTICgoKKCgo8DqGHIUKYRERERGJSyqERSLI1q1b2bhxo9cxRERqVFJSwscff+x1DJGgUCEsEkEefvhhHnvsMa9jiIjU6IknnuCFF17glVde8TpKVCgtLfU6gtRChXAIOOfYtGmT1zFERESC7uuvvwbg888/9zhJdFAhHNlUCIfA4sWL+dOf/sSqVat49dVXOXz4sNeRIk5hYSG7du3yOoaIiNTTgQMHvI4g0mAqhENg0aJFAMybN4/333+fRYsW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MCb0zv333w/4RgA69dRTSU5OjokzEV567LHHKi3HytmdYAikEL7COfdlxRVm1jlEeaJaNF2lv3z5cgDee++9SutjrYgJFuecPuQDdN9990Vlt4JAHe2izyZNmpSPSpGXl8eECRNwznHw4EFSUlJC+qUz3FNtlxUs1UlOTmbGjBnccccdjBo1ihNPPDFiPngjfRSZZcuWAd9PFhNIQ0KTJk244YYbQhkr7BYvXszixYurvW/y5Mm0atUq4t6Xi4qKvI4QkLLrI8rcfPPN8dtaHEDXiGXOuf5V1i11zg1o8MHNTgPuBxKB2c65u6vcb/77xwIHgcucc8uq7idSukYcPHiQ3/72t17HaLCyIiaYowxEYt/pusjKymLkyJGkpaXRrVu3oO8/2p+fqlJSUpgxY0bQ9hdLz8/555/PscceG5J9z507ly+//PLoG3qsXbt2DBw4kBYtWtC0aVPWrFlTfsaqrL9+aWkpZoaZsWXLFnJycoL2JeLdd9/lH//4R1D2FUmOPfZYzj8/tCdsI/Vv8ayzzqJfv35ex+D++++PqVku8/LycM7RunVrBg8eTGpqKnv27KG4uNjza4/qol5dI8ysB9ALaGJm51a4Kwvf6BENDZUIPASMAjYCH5jZAufc5xU2GwMc4/8ZDMzy/1tJuFtBYl3ZCAMAl156KR07dsQ5x6FDh2jUqBEJCQlRf3V9Xe3du7f8gzorK4tBgwZxzDHHkJyczPLly9m5cydnnnlmVPQjDYfCwkIKCgo499xzefPNNzn11FNp0aIFrVq18jqa55599tny26effjqpqan87W9/A6g0zF19WrqioQgG2LhxIxs3bqz2vordUKozbdo00tPTSUhIKJ85MCkpkJOb31u3bl2dto8WX3zxBQUFBVx//fV89913NV7kGotefPFFXnzxxWrvy83N5aSTTqJPnz4kJiayePFidu7cydixY/nqq6/49ttvSUhIoFu3bg0eGaW6WTCjWdkY7qtXr+btt98+4v42bdowfvx4CgsLMTOysrJITU2t9EU20tXYImxmZwFnA+OAij2/9wHznHP/btCBzfKB25xzP/Qv3wzgnPvfCts8ArzlnHvav7wKONU5t7nivtq0aeN+8YtfsHv3bhITE2PuF1FERERE6ue2226re4uwc+5F4EUzy3fO/ScEudoCFTtqbeTI1t7qtmkLbK6y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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import librosa\n", "\n", "Fs = 11025\n", "x, Fs = librosa.load(os.path.join('..', 'data', 'C1', 'FMP_C1_Scale-Cmajor_Piano.wav'), sr=Fs)\n", "t = np.arange(x.shape[0]) / Fs\n", "\n", "plt.figure(figsize=(10, 2))\n", "plt.plot(t, x, color='gray')\n", "plt.xlabel('Time (seconds)')\n", "plt.ylabel('Amplitude')\n", "plt.xlim([t[0], t[-1]])\n", "plt.ylim([-0.51, 0.51])\n", "plt.tick_params(direction='in')\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following plot shows an enlargement of the section between $0.66$ and $0.71$ seconds. In this 50-ms section, one can count about 13 high-pressure points, which corresponds to $20\\cdot13=260~\\mathrm{Hz}$. Indeed, this is roughly the fundamental frequency ($261~\\mathrm{Hz}$) of the first note $\\mathrm{C4}$ begin played." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:46:48.043295Z", "iopub.status.busy": "2024-02-15T08:46:48.043049Z", "iopub.status.idle": "2024-02-15T08:46:48.136318Z", "shell.execute_reply": "2024-02-15T08:46:48.135677Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "time_start = 0.66\n", "time_end = 0.71\n", "index_start = int(np.round(Fs*time_start))\n", "index_end = int(np.round(Fs*time_end))\n", "x_crop = x[index_start:index_end]\n", "t_crop = t[index_start:index_end]\n", "\n", "peaks = librosa.util.peak_pick(x_crop, 25, 25, 25, 25, 0.1, 10)\n", "\n", "plt.figure(figsize=(10, 2))\n", "plt.plot(t_crop, x_crop, color='gray')\n", "plt.plot(t_crop[peaks],x_crop[peaks], 'ro')\n", "plt.xlabel('Time (seconds)')\n", "plt.ylabel('Amplitude')\n", "plt.xlim([t_crop[0], t_crop[-1]])\n", "plt.ylim([-0.51, 0.51])\n", "plt.tick_params(direction='in')\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wave Propagation\n", "\n", "In general terms, a (mechanical) **wave** can be described as an oscillation that travels through space, where energy is transferred from one point to another. When a wave travels through some medium, the substance of this medium is temporarily deformed. As described above, sound waves propagate via air molecules colliding with their neighbors. After air molecules collide, they bounce away from each other (a restoring force). This keeps the molecules from continuing to travel in the direction of the wave. Instead, they oscillate around almost fixed locations. A general wave can be **transverse** or **longitudinal**, depending on the direction of its oscillation. Transverse waves occur when a disturbance creates oscillations perpendicular (at right angles) to the propagation (the direction of energy transfer). Longitudinal waves occur when the oscillations are parallel to the direction of propagation. According to this definition, a vibration in a string is an example of a transverse wave, whereas a sound wave has the form of a longitudinal wave. Also a combination of both longitudinal and transverse motions is possible as is the case with water waves, where the water particles travel in clockwise circles. The following videos illustrate the concept of the two types of waves. The code for generating the videos can be found in the next code cell.\n", "\n", "\n", "\n", "Transverse wave
\n", "\n", "\n", "Longitudinal wave
\n", "\n", "\n", "Combined wave
\n", "" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:46:48.139156Z", "iopub.status.busy": "2024-02-15T08:46:48.138963Z", "iopub.status.idle": "2024-02-15T08:46:59.001144Z", "shell.execute_reply": "2024-02-15T08:46:59.000415Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.animation as animation\n", "\n", "def create_grid_pos(x_size=5, y_size=5):\n", " # x_size: number of grid points in horizontal direction\n", " # y_size: number of grid points in vertical direction\n", " # x_pos: horizontal coordinates of grid points\n", " # y_pos: vertical coordinates of grid points\n", " x_pos = np.zeros((y_size, x_size))\n", " y_pos = np.zeros((y_size, x_size))\n", "\n", " for x in range(x_size):\n", " y_pos[:,x] = np.arange(y_size)\n", "\n", " for y in range(y_size):\n", " x_pos[y,:] = np.arange(x_size)\n", "\n", " return x_pos, y_pos\n", "\n", "def transverse_wave(x_positions, y_positions, frames_per_cycle=20, wave_len=10, amplitude=1, phase = 0, num_frames=100):\n", " # frames_per_cycle = number of frames per cycle\n", " # num_frames = frames to be generated\n", " k = 2 * np.pi / wave_len\n", " omega = 2 * np.pi / frames_per_cycle \n", " x_frames = np.zeros((num_frames, x_positions.shape[0], x_positions.shape[1]))\n", " y_frames = np.zeros((num_frames, y_positions.shape[0], y_positions.shape[1]))\n", "\n", " for t in range(num_frames):\n", " x_frames[t,:,:] = x_positions\n", " for x in range(x_positions.shape[1]):\n", " y_frames[t,:,x] = y_positions[:,x] + amplitude * np.sin(k * x_positions[:,x] - omega * t + phase)\n", "\n", " return x_frames, y_frames\n", "\n", "def longitudinal_wave(x_positions, y_positions, frames_per_cycle=20, wave_len=10, amplitude=1, phase = 0, num_frames=100):\n", " # frames_per_cycle = number of frames per cycle\n", " # num_frames = frames to be generated\n", " k = 2 * np.pi / wave_len\n", " omega = 2 * np.pi / frames_per_cycle \n", " x_frames = np.zeros((num_frames, x_positions.shape[0], x_positions.shape[1]))\n", " y_frames = np.zeros((num_frames, y_positions.shape[0], y_positions.shape[1]))\n", "\n", " for t in range(num_frames):\n", " y_frames[t,:,:] = y_positions\n", " for x in range(x_positions.shape[1]):\n", " x_frames[t,:,x] = x_positions[:,x] + amplitude * np.sin(k * x_positions[:,x] - omega * t + phase)\n", "\n", " return x_frames, y_frames\n", "\n", "def combined_wave(x_positions, y_positions, frames_per_cycle=20, wave_len=[10,10], amplitude=[1,1], phase=[0,0], num_frames=100):\n", " x_trans, y_trans = transverse_wave(x_positions, y_positions, frames_per_cycle=frames_per_cycle,\n", " wave_len=wave_len[0], amplitude=amplitude[0], phase = phase[0], num_frames=num_frames)\n", " x_long, y_long = longitudinal_wave(x_positions, y_positions, frames_per_cycle=frames_per_cycle,\n", " wave_len=wave_len[1], amplitude=amplitude[1], phase = phase[1], num_frames=num_frames)\n", " x_comb = x_long\n", " y_comb = y_trans\n", " return x_comb, y_comb\n", "\n", "x_size = 20\n", "y_size = 5\n", "x_pos, y_pos = create_grid_pos(x_size=x_size, y_size=y_size)\n", "\n", "frames_per_cycle = 100\n", "num_frames = 400\n", "x_trans, y_trans = transverse_wave(x_pos, y_pos, frames_per_cycle=frames_per_cycle,\n", " wave_len=10, amplitude=1, num_frames=num_frames )\n", "x_long, y_long = longitudinal_wave(x_pos, y_pos, frames_per_cycle=frames_per_cycle,\n", " wave_len=10, amplitude=1, num_frames=num_frames )\n", "x_comb, y_comb = combined_wave(x_pos, y_pos, frames_per_cycle=frames_per_cycle,\n", " wave_len=[10,10], amplitude=[1,0.9], phase=[0,np.pi/2+0.5], num_frames=num_frames )\n", "\n", "\n", "def update(frame_num, scat, x, y):\n", " idx = frame_num % x.shape[0]\n", " scat.set_offsets(np.column_stack((x[idx,:,:].flatten(), y[idx,:,:].flatten())))\n", "\n", " return scat\n", "\n", "\n", "fig_trans, ax_trans = plt.subplots()\n", "fig_trans.set_size_inches(6,2.5)\n", "plt.axis('off')\n", "ax_trans.set_xlim([-1.5, x_size + 0.5])\n", "ax_trans.set_ylim([-1.5, y_size + 0.5])\n", "scat_trans = ax_trans.scatter(x_trans[0,:,:], y_trans[0,:,:])\n", "\n", "# interval between two video frames (given in ms)\n", "frames_per_seconds = 20\n", "interval = 1000/frames_per_seconds\n", "ani_trans = animation.FuncAnimation(fig_trans, update, frames=num_frames,\n", " fargs=(scat_trans, x_trans, y_trans), interval=interval)\n", "plt.show()\n", "ani_trans.save(os.path.join('..', 'output', 'C1', 'FMP_C1_Wave_Transverse.mp4'))\n", "\n", "fig_long, ax_long = plt.subplots()\n", "fig_long.set_size_inches(6,2.5)\n", "plt.axis('off')\n", "ax_long.set_xlim([-1.5, x_size + 0.5])\n", "ax_long.set_ylim([-1.5, y_size + 0.5])\n", "scat_long = ax_long.scatter(x_long[0,:,:], y_long[0,:,:])\n", "\n", "ani_long = animation.FuncAnimation(fig_long, update, frames=num_frames,\n", " fargs=(scat_long, x_long, y_long), interval=interval)\n", "plt.show()\n", "ani_long.save(os.path.join('..', 'output', 'C1', 'FMP_C1_Wave_Longitudinal.mp4'))\n", "\n", "fig_comb, ax_comb = plt.subplots()\n", "fig_comb.set_size_inches(6,2.5)\n", "plt.axis('off')\n", "ax_comb.set_xlim([-1.5, x_size + 0.5])\n", "ax_comb.set_ylim([-1.5, y_size + 0.5])\n", "scat_comb = ax_comb.scatter(x_comb[0,:,:], y_comb[0,:,:])\n", "\n", "ani_comb = animation.FuncAnimation(fig_comb, update, frames=num_frames,\n", " fargs=(scat_comb, x_comb, y_comb), interval=interval)\n", "plt.show()\n", "ani_comb.save(os.path.join('..', 'output', 'C1', 'FMP_C1_Wave_Combined.mp4'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Meinard Müller and Tim Zunner.\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": { "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 }