{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ThinkDSP\n", "\n", "This notebook contains code examples from Chapter 11: Modulation and sampling\n", "\n", "Copyright 2015 Allen Downey\n", "\n", "Special thanks to my colleague Siddhartan Govindasamy; the sequence of topics in this notebook is based on material he developed for Signals and Systems at Olin College, which he and Oscar Mur-Miranda and I co-taught in Spring 2015.\n", "\n", "License: [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Get thinkdsp.py\n", "\n", "import os\n", "\n", "if not os.path.exists('thinkdsp.py'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from thinkdsp import decorate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convolution with impulses\n", "\n", "To demonstrate the effect of convolution with impulses, I'll load a short beep sound." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('253887__themusicalnomad__positive-beeps.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/253887__themusicalnomad__positive-beeps.wav" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from thinkdsp import read_wave\n", "\n", "wave = read_wave('253887__themusicalnomad__positive-beeps.wav')\n", "wave.normalize()\n", "wave.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it sounds like." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's a sequence of 4 impulses with diminishing amplitudes:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from thinkdsp import Impulses\n", "\n", "imp_sig = Impulses([0.005, 0.3, 0.6, 0.9], amps=[1, 0.5, 0.25, 0.1])\n", "impulses = imp_sig.make_wave(start=0, duration=1.0, framerate=wave.framerate)\n", "impulses.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we convolve the wave with the impulses, we get 4 shifted, scaled copies of the original sound." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "convolved = wave.convolve(impulses)\n", "convolved.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it sounds like." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "convolved.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Amplitude modulation (AM)\n", "\n", "The previous example gives some insight into how AM works.\n", "\n", "First I'll load a recording that sounds like AM radio." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('105977__wcfl10__favorite-station.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/105977__wcfl10__favorite-station.wav" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave = read_wave('105977__wcfl10__favorite-station.wav')\n", "wave.unbias()\n", "wave.normalize()\n", "wave.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the spectrum looks like:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = wave.make_spectrum()\n", "spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the following examples, it will be more useful to look at the full spectrum, which includes the negative frequencies. Since we are starting with a real signal, the spectrum is always symmetric." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = wave.make_spectrum(full=True)\n", "spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Amplitude modulation works my multiplying the input signal by a \"carrier wave\", which is a cosine, 10 kHz in this example." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "from thinkdsp import CosSignal\n", "\n", "carrier_sig = CosSignal(freq=10000)\n", "carrier_wave = carrier_sig.make_wave(duration=wave.duration, framerate=wave.framerate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `*` operator performs elementwise multiplication." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "modulated = wave * carrier_wave" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result sounds pretty horrible." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "modulated.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Why? Because multiplication in the time domain corresponds to convolution in the frequency domain. The DFT of the carrier wave is two impulses; convolution with those impulses makes shifted, scaled copies of the spectrum.\n", "\n", "Specifically, AM modulation has the effect of splitting the spectrum in two halves and shifting the frequencies by 10 kHz (notice that the amplitudes are half what they were in the previous plot)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "modulated.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To recover the signal, we modulate it again." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "demodulated = modulated * carrier_wave" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each half of the spectrum gets split and shifted again. Two of the quarters get shifted to 0 and added up. The other two are at $\\pm$20Khz" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "demodulated_spectrum = demodulated.make_spectrum(full=True)\n", "demodulated_spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you listen to it now, it sounds pretty good. You probably can't hear the extra components at high frequencies." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "demodulated.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we compare the input and output signals, they are pretty close." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave.plot()\n", "demodulated.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the high frequency components bother you, you can clobber them by applying a low pass filter. In this example, I use a \"brick wall\" filter that cuts off sharply at 10 kHz. In real applications, we would use a more gentle filter." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "demodulated_spectrum.low_pass(10000)\n", "demodulated_spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it sounds like after filtering." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered = demodulated_spectrum.make_wave()\n", "filtered.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand how AM works, let's see what's going on in the frequency domain.\n", "\n", "When we multiply two signals in the time domain, that corresponds to convolution in the frequency domain. The carrier wave is a cosine at 10 kHz, so its spectrum is two impulses, at $\\pm$ 10 kHz" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAaXklEQVR4nO3df7BfdX3n8eeLRIRpQUACSxPa4Ji2UkcFUkzHbseKEwLbLbgjLc5uSZXZ7LDY0c72B9bZYat1tu52apet0rKQGjpuAWkdsh1sTFHWbpcfCYogRppbtJJCJW74ValQ4L1/fD+ph5vvzf3eJHDPPff5mPnO95z3+ZzzPd9zv/e+7jnn8z0nVYUkSX1z2HyvgCRJ4xhQkqReMqAkSb1kQEmSesmAkiT10tL5XoEDdfzxx9fKlSvnezUkSQfprrvu+lZVLZteX7ABtXLlSrZv3z7fqyFJOkhJ/mZc3UN8kqReMqAkSb1kQEmSesmAkiT1kgElSeqliQIqyTFJbkzy1SQ7kvxYkuOSbE2ysz0f29omyRVJppLck+T0znLWt/Y7k6zv1M9Icm+b54okOfRvVZK0kEy6B/XfgD+rqh8GXg/sAC4DbqmqVcAtbRzgHGBVe2wArgRIchxwOfBG4Ezg8r2h1tps6My37uDeliRpoZs1oJIcDfwEcA1AVT1TVY8B5wGbWrNNwPlt+Dzg2hq5HTgmyUnA2cDWqtpTVY8CW4F1bdrRVXVbje79cW1nWZKkRWqSPahXAbuBP0jyxSRXJ/ke4MSqehigPZ/Q2i8HHuzMv6vV9lffNaa+jyQbkmxPsn337t0TrLr64qa7/5Y7v7ZnvldDA/b1b32b//H5B+Z7NXQITRJQS4HTgSur6jTg23z3cN44484f1QHU9y1WXVVVq6tq9bJl+1wVQz32nuvu5md+/7b5Xg0N2IVX3c6Hbt7BE9/5x/leFR0ikwTULmBXVd3Rxm9kFFjfbIfnaM+PdNqf3Jl/BfDQLPUVY+qSNLFvP/3sfK+CDrFZA6qq/g54MMkPtdJZwFeAzcDennjrgZva8Gbgotabbw3weDsEuAVYm+TY1jliLbClTXsyyZrWe++izrIkSYvUpBeL/QXgE0kOBx4A3sko3G5IcjHwDeCC1vZm4FxgCniqtaWq9iT5ILCttftAVe09KXEJ8HHgSODT7SFJWsQmCqiquhtYPWbSWWPaFnDpDMvZCGwcU98OvHaSdZEkLQ5eSUKS1EsGlCSplwwoSYNSY7+kooXIgJI0DF7Bc3AMKElSLxlQkqReMqAkSb1kQEmSesmAkiT1kgElSeolA0rSsPg9qMEwoCQNgl+DGh4DSpLUSwaUJKmXDChJUi8ZUJKkXjKgJEm9ZEBJknrJgJI0KOUXoQbDgJI0CInfhBoaA0qS1EsGlCSplwwoSVIvGVCSpF4yoCRJvWRASZJ6yYCSNCjl16AGY6KASvL1JPcmuTvJ9lY7LsnWJDvb87GtniRXJJlKck+S0zvLWd/a70yyvlM/oy1/qs3rFxokzYl/NYZnLntQP1lVb6iq1W38MuCWqloF3NLGAc4BVrXHBuBKGAUacDnwRuBM4PK9odbabOjMt+6A35EkaRAO5hDfecCmNrwJOL9Tv7ZGbgeOSXIScDawtar2VNWjwFZgXZt2dFXdVlUFXNtZliRpkZo0oAr4TJK7kmxotROr6mGA9nxCqy8HHuzMu6vV9lffNaa+jyQbkmxPsn337t0TrrokaSFaOmG7N1XVQ0lOALYm+ep+2o47ElwHUN+3WHUVcBXA6tWrPRUqSQM20R5UVT3Unh8BPsXoHNI32+E52vMjrfku4OTO7CuAh2aprxhTlyQtYrMGVJLvSXLU3mFgLfBlYDOwtyfeeuCmNrwZuKj15lsDPN4OAW4B1iY5tnWOWAtsadOeTLKm9d67qLMsSdIiNckhvhOBT7We30uB/1lVf5ZkG3BDkouBbwAXtPY3A+cCU8BTwDsBqmpPkg8C21q7D1TVnjZ8CfBx4Ejg0+0hSXPmsf/hmDWgquoB4PVj6v8POGtMvYBLZ1jWRmDjmPp24LUTrK8kjeXXoIbHK0lIknrJgJIk9ZIBJUnqJQNKktRLBpQkqZcMKElSLxlQkgalvCHUYBhQkgbB28gNjwElSeolA0qS1EsGlCSplwwoSVIvGVCSpF4yoCRJvWRASRoUvwU1HAaUpEHwW1DDY0BJknrJgJIk9ZIBJUnqJQNKktRLBpQkqZcMKElSLxlQkgbF20ENhwElaRC8HdTwGFCSpF4yoCRJvWRASZJ6aeKASrIkyReT/GkbPyXJHUl2Jrk+yeGt/vI2PtWmr+ws432tfn+Sszv1da02leSyQ/f2JEkL1Vz2oN4D7OiMfxj4SFWtAh4FLm71i4FHq+rVwEdaO5KcClwI/AiwDvhYC70lwEeBc4BTgXe0tpKkRWyigEqyAvgXwNVtPMBbgBtbk03A+W34vDZOm35Wa38ecF1VPV1VXwOmgDPbY6qqHqiqZ4DrWltJ0iI26R7U7wC/Ajzfxl8JPFZVz7bxXcDyNrwceBCgTX+8tf+n+rR5ZqrvI8mGJNuTbN+9e/eEqy5pMSnvCDUYswZUkp8CHqmqu7rlMU1rlmlzre9brLqqqlZX1eply5btZ60lLT5+EWpolk7Q5k3ATyc5FzgCOJrRHtUxSZa2vaQVwEOt/S7gZGBXkqXAK4A9nfpe3XlmqkuSFqlZ96Cq6n1VtaKqVjLq5PDZqvrXwOeAt7dm64Gb2vDmNk6b/tmqqla/sPXyOwVYBdwJbANWtV6Bh7fX2HxI3p0kacGaZA9qJr8KXJfkN4AvAte0+jXAHyaZYrTndCFAVd2X5AbgK8CzwKVV9RxAkncDW4AlwMaquu8g1kuSNABzCqiquhW4tQ0/wKgH3vQ23wEumGH+DwEfGlO/Gbh5LusiSRo2ryQhSeolA0qS1EsGlKRh8WtQg2FASRoE7wc1PAaUJKmXDChJUi8ZUJKkXjKgJEm9ZEBJknrJgJI0KPYyHw4DStIg2Mt8eAwoSVIvGVCSpF4yoCRJvWRASZJ6yYCSJPWSASVJ6iUDStKglF+EGgwDStIgeLuN4TGgJEm9ZEBJknrJgJIk9ZIBJUnqJQNKktRLBpQkqZcMKEmDUt4RajAMKEmDEO8INTizBlSSI5LcmeRLSe5L8uutfkqSO5LsTHJ9ksNb/eVtfKpNX9lZ1vta/f4kZ3fq61ptKsllh/5tSpIWmkn2oJ4G3lJVrwfeAKxLsgb4MPCRqloFPApc3NpfDDxaVa8GPtLakeRU4ELgR4B1wMeSLEmyBPgocA5wKvCO1laStIjNGlA18vdt9GXtUcBbgBtbfRNwfhs+r43Tpp+VJK1+XVU9XVVfA6aAM9tjqqoeqKpngOtaW0nSIjbROai2p3M38AiwFfhr4LGqerY12QUsb8PLgQcB2vTHgVd269Pmmak+bj02JNmeZPvu3bsnWXVJ0gI1UUBV1XNV9QZgBaM9nteMa9aex52prAOoj1uPq6pqdVWtXrZs2ewrLklasObUi6+qHgNuBdYAxyRZ2iatAB5qw7uAkwHa9FcAe7r1afPMVJckLWKT9OJbluSYNnwk8FZgB/A54O2t2Xrgpja8uY3Tpn+2qqrVL2y9/E4BVgF3AtuAVa1X4OGMOlJsPhRvTtLi4/2ghmPp7E04CdjUetsdBtxQVX+a5CvAdUl+A/gicE1rfw3wh0mmGO05XQhQVfcluQH4CvAscGlVPQeQ5N3AFmAJsLGq7jtk71DSouD9oIZn1oCqqnuA08bUH2B0Pmp6/TvABTMs60PAh8bUbwZunmB9JUmLhFeSkCT1kgElSeolA0qS1EsGlCSplwwoSVIvGVCSBsWvQQ2HASVpEPwa1PAYUJKkXjKgJEm9ZEBJknrJgJIk9ZIBJUnqJQNKktRLBpSkQSlvCDUYBpSkQYg3hBocA0qS1EsGlCSplwwoSVIvGVCSpF4yoCRJvWRASZJ6yYCSNCh+DWo4DChJUi8ZUJKkXjKgJEm9ZEBJknpp1oBKcnKSzyXZkeS+JO9p9eOSbE2ysz0f2+pJckWSqST3JDm9s6z1rf3OJOs79TOS3NvmuSJeVEuSFr1J9qCeBf5DVb0GWANcmuRU4DLglqpaBdzSxgHOAVa1xwbgShgFGnA58EbgTODyvaHW2mzozLfu4N+aJGkhmzWgqurhqvpCG34S2AEsB84DNrVmm4Dz2/B5wLU1cjtwTJKTgLOBrVW1p6oeBbYC69q0o6vqthpdJ//azrIkSYvUnM5BJVkJnAbcAZxYVQ/DKMSAE1qz5cCDndl2tdr+6rvG1CVJi9jEAZXke4E/Bt5bVU/sr+mYWh1Afdw6bEiyPcn23bt3z7bKkhYRz1wPz0QBleRljMLpE1X1J638zXZ4jvb8SKvvAk7uzL4CeGiW+oox9X1U1VVVtbqqVi9btmySVZckLVCT9OILcA2wo6p+uzNpM7C3J9564KZO/aLWm28N8Hg7BLgFWJvk2NY5Yi2wpU17Msma9loXdZYlSVqklk7Q5k3AzwH3Jrm71X4N+E3ghiQXA98ALmjTbgbOBaaAp4B3AlTVniQfBLa1dh+oqj1t+BLg48CRwKfbQ5K0iM0aUFX1fxh/ngjgrDHtC7h0hmVtBDaOqW8HXjvbukiSFg+vJCFJ6iUDSpLUSwaUpEHxflDDYUBJGgS/BzU8BpQkqZcMKElSLxlQkqReMqAkSb1kQEmSesmAkiT1kgElaVBq/N16tAAZUJIGITNeMlQLlQElSeolA0qS1EsGlCSplwwoSVIvGVCSpF4yoCQNirfbGA4DStIgeLuN4TGgJEm9ZEBJknrJgJIk9ZIBJUnqJQNKktRLBpQkqZcMKEmD4teghsOAkjQIfg1qeGYNqCQbkzyS5Mud2nFJtibZ2Z6PbfUkuSLJVJJ7kpzemWd9a78zyfpO/Ywk97Z5rkj8up0kabI9qI8D66bVLgNuqapVwC1tHOAcYFV7bACuhFGgAZcDbwTOBC7fG2qtzYbOfNNfS5K0CM0aUFX1eWDPtPJ5wKY2vAk4v1O/tkZuB45JchJwNrC1qvZU1aPAVmBdm3Z0Vd1WVQVc21mWJGkRO9BzUCdW1cMA7fmEVl8OPNhpt6vV9lffNaY+VpINSbYn2b579+4DXHVJ0kJwqDtJjDt/VAdQH6uqrqqq1VW1etmyZQe4ipKkheBAA+qb7fAc7fmRVt8FnNxptwJ4aJb6ijF1SdIid6ABtRnY2xNvPXBTp35R6823Bni8HQLcAqxNcmzrHLEW2NKmPZlkTeu9d1FnWZI0Z+UNoQZj6WwNkvwR8Gbg+CS7GPXG+03ghiQXA98ALmjNbwbOBaaAp4B3AlTVniQfBLa1dh+oqr0dLy5h1FPwSODT7SFJc+I3VIZn1oCqqnfMMOmsMW0LuHSG5WwENo6pbwdeO9t6SJIWF68kIUnqJQNKktRLBpSkQbBzxPAYUJIGxc4Sw2FASZJ6yYCSNCge6hsOA0rSIHhob3gMKElSLxlQkgbBQ3vDY0BJGhQP9Q2HASVJ6iUDSpLUSwaUJKmXDChJg2JnieEwoCRJvWRASRoUe/ENhwElSeolA0qS1EsGlCSplwwoSVIvGVCSBsHO5cNjQEmSesmAkjQIdi4fHgNKktRLBpQkqZcMKEmDYCeJ4TGgJA3C8+0isYd5MmowehNQSdYluT/JVJLL5nt9JC0szz03CqjYXWIwehFQSZYAHwXOAU4F3pHk1PldK0kLyT8+70G+oVk63yvQnAlMVdUDAEmuA84DvvJivNhX/+4JPvq5vwb2vXdMzTBSnZHuLNNvPTNju26bGV5k32V156kZ6uPbT5/nhfXZ13fSdpNsr+7fjfUb72TpYeGww8KShMMm/Bdpov+KD02TfeyzFffzM4f9b8eJ2k9/ubE/xrkuYz+f8wOYf5+1meN7PJB5Zvs57H7yaQAu+cRdnHj0ESzpfMbmvFd1AB+Uuc4ylKuu/6vTlvOTP3zCi7LsvgTUcuDBzvgu4I3TGyXZAGwA+P7v//4DfrFvP/0s9/3t450FT3udF77mDPVu+xcuYKbP3UTL2mddMr7dDC84/aVnmmeSdZn++uMG050n3fZ5wbJOPelojnjZYTz21DM8+3zx3PPF81Uz/PF9oUn+L57kJnUT/39d7PczAfv+cdnfdh9Nn+wzMunyx77GHF9zn2XO+T1Nnz63+cet435/F6cvIy+c/02vfiUPP/YdjnjZEh558js89zw8/3zx3BxvYHggNzyc8xwD2tn756uOf9GW3ZeAGvf7t+8/TFVXAVcBrF69+oB/xGf8wHF89pfefKCzS5JeAr04B8Voj+nkzvgK4KF5WhdJUg/0JaC2AauSnJLkcOBCYPM8r5MkaR714hBfVT2b5N3AFmAJsLGq7pvn1ZIkzaNeBBRAVd0M3Dzf6yFJ6oe+HOKTJOkFDChJUi8ZUJKkXjKgJEm9ZEBJknopB3JZjz5Ishv4m3lcheOBb83j6y9EbrO5c5vNjdtr7vqwzX6gqpZNLy7YgJpvSbZX1er5Xo+FxG02d26zuXF7zV2ft5mH+CRJvWRASZJ6yYA6cFfN9wosQG6zuXObzY3ba+56u808ByVJ6iX3oCRJvWRASZJ6yYBqkvzXJF9Nck+STyU5pjPtfUmmktyf5OxOfV2rTSW5rFM/JckdSXYmub7d44okL2/jU236ypfyPR5qSS5Icl+S55OsnjbNbXYQZtpOi0WSjUkeSfLlTu24JFvbZ2RrkmNbPUmuaNvqniSnd+ZZ39rvTLK+Uz8jyb1tnisy/X71C0ySk5N8LsmO9jv5nlZf2NusqnyMzsOtBZa24Q8DH27DpwJfAl4OnAL8NaN7Vi1pw68CDm9tTm3z3ABc2IZ/D7ikDf974Pfa8IXA9fP9vg9ym70G+CHgVmB1p+42O7jtOuN2WiwP4CeA04Evd2r/BbisDV/W+R09F/g0EGANcEerHwc80J6PbcPHtml3Aj/W5vk0cM58v+eD3F4nAae34aOAv2q/hwt6m7kH1VTVZ6rq2TZ6O6PbzgOcB1xXVU9X1deAKeDM9piqqgeq6hngOuC89l/FW4Ab2/ybgPM7y9rUhm8EzlrI/7lV1Y6qun/MJLfZwRm7neZ5nV5SVfV5YM+0cvezMP0zcm2N3A4ck+Qk4Gxga1XtqapHga3Aujbt6Kq6rUZ/ea/tLGtBqqqHq+oLbfhJYAewnAW+zQyo8d7F6D8EGP2QH+xM29VqM9VfCTzWCbu99Rcsq01/vLUfGrfZwZlpOy12J1bVwzD6gwyc0Opz/bwtb8PT64PQDoOfBtzBAt9mvbmj7kshyZ8D/2zMpPdX1U2tzfuBZ4FP7J1tTPtifLjXftrvb1m9Nck2GzfbmNqi2WaHwGJ8zwdjpu011/qCl+R7gT8G3ltVT+znYMOC2GaLKqCq6q37m95OCP4UcFbbjYXRfwond5qtAB5qw+Pq32K0u7y0/cffbb93WbuSLAVewb6HMXpltm02g0W9zQ6B/W2/xeybSU6qqofbIadHWn2m7bULePO0+q2tvmJM+wUtycsYhdMnqupPWnlBbzMP8TVJ1gG/Cvx0VT3VmbQZuLD1JjsFWMXoZOE2YFXrfXY4oxP4m1uwfQ54e5t/PXBTZ1l7e8W8HfhsJwiHxG12cMZup3lepz7ofhamf0Yuaj3T1gCPt8NZW4C1SY5tvdfWAlvatCeTrGnnMy/qLGtBau/jGmBHVf12Z9LC3mYvZU+TPj8Ynch/ELi7PX6vM+39jHpV3U+n5wqjnjB/1aa9v1N/FaM/yFPAJ4GXt/oRbXyqTX/VfL/vg9xmb2P0n9XTwDcZfZDdZodm247dTovlAfwR8DDwj+0zdjGjc4+3ADvb83GtbYCPtm11Ly/sUfqu9tmZAt7Zqa8Gvtzm+V3aVXUW6gP4cUaH3O7p/A07d6FvMy91JEnqJQ/xSZJ6yYCSJPWSASVJ6iUDSpLUSwaUJKmXDCipSfJckrs7j5XzvU6HUpLTklzdhn8+ye9Om35rpl2Vftr065KserHXU9prUV1JQprFP1TVG2aa2LnSxUL1a8BvHMT8VwK/AvzbQ7M60v65ByXtR9vT+GSS/wV8ptV+Ocm2dh+dX++0fX9G93D68yR/lOSXWv2f9kySHJ/k6214SUb3Idu7rH/X6m9u89yY0T3KPrH3Cu5JfjTJ/03ypSR3JjkqyV8keUNnPf4yyeumvY+jgNdV1ZcmeM8/3dmLvD/J19qkvwDe2i45Jb3o/KBJ33Vkkrvb8Neq6m1t+McY/XHfk2Qto0s3ncno2/ibk/wE8G1GlyQ6jdHv1ReAu2Z5vYsZXWLmR5O8HPjLJJ9p004DfoTR9c7+EnhTkjuB64GfraptSY4G/gG4Gvh54L1JfpDRVTjumfZae68C0PWzSX68M/5qgKraTLu0UpIbgP/d6s8nmQJeP8F7kw6aASV910yH+LZW1d4L1K5tjy+28e9lFFhHAZ+qdh3HJJNcO28t8Loke69B+Iq2rGeAO6tqV1vW3cBKRrcaebiqtgFU1RNt+ieB/5jklxldpubjY17rJGD3tNr1VfXuvSNJbu1OTPIrjLbJRzvlR4Dvw4DSS8CAkmb37c5wgP9cVb/fbZDkvcx8+4Fn+e7h9COmLesXqmrLtGW9mdH1Dfd6jtHvasa9RlU9lWQro5vQ/QyjvaXp/mHaa+9XkrOACxjd2bbriLYs6UXnOShpbrYA72r33SHJ8iQnAJ8H3pbkyHa+51925vk6cEYbfvu0ZV3SbpNAkh9M8j37ee2vAt+X5Edb+6M654OuBq4AtnX29rp20A7hzSbJDwAfA36mqqaH0Q8C902yHOlguQclzUFVfSbJa4DbWr+Fvwf+TVV9Icn1jK4i/TeMOhTs9VvADUl+Dvhsp341o0N3X2idIHazn9toV9UzSX4W+O9JjmS0J/NW4O+r6q4kTwB/MMO8X03yiiRH1eiW4Pvz84yugv2p9h4fqqpzk5zI6JDfw7PMLx0SXs1cehEk+U+MguO3XqLX+z5GN5b74ap6foY2vwg8WVVXH+Br/CLwRFVdc8ArKs2Bh/ikBS7JRcAdjO4bNTacmit54bmtuXoM2HQQ80tz4h6UJKmX3IOSJPWSASVJ6iUDSpLUSwaUJKmXDChJUi/9f8itJ/fu0070AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "carrier_spectrum = carrier_wave.make_spectrum(full=True)\n", "carrier_spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw in the beep example, convolution with impulses makes shifted, scaled copies." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3wc5Z3H8c9PxXLBDRDGYIwhCaYEYkChpBACCSGQcnkFCOm55ELKkXKX5M4JkASSSy8X4AI4hFRaMCEQDC4UY6pt2bj3brlJbpKsvru/+2NHYiWrrK3dndHu9/166eXVzOzsT+PVfjXPPPM85u6IiIhETVHYBYiIiHRHASUiIpGkgBIRkUhSQImISCQpoEREJJIUUCIiEklZCygzu8fMqs1sWRrb/trMFgVfa8xsf7bqEhGRgcGydR+UmV0EHAD+7O5vPITnfQU4290/m5XCRERkQMjaGZS7zwH2pi4zs9eZ2XQzW2Bmz5vZqd089aPA/dmqS0REBoaSHL/eFOCL7r7WzM4Hfgtc0r7SzE4ETgKeyXFdIiISMTkLKDM7AngL8JCZtS8u67LZtcBUd4/nqi4REYmmXJ5BFQH73X1SL9tcC/x7juoREZEIy1k3c3evAzaa2dUAlvSm9vVmNhEYDbycq5pERCS6stnN/H6SYTPRzKrM7HPAx4HPmdliYDnwwZSnfBR4wDW8uoiIkMVu5iIiIv2hkSRERCSSstJJ4uijj/YJEyZkY9ciIpJnFixYsNvdy7suz0pATZgwgcrKymzsWkRE8oyZbe5uuZr4REQkkhRQIiISSQooERGJpLQCysz+w8yWm9kyM7vfzAZnuzARESlsfQaUmR0PfBWoCKbNKCY5JJGIiEjWpNvEVwIMMbMSYCiwPXsliYiIpBFQ7r4N+AWwBdgB1Lr7zK7bmdl1ZlZpZpU1NTWZr1RERApKOk18o0mOmXcScBwwzMw+0XU7d5/i7hXuXlFeftD9VpInWmJxYvFE2GVIgUgknOY2zb5TqNJp4nsXsNHda9y9Dfg7yXmdpABNvHE677vthbDLkAJxy+MrOPWm6bTpj6KClE5AbQEuMLOhlpxp8FJgZXbLkihbtbM+7BKkQDw4fyuAAqpApXMNai4wFVgILA2eMyXLdYmISIFLayw+d/8e8L0s1yIiItJBI0mIiEgkKaBERCSSFFAiIhJJCigREYkkBZSIiESSAkpERCJJASUiIpGkgBIRkUhSQIlI5LmHXYGEQQElIpFlFnYFEiYFlIiIRJICSkREIkkBJSIikaSAEhGRSFJAiYhIJCmgREQkkhRQIiISSX0GlJlNNLNFKV91Zvb1XBQnIiKFq88p3919NTAJwMyKgW3AI1muS0RECtyhNvFdCqx3983ZKEaiYeWOOuIJjS0j0bdiex0JvVfz1qEG1LXA/d2tMLPrzKzSzCpramr6X5mEYtm2Wt77m+e57Zm1YZci0qG7CFq4ZR9X3Po8d83ZkPN6JDfSDigzGwR8AHiou/XuPsXdK9y9ory8PFP1SY7trG0GYGlVbciViEBvQ/Ft29cEwLLteq/mq0M5g3ovsNDdd2WrGBERkXaHElAfpYfmPRERkUxLK6DMbCjwbuDv2S1HREQkqc9u5gDu3ggcleVaREREOmgkCRERiSQFlIgMSLr7Kf8poKRb+uWXgUKzwucvBZR0Yt38ticSzn9PXcKybbrfRMKxr6GVL/5lAbVNbWGXIjmUVicJKRzezanTrvpmHqzcynNrNEKIhOPO59YzfflOJo0fxRff8bqwy5Ec0RmUdEvNJiISNgWU9OjRRdvYuLsh7DJEOl0TrWtu454XNuLdne5LXlETn3RrT0MrX3tgEQAvf/uSkKuRQmXdXBS96R/LeHTRdt40bmQIFUku6QxKurVo6/6Ox/pDVaJkb0MrAIs1oHHeU0BJJ1X7Gg9a1p5PO+uac1uMSOCV9Xt6XPfsquocViK5pICSTmat1GD1Ej0berkW2tAaz2ElkksKKOlTaywRdglSoA60xMIuQUKkgJJOrJsO5gldhJKI0O0PhUUBJX1SPolIGBRQIjKgdNf1XPKTAko68W6HidUplESDmZr5CokCSkREIindKd9HmdlUM1tlZivN7MJsFybRoWtQIhKGdIc6+g0w3d2vMrNBwNAs1iQiItJ3QJnZCOAi4DMA7t4KtGa3LIkSnUCJSBjSaeI7GagB/mBmr5rZ3WY2rOtGZnadmVWaWWVNjeYNGqi6uw9KJCoM63ZSTclP6QRUCXAOcIe7nw00AJO7buTuU9y9wt0rysvLM1ymiEiS8qlwpBNQVUCVu88Nvp9KMrCkQKiThIiEoc+AcvedwFYzmxgsuhRYkdWqJDRqPhGRqEi3F99XgHuDHnwbgH/NXkkiIiJpBpS7LwIqslyLiEivdIZfWDSShHTS3fWm7oc/EhHJLgWU9EmdJEQkDAoo6ZMCSqJEo5kXDgWUdKLffRGJCgWUdKKzJRGJCgWUdLJlb+NBy9RJQkTCoICSThRGEnWu0/yCoYASEZFIUkCJyIChHnyFRQElIgOGoZAqJAoo6ZOa/EUkDAooERGJJAWUdKIZdUUkKhRQ0kl3zftq4hORMCigpE+6N0pEwqCAEhGRSEprwkIz2wTUA3Eg5u6avFBEQqGrpIUj3SnfAd7p7ruzVomISB90C1RhUROfdLK7vuWgZerZJ1Hy9KrqsEuQHEk3oByYaWYLzOy6bBYk4WpojR+0LKFufCISgnSb+N7q7tvN7Bhglpmtcvc5qRsEwXUdwPjx4zNcpoRJ8SRRcd/cLWGXIDmU1hmUu28P/q0GHgHO62abKe5e4e4V5eXlma1SQrVw876wSxABYG31gbBLkBzqM6DMbJiZDW9/DFwGLMt2YRIdtzy+IuwSRKQApdPENwZ4JBhBuAS4z92nZ7UqEREpeH0GlLtvAN6Ug1pEREQ6qJu5HJZ4Ql0nRCS7FFByWO6buznsEiTPVdc1h12ChEwBJYdlb0Nb2CVInmuJJcIuQUKmgBIRkUhSQMlh0RQcIpJtCigREYkkBZQcFg3PJ9nW3HbwuJBSWBRQcliUT5JtK3bUhV2ChEwBJYdlX0Nr2CWISJ5TQMlh+csrug9KRLJLASUiIpGkgBKRSDLN717wFFAiIhJJCigRiSSdP4kCSkQiSbcyiAJKRCJJZ1CigBKRSDqUPhJ7dV9eXko7oMys2MxeNbPHs1mQiAgc2nBamkAzPx3KGdTXgJXZKkREJJV6mUtaAWVm44ArgbuzW46IiEhSumdQ/wv8F9DjFJdmdp2ZVZpZZU1NTUaKExGRwtVnQJnZ+4Bqd1/Q23buPsXdK9y9ory8PGMFikhhskPox6fmwPyUzhnUW4EPmNkm4AHgEjP7a1arEhGRgtdnQLn7t919nLtPAK4FnnH3T2S9MhGRNGkCzfyk+6BEJJKK1GxX8EoOZWN3nw3MzkolMqB85i0Twi5BRPKczqDksBTrz1uJEHWSyE8KKDksavMXkWxTQImISCQpoEQkktRsJwooEYkoJVShU0CJiEgkKaBERCSSFFByWFwTcotIlimgRCSS1ElCFFAiEkmHkk/KsvykgBIRkUhSQInIgKcrovlJASUiIpGkgJLDUrWvKewSJM+ZekkUPAWUAPDsqmou/PHTaW//yvo9WaxG5NB84u653DF7fdhlSIYpoASAm/+5nB21zWlvX98SY+qCqixWJIXsuTU1PLu6Ou3tV+2s56fTV2WxIgnDIU1YKJLqmw8t5qpzx4VdhuShT98zL+wSJAL6PIMys8FmNs/MFpvZcjO7OReFiYhIYUvnDKoFuMTdD5hZKfCCmT3p7q9kuTbJIV2QFpGo6TOg3N2BA8G3pcGXbjsQEZGsSquThJkVm9kioBqY5e5zu9nmOjOrNLPKmpqaTNcpWabzJxGJmrQCyt3j7j4JGAecZ2Zv7GabKe5e4e4V5eXlma5TREQKzCF1M3f3/cBs4PKsVCMiIhJIpxdfuZmNCh4PAd4F6IaDfKM2PhGJmHR68Y0F/mRmxSQD7W/u/nh2yxIRkUKXTi++JcDZOahFRESkg4Y6EkAtfCISPQooERGJJAWUABpJQkSiRwElIiKRpIASEZFIUkAJAJv3NIRdgohIJwooAaAtrvF/RSRaFFAiIhJJCigREYkkBZSIiESSAkpERCJJASX98j/TVrBpt3oASmY0tMT4ziNLwy5DIkIBJf3yu+c38vk/V4ZdhuSJP760ifvmbgm7DIkIBZT0W8LVRV1EMk8BJSIikaSAEs78/oywSxDJiAmTp7G3oTXsMiRDFFBCfXMs7BJEAMjEoPord9T1fycSCX0GlJmdYGbPmtlKM1tuZl/LRWGSG3sOtPR7H+trGkgkdB1K+u9n01f3ex+bNK5k3kjnDCoGfMPdTwMuAP7dzE7PblmSK1ff+XJG9hNTQElE3PDIsrBLkAzpM6DcfYe7Lwwe1wMrgeOzXZjkxgbdwyQiEXVI16DMbAJwNjC3m3XXmVmlmVXW1NRkpjoZMNriibBLEJE8k3ZAmdkRwMPA1939oKuQ7j7F3SvcvaK8vDyTNcoAoBnjRSTT0gooMyslGU73uvvfs1uSDESGEkpEMiudXnwG/B5Y6e6/yn5JMhDpDEpEMi2dM6i3Ap8ELjGzRcHXFVmuS0REClxJXxu4+wug9hvp3eNLdnDVuePCLkMGsPmb9oZdgkSMRpKQjPjmQ4vDLkEGuEzdkyf5QwElIiKRpIASEZFIUkCJiEgkKaAKWFNrPOwSRLJiZ21z2CVIBiigCtTmPQ2c9t3pYZchkhUX/Php5m1Ur8CBTgFVoD5y1ythlyCSVdfcpV6BA50CqkDVNrVlfJ+fumdexvcpheHmfy4PuwSJIAVUgYp75udvmrNGo9jL4fnDi5vCLkEiSAFVoFpjmh5DRKJNASUiIpGkgCow62sOcO4PZoVdhkhOXPLL2UxftjPsMuQwKaAKzF9e3syehtas7b+pNU5DSyxr+5f80hKLU9ec+Q477TbUNPDtvy/J2v4lu/oczVzkUEy6ZSYtsQSbfnJl2KXIAPCRu15h0db9WX0N02RlA5bOoCSjWtT5Qg5BtsMJNFfQQKaAEpG8phOogUsBJVmRSGT+PivJL56Fe/G6p4QaqPoMKDO7x8yqzWxZLgqS/PDVB14NuwSJuPvnbc3J6xQpnwasdM6g/ghcnuU6JM88vmRH2CVIxE1buj0nr6MmvoGrz4By9zmAhgUWkYwqylFymJr4BqyMXYMys+vMrNLMKmtqNCZbFLXE4vzxpU1hlyGSUzvrmlmzqz7sMuQwZCyg3H2Ku1e4e0V5eXmmdisZVNekG2glOnJ1BgXw/cc0WvpApF58BcRRzzqJjlx2Xnhp/Z7cvZhkjAKqkCifJEKa23RTt/QunW7m9wMvAxPNrMrMPpf9siQfTJmzPuwSJKLW7Krn5Q06q5HepdOL76PuPtbdS919nLv/PheFSWb937PrOO9HT+f0NX/0xKqcvp4MHLc+vTbnr/n5P1fm/DWlf9TEVyB+PmN12CX06bN/nM+M5ZoaYaBZu6ueK299nvpDGJU8jPvkZq3YlfPXlP5RQA1ADS0xfjdnA5v3NIRdStrmb9rLS+t397rNM6uq+cJfFuSoIsmUn89YzfLtdby4ruf/3zW76pm+bODcvN3QEuNXM1ezN4tT00jfFFAD0Bnfm8H/PLGSa6e80uM2K7bXMWHyNKr2NR7SX7aZNnt1NQBX3/kyH/vd3NDqkOxpH3axt2ktLvv1HL7414UArN4Z3j1J66rricUTTLplJo+8WtXjdl974FVufWYd5/xgFtV1zTmsUFIpoCJgaVUtCzbvS2vb6vrXfll6mxjwvnmbAXh2VTW/npX79v52n/nD/EN+zuX/Oyet7dyd5dtrD3n/0rv1NQdoao2nte2vZq7mqZXJprN072t6/+0vHHZt/fX+216koSXO/sY2vvtoz/dGPbWyuuPxo4vSG5Jp4+4GnlujQQoySQEVAe+//QU+fMdLaW37xZQmsKIuN5L85eVN3DE72XMuHvxZe9Ojy7nnxY2ZKfQwbd3b2PF4wuRpTJg8jS/8JXnBevv+JiZMnkblptdG01q1s54texoP2k9Xf3xpE1fe+kKvTUtyaFpjCS795XN8+p55fW5b29jGrc+s6/h+f2MrEyZP6zhr/uXM1R3/3+2q9jXSGuKcYU1tcd50y8xOy55YuoMfPr6ix+f8zxMricX7rvmdv5id1nGT9CmgBpCWWJyFW16b4G1/Y1tHu35tYxs3Pbqcn05fxafvmUflpvTOyHLh7T979qBlM5bv4gt/qewIl6vufLnT+ot+fvBzurr5n8kPlUcXbctAlQIQSyQ/iOdt6nv4za4f9N+ampxa/fcvbGTqgipuSwmvdm/7ad//r7lS3xzjxn8s5cv3LuTuFzayYnsdAK9uOfh352+VPTcHSvYooAaQV7ccPPtoe7v+Qwtem7rguTU1rK0+kLO6DteM5bvoz5RAFSeOBuDM40dmqCLJhOIi45sPLQ67jLT89ZUtHY+/fG+ydeJDvz24NeM7jyzNWU3yGgXUANLU1v11gavueCnta1hR0xJL71pHd044cigAQweV9HtfhS6Tx25n7cDsVLBpTyPX3PVy3xtKziigQvKbp9by+JLtnPODWek/qYezjcrN+3hy2cC8f+imXi5Up+sbDy2mal8jE2+czh9Cvt42EK3ZVc/EG6czbckO/vPB/p/5rAqxl15/zdvY/5mFJkyextKqWr7xt8WaWbqfFFAh+fVTa7j+vle7vc+iur6ZD97+Ajf+o3OzwoFeeu3lu1g8wd3Pb+jUmWJdSjNm+7WN9utSkr5l25I9If/9voVM7+ZG6RnLd+qeoC7++spmzv3BLDbt7v5exPff/gIPL6yi5kBLjivLLyVhFyCv2dvQyvLttXzy98meQIuramluS3DFmcdyyalj+Mr9hTWN+rrqA7z+mCOA5LBJ7b0Rf37VWVxdcQJLt6mLeSbEe/krf+vexo6bp+95cRPLbn4PAM09NDfnu3XVB7jl8RXMCbqTX/yL2Xz1ktfzn5dNDLmy/KSACkFPHwjdNfdNXVDF1AVVbPrJldkuK3Le9avnWHnL5Zz23emdln9r6pK0mpFqG9tYsGUvl5w6JlslDkgLNu+l/IjBjD8qeQ3vp9O7HzPxlBuf7NQl/EBLjAmTpzH9629nfgaawgaatniCm/+5nOfXdr6t4dZn1nFy+RHdPqe2qY0xIwbnory8ZN6fblQ9qKio8MpKDczY7p4XNvLo4u2cO34097y4kT999jzdL5FFT/3nO/jrK5tZsaOOeRv3svCmd3PksEFhlxUZ7fcl/eLqNzFu9JBeRySR/rnolHKWVO1n5JBSzjhuBMVFRdz20bPDLityzGyBu1cctFwBlV1rd9Xz7l+nNzKCZMdRwwYx74Z3UdzDDHmtsQRt8QStsQSjB2iQ7W9spaykGIAhg4p73O4bf1vMwwt1T0+Y7vv8+bzldUeHXUak9BRQ6iRxmGob2/jY715hR21Tr9spnMK3p6GVPb1crD7/R09xxvdmcPYPZjF7dTXunvZoB42tsY6REyDZmePf/jSfa6e8zITJ03B3psxZT019C23xBLc+vZam1jg3PLKUyQ8v4aNTXuk0fNWCzfvYlebYb23xBImEU9vYxqRbZnHad6cf1BzalcIpfH2NSdkaS/DZP87vuHG4kOXdGVQsnmBfYxvlw8s6vi8uso6BLN2dfY1ttMYSHDtyMFPmrGfTnkYmjRvF644ZxjnjR3c76KW7M/Gm6bTGEmz6yZV86Lcvdtw4+7tPVXDH7HXc+YlzOSalvfmO2et7bN+X3Htd+TB+ec0kjho2iNqmNlqDs6aemri+edkptMadW59eyztOKad8eBk//Jc3knDn9O/O6LTt299wNNv2N/G+M8d2Gv7n1GOHp93t+kcfOvOgG0Ifu/6tnHHcSG57Zi1b9jTy91e38Y5Tyqk4cTS/nLWm2/1Mfu+pbNrdwJcvfj0HWmIMHVTMxb+YnVYNkhvnnjiah7/0lo7vY/EEn/9zJZ+44EQ+96fXPjs3/eRKvnzvAp5YupMl37+MEYNLD9qXu7NlbyNPLN3JcaMGs2xbLd+54jTqmmI0tMYYO3Jwp8+/WMIpLU6em9Q2tjGopKjXs+5c6FcTn5ldDvwGKAbudvef9LZ9fwPK3Tnp208A8PCXLqS5LcEFJx9FcZGxYnsdwweX8Nji7ZwzfjQnHjWUn89YzSOv9j7czbPfvJhP3D2Xbft7P+Pp6n8/MonHl2zvNHhkT84/6Uh++/FzePvPnqUxzcE2RaSwPfHVt1NcZLwnjUGSr6kYxyWnjuGLfz20aWnM4MHrLmTptlp+0Mu4g5NOGMXtHzubRAJe3rCbi04p56HKKr566RsAeGn9bsaNGspFP3+WwaVFvHrTZRkJt8MOKDMrBtYA7waqgPnAR929x5+yvwG1bFst77stvBGPpWdTPnku12nOJsmhf17/tlBHQJfeZaKHcX+uQZ0HrHP3De7eCjwAfLDfFfUi7NNNoeMvplSff/tJXHraGD7zlgnc/IEzQqhKCsn33n86F51SzhnHjeCGK047aP3173x9CFVJLqVzBnUVcLm7/1vw/SeB8939+p6ek8kmPsmOOz5+Dtv2N/HDaSsBKDL4zhWnMXxwCZefMZaRQ0vZVdfM+T96uuM5vf2ldPfzG/jhtJW8943H0hpL8PSqvptEReC1a29XnzuOn374rIOmkWk38cYnaQk6r3z4nHH88po3EU84D8zfwpDSYn45c01HE/7Hzh/PlWeO5eN3a5LMbJr21bdxxnH9H6y5P018VwPv6RJQ57n7V7psdx1wHcD48ePP3bx5c78KXrhlH9/5+1LOHj+alrY4u+qb2baviVOPHcGa6nrqmmKYJXu8HGiJ8YWLTqaxNc7WvY0MLSuhNRbn4onH8OSynQwuKeK0sSMoLjKGlBazYkcdBmyvbeLiiccwrKyE5tY4Dy+s4vyTjmTZ9jo27m7gK5e8nn8s2s7IIaVcMrGcMSMGM3fjXkqKjGNHJjtDLK6q5Z+Lt3Ny+TA21CSHPfnUhSdyoDlGcZEx4ehhvHPiMZxcPox11Qc4+ogytu1v4qxxIyktLqKuuY2hpcU0xxLsOdDC2JFDGFTy2ontrrpmNu5u4OSjh9ESSzCsrKTTPT3uTl1zjAMtMY4bOZh9jW0cOWwQDS0xGlvjlJUWdbqw2hKLU13X0jHQal9+89Rafv3UGjb86IoePzh6U9ec7JBy9BFlxOIJisyoa26joTVO+RFl1Da1UWRQVlpMayzByCGlHd3B19ccIJ5whg4qZkhpMRt3N3DsyMHUNrXREktw+tgRDC597Wx7XfUBykqKGFxazJa9jYwZUcbWvU1s3dvIi+t3c9rYEcQTyUkOS4uLOOO4EWzf30xzW5wzx41ky55GiouM0uIiDrTEmHTCKBZv3U9bPMHFpx7D3A17aYnFiSecE48axh9e3MiNV55OWUkRTy7bwcfOP5GRQ0rZtLuBnXXNjBlRxrEjhrCrvpl1uw5woCXG+COHMm70EEpLili2rZZRQwclvy8q4ollOzjpqGGcXD6M++Zu4ejhZdQ1vfb/ef7JR7Fiex3NbXEuOPkoVu+qZ39jKw2tceJx56wTRrK+uoF9ja2cd9KRrN5ZT8KdMSMGM2JwCYurajl97AhOOHIoZxw3gl11zYwZMbjjeE06YVSn99WSqlpiiQTjjxzG9v1NjBpayojBpWzb30RrPMHZJ4zquPheU9/CsLJi2uJOS1ucIwaX0NyWoLktztiRgzsuzNc3t9HclujoxHSoLvzx05QPL+Ox69+W1vbVdc2UlRYzcshrvwPNbXHqmto6lu9raGXkkFK21zYxYkgpw8tKOnWUqmtuo7axjeIiY8+BVoaWFfO68iNwd8yMllicvQ2tDCou4shhg9jf2MboYYNIJJyl22o5ZkTyfT7hqORnxKqddWze00hDS/Iz4q45GwC47PQxzFyxiyvPGss540dTVlLEkqr9JBw+8uYTmLl8J7GE8/TKat575rEs3LyP40YN4ZQxw5m1YhfHjx7CO04pZ19DKy+s20358DL2NrRy1rhRbN3byDHDy1hctZ8jykr48DnjmLqginGjh/Ds6hquqRjHgZY498/bQm1TGyeXD6OmroX6lhgTjhrKpj2NvPH4EYwcUsrQQSUs3rqf31x7Nhe+7qjD+n/sqj8BdSHwfXd/T/D9twHc/cc9PUf3QYmISLr6cw1qPvAGMzvJzAYB1wKPZbpAERGRVH2OxefuMTO7HphBspv5Pe7e/zkSREREepHWYLHu/gSgXgsiIpIzGupIREQiSQElIiKRpIASEZFIUkCJiEgkKaBERCSSsjLdhpnVAP0bSiIzjgZ297mV9EXHMTN0HDNDxzEzonQcT3T38q4LsxJQUWFmld3dnSyHRscxM3QcM0PHMTMGwnFUE5+IiESSAkpERCIp3wNqStgF5Akdx8zQccwMHcfMiPxxzOtrUCIiMnDl+xmUiIgMUAooERGJpAEXUGb2czNbZWZLzOwRMxuVsu7bZrbOzFab2XtSll8eLFtnZpNTlp9kZnPNbK2ZPRjMd4WZlQXfrwvWT8jlz5htZna1mS03s4SZVXRZp2OYBT0dv0JlZveYWbWZLUtZdqSZzQreS7PMbHSw3Mzs1uDYLTGzc1Ke8+lg+7Vm9umU5eea2dLgObda6hS5ecTMTjCzZ81sZfA7/bVgeX4cS3cfUF/AZUBJ8PinwE+Dx6cDi4Ey4CRgPcn5q4qDxycDg4JtTg+e8zfg2uDxncCXgsdfBu4MHl8LPBj2z53hY3gaMBGYDVSkLNcxzM7x7vH4FeoXcBFwDrAsZdnPgMnB48kpv9tXAE8CBlwAzA2WHwlsCP4dHTweHaybB1wYPOdJ4L1h/8xZOo5jgXOCx8OBNcHvcV4cywF3BuXuM909Fnz7CjAuePxB4AF3b3H3jcA64Lzga527b3D3VuAB4IPBXwGXAFOD5/8J+JeUff0peDwVuDSf/gJz95XuvrqbVTqG2dHt8Qu5plC5+xxgb5fFqe+Zru+lP50Zw3wAAAXpSURBVHvSK8AoMxsLvAeY5e573X0fMAu4PFg3wt1f9uQn7J9T9pVX3H2Huy8MHtcDK4HjyZNjOeACqovPkkx0SP6nbE1ZVxUs62n5UcD+lLBrX95pX8H62mD7fKdjmB09HT/pbIy774DkBy9wTLD8UN+XxwePuy7Pa0Ez+tnAXPLkWKY1o26umdlTwLHdrLrB3R8NtrkBiAH3tj+tm+2d7kPYe9m+t30NGOkcw+6e1s2ygj2GGaRj0T89Hb9DXZ63zOwI4GHg6+5e10tjxYA6lpEMKHd/V2/rgwt47wMuDU47IZnsJ6RsNg7YHjzubvlukqe3JcFf+Knbt++rysxKgJEc3BwRaX0dwx7oGGZHb8dVXrPLzMa6+46gaak6WN7T8asCLu6yfHawfFw32+clMyslGU73uvvfg8V5cSwHXBOfmV0O/DfwAXdvTFn1GHBt0HvsJOANJC/uzQfeEPQ2G0Tygv1jQbA9C1wVPP/TwKMp+2rvxXIV8ExKEOYzHcPs6Pb4hVxTFKW+Z7q+lz4V9EC7AKgNmq1mAJeZ2eigl9plwIxgXb2ZXRBc9/xUyr7ySvDz/R5Y6e6/SlmVH8cyV70xMvVF8sL9VmBR8HVnyrobSPaWWk1KTxOSPVfWBOtuSFl+MskP4HXAQ0BZsHxw8P26YP3JYf/cGT6GHyL5l1ELsIvkG1HHMLvHvNvjV6hfwP3ADqAteC9+juQ1yqeBtcG/RwbbGvB/wbFbSueep58N3mPrgH9NWV4BLAueczvBqDn59gW8jWST25KUz8Qr8uVYaqgjERGJpAHXxCciIoVBASUiIpGkgBIRkUhSQImISCQpoEREJJIUUJKXzCxuZotSviaEXVMmmdnZZnZ38PgzZnZ7l/WzrctI9V3WP2Bmb8h2nSL9EcmRJEQyoMndJ/W0MmX0i4HqO8AP+/H8O4D/Aj6fmXJEMk9nUFIwgjONh8zsn8DMYNm3zGx+MDfOzSnb3mDJ+ZueMrP7zeybwfKOMxMzO9rMNgWPiy05V1n7vr4QLL84eM5US85jdm/7qO5m9mYze8nMFpvZPDMbbmbPm9mklDpeNLOzuvwcw4Gz3H1xGj/zB1LOIleb2cZg1fPAu4JhqEQiSW9OyVdDzGxR8Hiju38oeHwhyQ/3vWZ2GcnhnM4jeYf9Y2Z2EdBAcjiis0n+jiwEFvTxep8jOWzMm82sDHjRzGYG684GziA5htmLwFvNbB7wIPARd59vZiOAJuBu4DPA183sFJIjcyzp8lrtd/an+oiZvS3l+9cDuPtjBMMqmdnfgOeC5QkzWwe8KY2fTSQUCijJVz018c1y9/ZBay8Lvl4Nvj+CZGANBx7xYKxHM0tn3LzLgLPMrH1cwpHBvlqBee5eFexrETCB5PQjO9x9PoC71wXrHwJuMrNvkRx65o/dvNZYoKbLsgfd/fr2b8xsdupKM/svksfk/1IWVwPHoYCSiFJASaFpSHlswI/d/a7UDczs6/Q8pUCM15rGB3fZ11fcfUaXfV1McszDdnGSv3fW3Wu4e6OZzSI5sdw1JM+Wumrq8tq9MrNLgatJzmKbanCwL5FI0jUoKWQzgM8Gc+lgZseb2THAHOBDZjYkuN7z/pTnbALODR5f1WVfXwqmPsDMTjGzYb289irgODN7c7D98JTrQXcDtwLzU872Uq0kaMLri5mdCPwWuMbdu4bRKcDydPYjEgadQUnBcveZZnYa8HLQb+EA8Al3X2hmD5IcGXozyQ4F7X4B/M3MPgk8k7L8bpJNdwuDThA19DI1tru3mtlHgNvMbAjJM5l3AQfcfYGZ1QF/6OG5q8xspJkN9+Q03735DMmRrR8Jfsbt7n6FmY0h2eS3o4/ni4RGo5mL9MHMvk8yOH6Ro9c7juRkcae6e6KHbf4DqHf3uw/zNf4DqHP33x92oSJZpiY+kQgxs08Bc0nOGdVtOAXuoPO1rUO1H/hTP54vknU6gxIRkUjSGZSIiESSAkpERCJJASUiIpGkgBIRkUhSQImISCT9P9FmPopSFI9kAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "convolved = spectrum.convolve(carrier_spectrum)\n", "convolved.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After one convolution, we have two peaks. After two convolutions, we have four." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "reconvolved = convolved.convolve(carrier_spectrum)\n", "reconvolved.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that's how AM works. Now let's talk about sampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sampling\n", "\n", "I'll start with a recording of a drum break. If you don't know about the Amen break, you might want to read this: https://en.wikipedia.org/wiki/Amen_break" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('263868__kevcio__amen-break-a-160-bpm.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/263868__kevcio__amen-break-a-160-bpm.wav" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave = read_wave('263868__kevcio__amen-break-a-160-bpm.wav')\n", "wave.normalize()\n", "wave.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This signal is sampled at 44100 Hz. Here's what it sounds like." ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the spectrum:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even though this signal has already been sampled, let's pretend it hasn't. So we'll treat the original wave as if it were a continuous analog signal.\n", "\n", "Now I'm going to sample it at 1/4 of the framerate (11025 Hz) by keeping every 4th sample and setting the rest to zero." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "from thinkdsp import Wave\n", "\n", "def sample(wave, factor):\n", " \"\"\"Simulates sampling of a wave.\n", " \n", " wave: Wave object\n", " factor: ratio of the new framerate to the original\n", " \"\"\"\n", " ys = np.zeros(len(wave))\n", " ys[::factor] = wave.ys[::factor]\n", " return Wave(ys, framerate=wave.framerate) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result doesn't sound very good. It has a bunch of extra high frequency components." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled = sample(wave, 4)\n", "sampled.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we look at the spectrum, we can see the extra components." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sampled.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand where those came from, it helps to think of sampling as multiplication with an \"impulse train\". The following function is similar to `sample`, but it makes the impulse train explicit." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "def make_impulses(wave, factor):\n", " ys = np.zeros(len(wave))\n", " ys[::factor] = 1\n", " ts = np.arange(len(wave)) / wave.framerate\n", " return Wave(ys, ts, wave.framerate)\n", "\n", "impulses = make_impulses(wave, 4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Multiplying by `impulses` has the same effect as `sample`." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled = wave * impulses\n", "sampled.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now if we look at the spectrum of `impulses`, we can see what's going on in the frequency domain." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "impulses.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Multiplying by `impulses` makes 4 shifted copies of the original spectrum. One of them wraps around from the negative end of the spectrum to the positive, which is why there are 5 peaks in the spectrum off the sampled wave." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def show_impulses(wave, factor):\n", " impulses = make_impulses(wave, factor)\n", " plt.subplot(1, 2, 1)\n", " impulses.segment(0, 0.001).plot_vlines(linewidth=2)\n", " decorate(xlabel='Time (s)')\n", " \n", " plt.subplot(1, 2, 2)\n", " impulses.make_spectrum(full=True).plot()\n", " decorate(xlabel='Frequency (Hz)', xlim=[-22400, 22400])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we take fewer samples, they get farther apart in the time domain and the copies of the spectrum get closer together in the frequency domain.\n", "\n", "As you vary the sampling factor, below, you can see the effect." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from ipywidgets import interact, interactive, fixed\n", "import ipywidgets as widgets\n", "\n", "slider = widgets.IntSlider(min=2, max=32, value=4)\n", "interact(show_impulses, wave=fixed(wave), factor=slider);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To recover the original wave, we can apply a low pass filter to clobber the unwanted copies. The wave was sampled at 11025 Hz, so we'll cut it off at the Nyquist frequency, 5512.5." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = sampled.make_spectrum(full=True)\n", "spectrum.low_pass(5512.5)\n", "spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result sounds quite different from the original, for two reasons:\n", "\n", "1. Because we had to cut off frequencies about 5512.5 Hz, we lost some of the high frequency components of the original signal.\n", "2. Even for the frequencies below 5512.5 Hz, the spectrum is not quite right, because it includes contributions leftover from the extra copies." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered = spectrum.make_wave()\n", "filtered.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the original and the sampled/filtered signal are not the same:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "def plot_segments(original, filtered):\n", " start = 1\n", " duration = 0.01\n", " original.segment(start=start, duration=duration).plot(color='gray')\n", " filtered.segment(start=start, duration=duration).plot()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_segments(wave, filtered)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sampling didn't work very well with this signal because it contains a lot of components above the Nyquist frequency.\n", "\n", "## Sampling, take two\n", "\n", "Let's try again with a bass guitar intro (can you name that tune?).\n" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('328878__tzurkan__guitar-phrase-tzu.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/328878__tzurkan__guitar-phrase-tzu.wav" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave = read_wave('328878__tzurkan__guitar-phrase-tzu.wav')\n", "wave.normalize()\n", "wave.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unless you have good speakers, it might not sound very good." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the spectrum. Not a lot of high frequency components!" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the spectrum after sampling:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAepElEQVR4nO3de7xcZX3v8c83CURQJAE2FJNoggYL7UHBLUbxIC9DuekheA6p0KMESE1t0eOlrUJpD+dUPcXLkSOtRcPNcEq5SLXkWDyQchGqJGSHSyAkkG2AZJOQbMiFS7gl+fWPeTZOdmbP7KyZNXvNzPf9eu1X1jzPs2Y982St+c5as2YtRQRmZmZFM2qkO2BmZlaJA8rMzArJAWVmZoXkgDIzs0JyQJmZWSGNGekOVHPAAQfE5MmTR7obZmaWoyVLljwbEV2DywsdUJMnT6anp2eku2FmZjmS9FSlch/iMzOzQnJAmZlZITmgzMyskBxQZmZWSA4oMzMrJAeUmZkVkgPKzMwKyQFlZmaFVOgf6jbCk8++xG2PPsOcY9850l1pG/+ydB0bXniFURKzPjR5pLvTNn76QB+bt77OXnuM5oyj3z7S3Wkb1923mlde3864vffgE0dOHOnutI15v3qSD75zfw49aJ/cltH2AfUHly9k7ZZX+GT329l37z1Gujtt4bx/vP+NaQdU43zphofemHZANc4FP3n4jWkHVONcNH8Zo0eJX/+vU3JbRtsf4nvpte0ABL5zsJlZI23fke/7atsHlJmZtSYHlJmZFZIDyszMCqlmQEm6StIGSY9UqPszSSHpgPRYki6V1CtpqaSjytrOkrQy/c1q7MswM7N2M5w9qB8BJw0ulDQJ+D1gdVnxycDU9DcHuCy13Q+4CPgAcDRwkaTx9XTczMzaW82Aioi7gY0Vqi4BvgI7nR43A7gmShYC4yQdDJwILIiIjRGxCVhAhdAzMzMbkOk7KEmnAk9HxEODqiYAa8oe96WyocorPfccST2Sevr7+7N0z8zM2sBuB5SkvYELgf9eqbpCWVQp37UwYm5EdEdEd1fXLreoNzOzDpFlD+qdwBTgIUlPAhOB+yX9FqU9o0llbScCa6uUN034d7pmZi1ltwMqIh6OiAMjYnJETKYUPkdFxDPAfOCsdDbfNGBLRKwDbgVOkDQ+nRxxQirLndK+263LnmnG4treimee3+nxXY9tGKGetJcH12ze6fHCVc+NUE/ay72/3nkcHxo0zpbNnU3a7odzmvl1wL3AuyX1SZpdpfktwCqgF7gc+BOAiNgIfA1YnP7+OpU1zfll1+Oy7D75w4U7PT776sUj1JP2ctr3f7nT4zPmLhyipe2OMy/feRxnDBpny+acJm33NS8WGxFn1qifXDYdwHlDtLsKuGo3+2cFEz5WamZN0vZXkqh0doaZmRVf2weUmZm1JgeUmZkVkgPKzMwKyQFlZmaF5IAyM7NCavuAknwen5lZK2r7gDIzs9bkgDIzs0JyQJmZWSE5oMzMrJAcUGZmVkgOKDMzK6S2DyifZG5m1praPqDMzKw1OaDMzKyQ2j6gfCEJM7PW1PYBZWZmrckBZbvFd3w3s2ZxQNlueeHVbSPdBTPrEDUDStJVkjZIeqSs7NuSVkhaKumnksaV1V0gqVfSY5JOLCs/KZX1Sjq/8S/FzMzayXD2oH4EnDSobAHwuxFxBPA4cAGApMOBM4DfSfP8vaTRkkYD3wdOBg4HzkxtzczMKqoZUBFxN7BxUNltETFwrGchMDFNzwCuj4hXI+IJoBc4Ov31RsSqiHgNuD61NTMzq6gR30GdC/w8TU8A1pTV9aWyocp3IWmOpB5JPf39/Q3onpmZtaK6AkrShcA24NqBogrNokr5roURcyOiOyK6u7q66umemZm1sDFZZ5Q0C/g4MD3ijZOP+4BJZc0mAmvT9FDlOfMvdc3MWlGmPShJJwFfBU6NiK1lVfOBMySNlTQFmArcBywGpkqaImlPSidSzK+v68PtazOWYmZmjVZzD0rSdcBxwAGS+oCLKJ21NxZYoFICLIyIz0bEMkk3Ao9SOvR3XkRsT8/zOeBWYDRwVUQsy+H1mJlZm6gZUBFxZoXiK6u0/wbwjQrltwC37FbvzMysY/lKEmZmVkgOKDMzKyQHlJmZFZIDyszMCqntA6r/hVdHugtmZpZB2weUmZm1JgeUmZkVkgPKzMwKyQFlZmaF5IAyM7NCckCZmVkhOaDMzKyQHFBmZlZIDigzMyskB5SZmRWSA8rMzArJAWVmZoXkgDIzs0JyQJmZWSE5oMzMrJAcUGZmVkg1A0rSVZI2SHqkrGw/SQskrUz/jk/lknSppF5JSyUdVTbPrNR+paRZ+bwcMzNrF8PZg/oRcNKgsvOB2yNiKnB7egxwMjA1/c0BLoNSoAEXAR8AjgYuGgg1MzOzSmoGVETcDWwcVDwDmJem5wGnlZVfEyULgXGSDgZOBBZExMaI2AQsYNfQMzMze0PW76AOioh1AOnfA1P5BGBNWbu+VDZU+S4kzZHUI6mnv78/Y/fMzKzVNfokCVUoiyrluxZGzI2I7ojo7urqamjnzMysdWQNqPXp0B3p3w2pvA+YVNZuIrC2SrmZmVlFWQNqPjBwJt4s4Oay8rPS2XzTgC3pEOCtwAmSxqeTI05IZWZmZhWNqdVA0nXAccABkvoonY13MXCjpNnAamBman4LcArQC2wFzgGIiI2SvgYsTu3+OiIGn3hhZmb2hpoBFRFnDlE1vULbAM4b4nmuAq7ard6ZmVnH8pUkzMyskBxQZmZWSA4oMzMrJAeUmZkVkgPKzMwKyQFlZmaF5IAyM7NCckCZmVkhOaDMzKyQHFBmZlZIDigzMyskB5SZmRWSA8rMzArJAWVmZoXkgDIzs0JyQJmZWSE5oMzMrJAcUGZmVkgOKDMzKyQHlJmZFVJdASXpS5KWSXpE0nWS3iRpiqRFklZKukHSnqnt2PS4N9VPbsQLMDOz9pQ5oCRNAP4b0B0RvwuMBs4AvglcEhFTgU3A7DTLbGBTRLwLuCS1MzMzq6jeQ3xjgL0kjQH2BtYBHwVuSvXzgNPS9Iz0mFQ/XZLqXL6ZmbWpzAEVEU8D3wFWUwqmLcASYHNEbEvN+oAJaXoCsCbNuy2133/w80qaI6lHUk9/f3/W7pmZWYur5xDfeEp7RVOAtwFvBk6u0DQGZqlS95uCiLkR0R0R3V1dXVm7Z2ZmLa6eQ3zHA09ERH9EvA78BPgQMC4d8gOYCKxN033AJIBUvy+wsY7lm5lZG6snoFYD0yTtnb5Lmg48CtwJnJ7azAJuTtPz02NS/R0RscselJmZGdT3HdQiSic73A88nJ5rLvBV4MuSeil9x3RlmuVKYP9U/mXg/Dr6bWZmbW5M7SZDi4iLgIsGFa8Cjq7Q9hVgZj3LMzOzzuErSZiZWSE5oMzMrJAcUGZmVkgOKDMzKyQHlJmZFZIDyszMCskBZWZmheSAMjOzQnJAmZlZITmgzMyskBxQZmZWSB0VUDt2+OLpefBF6c06RzO3944KqLn3rBrpLrS0J599qWL5TUv6mtyT9vLA6k0Vy+98bEOTe9Je7lixvmL5Q2s2N7kn7eXHPc3b3jsqoB5+estId6GlPfviqxXLH3vmhSb3pL30bXq5YvkT/ZU/ENjw/HpD5fFbu7nyeNvwPLru+aYtq6MCyszMWocDyszMCskBZWZmheSAsmGTRroH7cnjaq2kmetrZwWUz4Y26xgO/tbXWQFlZmYtwwFlZmaFVFdASRon6SZJKyQtl/RBSftJWiBpZfp3fGorSZdK6pW0VNJRjXkJZmbWjurdg/oe8P8j4reB9wDLgfOB2yNiKnB7egxwMjA1/c0BLqtz2dZ0lQ/q+1h/feRxbSqPa32GWl/zkDmgJL0VOBa4EiAiXouIzcAMYF5qNg84LU3PAK6JkoXAOEkHZ+55pk43dWlmZlaHevagDgH6gaslPSDpCklvBg6KiHUA6d8DU/sJwJqy+ftS2U4kzZHUI6mnv7+/ju5V4LP4cuFrxebD45oPj2vrqCegxgBHAZdFxJHAS/zmcF4llfZfdllVImJuRHRHRHdXV1cd3TMzs1ZWT0D1AX0RsSg9volSYK0fOHSX/t1Q1n5S2fwTgbV1LN+azMfuzayZMgdURDwDrJH07lQ0HXgUmA/MSmWzgJvT9HzgrHQ23zRgy8ChQGsNPjRiZs00ps75Pw9cK2lPYBVwDqXQu1HSbGA1MDO1vQU4BegFtqa2ZmZmFdUVUBHxINBdoWp6hbYBnFfP8szMrHN01JUkwqfxmZm1jI4KKKvPUCdJ+OSJ+nhcm8vjWh9fzTwnzfwFtJmNLDmJWl5HBdSytVtGugstbcPzr1Ysf3z9i03uSXt5etPLFcuffPalJvekvQw1fn1DjLcNz+PrX2jasjoqoJ58butId6GlffYfllQs/8XjDb7iR4f5xi3LK5bPu/epJvekvfzfhZXH7+v/Unm8bXjuWfls05bVUQFlZmatwwFlZmaF5IAyM7NCckCZmVkhOaDMzKyQHFBmZlZIDigzMyskB5SZmRWSA8rMzArJAWVmZoXkgDIzs0JyQJmZWSE5oMzMrJAcUGZmVkgOKDMzK6S6A0rSaEkPSPpZejxF0iJJKyXdIGnPVD42Pe5N9ZPrXbaZmbWvRuxBfQEovwPYN4FLImIqsAmYncpnA5si4l3AJamdmZlZRXUFlKSJwMeAK9JjAR8FbkpN5gGnpekZ6TGpfnpqb2Zmtot696D+D/AVYEd6vD+wOSK2pcd9wIQ0PQFYA5Dqt6T2O5E0R1KPpJ7+ft9K3MysU2UOKEkfBzZExJLy4gpNYxh1vymImBsR3RHR3dXVlbV7ZmbW4sbUMe8xwKmSTgHeBLyV0h7VOElj0l7SRGBtat8HTAL6JI0B9gU21rF8MzNrY5n3oCLigoiYGBGTgTOAOyLivwJ3AqenZrOAm9P0/PSYVH9HROyyB2VmZgb5/A7qq8CXJfVS+o7pylR+JbB/Kv8ycH4OyzYzszZRzyG+N0TEXcBdaXoVcHSFNq8AMxuxPDMza3++koSZmRWSA8rMzArJAWVmZoXkgDIzs0LquID65weeHukutKTnXny1av3dj/uqH1k88exLVeuX9m1uUk/ay4Nrqo/bU89VH3er7M4VG5q6vI4LqEVP+LfBWWza+lrV+oef3tKknrSX1Ru3Vq1fuf7FJvWkvTz2zPNV65/e9HKTetJeHqgR/I3WcQFl1kp8OeWceFxbQgcGlC9ekU31LdpvpNnUGjaPazaqtb46oTJp9qh1YEBZHrzB58Pjmg8Hf2twQNmw1NqgvcFn43HNSa1xbU4v2k6z18eOCyhfnjYfo7zF58L39MzHKK+wLaHjAsqyqfldiT+TZlL7uxLLovb6alk0ezt3QFlD+IN+Nj7ENzI8rtn4EJ8Vkg81jQzvmWZTa331+twaHFDWEN7gs/Fp5iPDw5qNTzPPmU+SyMbH9EeGxzWb2sHvkW0FHRdQlg9v7/nwG2k+PKrZ+Dsoa0mj/EaaCw9rPjyurcEBZcPis81y4h+U5qLm+uqRzaTZe/QOKGsIb+758CG+fHhYW0PmgJI0SdKdkpZLWibpC6l8P0kLJK1M/45P5ZJ0qaReSUslHdWoF2H5q/mJ01t8Jv6hbj68OraHevagtgF/GhGHAdOA8yQdDpwP3B4RU4Hb02OAk4Gp6W8OcFkdy84sfDXzXPj9IB+jfIwjF/7OtDVkXv0jYl1E3J+mXwCWAxOAGcC81GwecFqangFcEyULgXGSDs7c8+H1Mc+n7yj+Diof/q4kHzX3TD2smVQat+078nufbcjnM0mTgSOBRcBBEbEOSiEGHJiaTQDWlM3Wl8pyU+t22tY4fiO1VuKAyqbSZ/5FTzyX2/LqDihJbwH+CfhiRFS7z3KlVWKXlytpjqQeST39/f119W2H96AaZk2NW5Pf0LOmar1V9mCNW2jfsWJDk3rSXhY8ur5q/cN9W5rUk/Zy/eLVuxbm+DZbV0BJ2oNSOF0bET9JxesHDt2lfwe2sD5gUtnsE4G1g58zIuZGRHdEdHd1ddXTPfzNSOO8+Oq2qvXrt7zSpJ60l00vvVa1/tkXX21ST9rLhheqr49bXn69ST1pL+s2N3c7r+csPgFXAssj4rtlVfOBWWl6FnBzWflZ6Wy+acCWgUOBeam0G++dqmxqX3yzSR3pMB7XbGp/B+WBbZQ831LH1DHvMcCngYclPZjK/gK4GLhR0mxgNTAz1d0CnAL0AluBc+pYthWMN/eMap584pHNg0c1m2Z/6M8cUBHxbwz9/zy9QvsAzsu6vCy8EjbOuw58S9V6v5Fmc8w7D+CHv1g1ZL1HNZtT3/s27nty45D1Xl2zOftDk7n8nieatryO+5WFj/BlM8a3yM7F2DHVN0EHfzZvGVv9s7dHNZv93jx2l7I8f1vacQFl+fAPSvPhzwXZ1Mr1UR7YhsnzEF9bv61U+vTp1TIf/mV+NjVPPmlSPzqN90yz8e02GmhYP7yyhvDmng+/kebDo9oa2jugvBY2jd9I8+FhzYfHtXHy/NDf1gFljVP7mnGWB19CKh8e18bJ85qnbR1QlVZC/1A3J97eM/FFeEeGz5HIptnD1tYBVYlvt5EPb+/Z1Bo3j2s+HPyN40N8Vnj+DiofPjsyHz7E10A+zTwbb9uN49OhR4bX4WxqfmDyuGbi08xz9ovH6ruFR6dasa7anVRg5YYXm9ST9vJQjds+LHlqU5N60l56qlzmCOCRp327jSx+9etd7/3kK0lkVCntn6txewOrbPa8npHuQlv62s8erVrv4M/mmnufqqveKruryR/w2zqgzMwsX77UkZmZdZy2DiifWWZmli/vQZmZWSGt3rg1t+du64Dy/pOZWb627diR23O3d0A5oczMcuVDfGZmVkg7HFCNdW+FH5vZ0F55ffuw2vnHj7tn4zB/k7f6ufyO8bej4Y7XcMffSpatrbx97/DVzBvrzMsXjnQXWspf/fMjw2r38b/9t5x70l7Ovvq+YbU79tt35tyT9jL9u3cNq90p37sn3460mY9dWnn7zvN2G2Nye+YhSDoJ+B4wGrgiIi7Oa1nVxu2CnyxllMSFHzuMvfds+jAUXkRwyYLHAfjxkr5hz/f1nz3Ka9t38JcfO5w9x3Tk55+qIoKLf76C0aPE0hqXOSr3Nz9fzuvbgr/82GGM8r0idrFt+w6+ccty9hwzite3D+8N85nnX+Hbt65g+w746knv9s9SKnh123a+/rPljK2yLef5HZTyTL9dFiaNBh4Hfg/oAxYDZ0ZExeu9dHd3R09P9kvsrN38Mh+6+I7dmufys7o5/rADB/qbedmtJCJY2reFGd//ZW7LuPqc93PcoV1AZ43rkqc2cfoP7s1tGf8w+wN8eOoBRERHjeu9q57jDy5flNsyrp8zjWmH7N9x4/qLx/s5++rFuzXfl44/lC8cP7WuZUtaEhHdg8ubvetwNNAbEatSp64HZgDVL0jWRJ+5pljXnJswbi+e3vzySHejbufs5kqft8n7782TbfDdzqeuzO9NOot37L83T7XBuJ4xt1hfA0wcvxd9m4r5PnDEpH1ze+5mH4OZAKwpe9yXyt4gaY6kHkk9/f31XZhwzCix71578Jn/OIUv1pnwI6Vo4TTzfRP53zPfA8DF//k/8NmPvHOEe5RN0cLpU9PeznfSuH7r9CP4o2MPGeEeZVO0cDr7Q5P51n85AoDvzHwP5x4zZYR7lE3RwuncY6bwj3/4AW7/04/wkalduS2n2Yf4ZgInRsQfpsefBo6OiM9Xal/vIT4zMyu+oQ7xNXsPqg+YVPZ4IrC2yX0wM7MW0OyAWgxMlTRF0p7AGcD8JvfBzMxaQFNPkoiIbZI+B9xK6TTzqyJiWTP7YGZmraHpPwCKiFuAW5q9XDMzay3+JaWZmRWSA8rMzArJAWVmZoXkgDIzs0JyQJmZWSE19UoSu0tSP/DUSPcDOAB4dqQ70YI8btl43HafxyyboozbOyJil2smFTqgikJST6XLcFh1HrdsPG67z2OWTdHHzYf4zMyskBxQZmZWSA6o4Zk70h1oUR63bDxuu89jlk2hx83fQZmZWSF5D8rMzArJAWVmZoXUkQEl6duSVkhaKumnksaV1V0gqVfSY5JOLCs/KZX1Sjq/rHyKpEWSVkq6Id3nCklj0+PeVD+5ma8xD5JmSlomaYek7kF1Hrc6DTVWnUTSVZI2SHqkrGw/SQvSurJA0vhULkmXpvFaKumosnlmpfYrJc0qK3+fpIfTPJdKUnNfYeNJmiTpTknL0/b5hVTe+uMWER33B5wAjEnT3wS+maYPBx4CxgJTgF9Tum/V6DR9CLBnanN4mudG4Iw0/QPgj9P0nwA/SNNnADeM9OtuwLgdBrwbuAvoLiv3uNU/tkOOVSf9AccCRwGPlJV9Czg/TZ9ftr2eAvwcEDANWJTK9wNWpX/Hp+nxqe4+4INpnp8DJ4/0a27AmB0MHJWm9wEeT9tky49bR+5BRcRtEbEtPVxI6dbzADOA6yPi1Yh4AugFjk5/vRGxKiJeA64HZqRPER8FbkrzzwNOK3uueWn6JmB6q39ai4jlEfFYhSqPW/0qjtUI96npIuJuYOOg4vJ1YvC6ck2ULATGSToYOBFYEBEbI2ITsAA4KdW9NSLujdK77jVlz9WyImJdRNyfpl8AlgMTaINx68iAGuRcSp8IoPSfuqasri+VDVW+P7C5LOwGynd6rlS/JbVvRx63+g01VgYHRcQ6KL0ZAwem8t1d7yak6cHlbSMdEj8SWEQbjFvT76jbLJL+FfitClUXRsTNqc2FwDbg2oHZKrQPKgd5VGlf7bkKbTjjVmm2CmUdNW4N0Kmvux5DjdnulrcFSW8B/gn4YkQ8X+XAQ8uMW9sGVEQcX60+fQH4cWB62m2F0ieDSWXNJgJr03Sl8mcp7R6PSZ/2y9sPPFefpDHAvux66KJwao3bEDp+3Bqg2hh2uvWSDo6Idelw04ZUPtSY9QHHDSq/K5VPrNC+5Unag1I4XRsRP0nFLT9uHXmIT9JJwFeBUyNia1nVfOCMdCbZFGAqpS8HFwNT05lne1L68n5+CrY7gdPT/LOAm8uea+AsmNOBO8qCsN143OpXcaxGuE9FUb5ODF5XzkpnpU0DtqRDWbcCJ0gan85cOwG4NdW9IGla+l7zrLLnalnptVwJLI+I75ZVtf64NetMkyL9UfoSfw3wYPr7QVndhZTOpnqMsjNVKJ358niqu7Cs/BBKb8a9wI+Bsan8Telxb6o/ZKRfdwPG7ROUPk29CqyntPJ63Bo3vhXHqpP+gOuAdcDraV2bTek7yNuBlenf/VJbAd9P4/UwO59Zem5ah3qBc8rKu4FH0jx/R7qaTiv/AR+mdMhtadl72intMG6+1JGZmRVSRx7iMzOz4nNAmZlZITmgzMyskBxQZmZWSA4oMzMrJAeUdSxJ2yU9WPY3eaT71EiSjpR0RZo+W9LfDaq/S4OuSj+o/npJU/Pup9lQ2vZKEmbD8HJEvHeoyrIrXbSqvwC+Xsf8lwFfAT7TmO6Y7R7vQZmVSXsaP5b0/4DbUtmfS1qc7p3zP8vaXqjS/Zv+VdJ1kv4slb+xZyLpAElPpunRKt2LbOC5/iiVH5fmuUml+5RdO3AFd0nvl/QrSQ9Juk/SPpLukfTesn78UtIRg17HPsAREfHQMF7zqWV7kY9JeiJV3QMcny45ZdZ0XvGsk+0l6cE0/UREfCJNf5DSm/tGSSdQunTT0ZR+gT9f0rHAS5QuR3Qkpe3ofmBJjeXNpnRZmfdLGgv8UtJtqe5I4HcoXePsl8Axku4DbgA+GRGLJb0VeBm4Ajgb+KKkQyldhWPpoGUN/PK/3Cclfbjs8bsAImI+6bJKkm4EfpHKd0jqBd4zjNdm1nAOKOtkQx3iWxARAxeoPSH9PZAev4VSYO0D/DTStRwlDee6eScAR0gauAbhvum5XgPui4i+9FwPApMp3WpkXUQsBoiI51P9j4G/kvTnlC5N86MKyzoY6B9UdkNEfG7ggaS7yislfYXSmHy/rHgD8DYcUDYCHFBmu3qpbFrA30TED8sbSPoiQ99yYBu/OXz+pkHP9fmIuHXQcx1H6fqGA7ZT2jZVaRkRsVXSAko3nvt9SntLg708aNlVSZoOzKR0R9tyb0rPZdZ0/g7KrLpbgXPTvXaQNEHSgcDdwCck7ZW+7/lPZfM8CbwvTZ8+6Ln+ON0aAUmHSnpzlWWvAN4m6f2p/T5l3wddAVwKLC7b2yu3nHQIrxZJ7wD+Hvj9iBgcRocCy4bzPGaN5j0osyoi4jZJhwH3pvMWXgQ+FRH3S7qB0pWjn6J0QsGA7wA3Svo0cEdZ+RWUDt3dn06C6KfKrbMj4jVJnwT+VtJelPZkjgdejIglkp4Hrh5i3hWS9pW0T5RuA17N2ZSufP3T9BrXRsQpkg6idMhvXY35zXLhq5mbNYCk/0EpOL7TpOW9jdLN5H47InYM0eZLwAsRcUXGZXwJeD4irszcUbM6+BCfWYuRdBawiNI9oyqGU3IZO3+3tbs2A/PqmN+sLt6DMjOzQvIelJmZFZIDyszMCskBZWZmheSAMjOzQnJAmZlZIf07a47KmXr/4PEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sampled = sample(wave, 4)\n", "sampled.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it sounds like:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sampled.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, instead of using `Spectrum.low_pass`, I'm going to make the low pass filter explicitly. I'm calling it `boxcar` because it looks like the boxcar smoothing window from Chapter 8." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "from thinkdsp import Spectrum\n", "\n", "def make_boxcar(spectrum, factor):\n", " \"\"\"Makes a boxcar filter for the given spectrum.\n", " \n", " spectrum: Spectrum to be filtered\n", " factor: sampling factor\n", " \"\"\"\n", " fs = np.copy(spectrum.fs)\n", " hs = np.zeros_like(spectrum.hs)\n", " \n", " cutoff = spectrum.framerate / 2 / factor\n", " for i, f in enumerate(fs):\n", " if abs(f) <= cutoff:\n", " hs[i] = 1\n", " return Spectrum(hs, fs, spectrum.framerate, full=spectrum.full)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = sampled.make_spectrum(full=True)\n", "boxcar = make_boxcar(spectrum, 4)\n", "boxcar.plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can apply the filter by multiplying in the frequency domain." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "filtered = (spectrum * boxcar).make_wave()\n", "filtered.scale(4)\n", "filtered.make_spectrum(full=True).plot()\n", "decorate(xlabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now if we listen to the sampled/filtered wave, it sounds pretty good." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And if we compare it to the original, it is almost identical." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_segments(wave, filtered)\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's not completely identical because the original signal had some tiny components above the Nyquist frequency. But the differences are small." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/plain": [ "0.0001035154188809725" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "diff = wave.ys - filtered.ys\n", "plt.plot(diff.real)\n", "np.mean(abs(diff))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Multiplying the spectrum of the sampled signal and the boxcar filter, in the frequency domain, corresponds to convolution in the time domain. And you might wonder what the convolution window looks like. We can find out by computing the wave that corresponds to the boxcar filter." ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sinc = boxcar.make_wave()\n", "ys = np.roll(sinc.ys, 50)\n", "plt.plot(ys[:100].real)\n", "decorate(xlabel='Index')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's the sinc function, which you can read about at https://en.wikipedia.org/wiki/Sinc_function\n", "\n", "## Sinc interpolation\n", "\n", "Multiplying by a boxcar filter corresponds to convolution with a sinc function, which has the effect of interpolating between the samples. To see how that works, let's zoom in on a short segment of the signal:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start = 1.0\n", "duration = 0.01\n", "factor = 8\n", "\n", "short = wave.segment(start=start, duration=duration)\n", "short.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll sample the signal and show the samples using vertical lines:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sampled = sample(short, factor)\n", "sampled.plot_vlines(color='gray')\n", "decorate(xlabel='Time(s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the sampled spectrum to construct the sinc function. In this example I\n", "\n", "1. Shift the sinc function in time so it lines up with the sampled segment (both start at 1.0 seconds).\n", "\n", "2. Roll the sinc function so the peak is in the middle, just because it looks better that way." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = sampled.make_spectrum()\n", "boxcar = make_boxcar(spectrum, factor)\n", "sinc = boxcar.make_wave()\n", "sinc.shift(sampled.ts[0])\n", "sinc.roll(len(sinc)//2)\n", "\n", "sinc.plot()\n", "decorate(xlabel='Time(s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following figure shows how convolution makes lots of shifted, scaled copies of the sinc function and adds them up. " ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "def plot_sinc_demo(wave, factor, start=None, duration=None):\n", "\n", " def make_sinc(t, i, y):\n", " \"\"\"Makes a shifted, scaled copy of the sinc function.\"\"\"\n", " sinc = boxcar.make_wave()\n", " sinc.shift(t)\n", " sinc.roll(i)\n", " sinc.scale(y * factor)\n", " return sinc\n", " \n", " def plot_sincs(wave):\n", " \"\"\"Plots sinc functions for each sample in wave.\"\"\"\n", " t0 = wave.ts[0]\n", " for i in range(0, len(wave), factor):\n", " sinc = make_sinc(t0, i, wave.ys[i])\n", " seg = sinc.segment(start, duration)\n", " seg.plot(color='green', linewidth=0.5, alpha=0.3)\n", " if i == 0:\n", " total = sinc\n", " else:\n", " total += sinc\n", " \n", " seg = total.segment(start, duration) \n", " seg.plot(color='blue', alpha=0.5)\n", "\n", " sampled = sample(wave, factor)\n", " spectrum = sampled.make_spectrum()\n", " boxcar = make_boxcar(spectrum, factor)\n", "\n", " start = wave.start if start is None else start\n", " duration = wave.duration if duration is None else duration\n", " \n", " sampled.segment(start, duration).plot_vlines(color='gray')\n", " wave.segment(start, duration).plot(color='gray')\n", " plot_sincs(wave)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# CAUTION: don't call plot_sinc_demo with a large wave or it will\n", "# fill memory and crash\n", "plot_sinc_demo(short, 4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this figure:\n", "\n", "1. The thin green lines are the shifted, scaled copies of the sinc function.\n", "2. The blue line is the sum of the sinc functions.\n", "3. The gray line (which you mostly can't see) is the original function.\n", "\n", "The sum of the sinc functions interpolates between the samples and recovers the original wave. At the beginning and end, where the interpolation deviates from the original; the problem is that the original is not periodic, so the sinc interpolation breaks at the boundaries.\n", "\n", "If we zoom in on a short segment, we can see how it works more clearly." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start = short.start + 0.004\n", "duration = 0.00061\n", "plot_sinc_demo(short, 4, start, duration)\n", "decorate(xlim=[start, start+duration],\n", " ylim=[-0.05, 0.17])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The vertical gray lines are the samples.\n", "\n", "Again, the thin green lines are the shifted, scaled copies of the sinc function.\n", "\n", "In this segment, the interpolation matches the original wave very well.\n", "\n", "Notice that each sinc function has a peak at the location of one sample and the value 0 at every other sample location. That way, when we add them up, the sum passes through each of the samples." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [], "source": [] } ], "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.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }