{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "ThinkDSP\n", "========\n", "\n", "This notebook contains code examples from Chapter 10: Signals and Systems\n", "\n", "Copyright 2015 Allen Downey\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": [ "Impulse response\n", "--\n", "To understand why the impulse response is sufficient to characterize a system, it is informative to look at the DFT of an impulse:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1. 0. 0. 0. 0. 0. 0. 0.]\n" ] } ], "source": [ "from thinkdsp import Wave\n", "\n", "impulse = np.zeros(8)\n", "impulse[0] = 1\n", "wave = Wave(impulse, framerate=8)\n", "print(wave.ys)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The DFT of an impulse is all ones, which means that the impulse contains equal energy at all frequencies. So testing a system with an impulse is like testing it will all frequency components at the same time:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j]\n" ] } ], "source": [ "impulse_spectrum = wave.make_spectrum(full=True)\n", "print(impulse_spectrum.hs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You might notice something about the impulse and its DFT:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(wave.ys**2)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8+0j)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(impulse_spectrum.hs**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, the total magnitue of DFT(y) is N times the total magnitude of y.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "impulse = np.zeros(10000)\n", "impulse[0] = 1\n", "wave = Wave(impulse, framerate=10000)\n", "wave.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wave.make_spectrum().plot()\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "System characterization\n", "--\n", "\n", "Let's look at a mini example of system characterization. Suppose you have a system that smooths the signal by taking a moving average of adjacent elements:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "window_array = np.array([0.5, 0.5, 0, 0, 0, 0, 0, 0,])\n", "window = Wave(window_array, framerate=8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this moving average window, we can compute the transfer function:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1. +0.j 0.85355339-0.35355339j 0.5 -0.5j\n", " 0.14644661-0.35355339j 0. +0.j 0.14644661+0.35355339j\n", " 0.5 +0.5j 0.85355339+0.35355339j]\n" ] } ], "source": [ "filtr = window.make_spectrum(full=True)\n", "print(filtr.hs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the magnitudes:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1. , 0.92387953, 0.70710678, 0.38268343, 0. ,\n", " 0.38268343, 0.70710678, 0.92387953])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtr.amps" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "filtr.plot()\n", "decorate(xlabel='Frequency', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you multiply the transfer function by the spectrum of an impulse (which is all ones), the result is the filter:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1. +0.j 0.85355339-0.35355339j 0.5 -0.5j\n", " 0.14644661-0.35355339j 0. +0.j 0.14644661+0.35355339j\n", " 0.5 +0.5j 0.85355339+0.35355339j]\n" ] } ], "source": [ "product = impulse_spectrum * filtr\n", "print(product.hs)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.max(np.abs(product.hs - filtr.hs))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now if you transform back to the time domain, you have the impulse response, which looks a lot like the window:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "filtered = product.make_wave()\n", "filtered.plot()\n", "decorate(xlabel='Time')" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 5.00000000e-01 5.00000000e-01 0.00000000e+00 2.77555756e-17\n", " 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.77555756e-17]\n" ] } ], "source": [ "print(filtered.ys.real)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example is meant to demonstrate why a recording of an impulse response is sufficient to characterize a system: because it is the IDFT of the transfer function." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Acoustic impulse response\n", "--\n", "\n", "Here's a recording of a gunshot, which approximates the acoustic impulse response of the room:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('180960__kleeb__gunshot.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/180960__kleeb__gunshot.wav" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "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", "response = read_wave('180960__kleeb__gunshot.wav')\n", "\n", "start = 0.12\n", "response = response.segment(start=start)\n", "response.shift(-start)\n", "\n", "response.normalize()\n", "response.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it sounds like:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The DFT of the impulse response is the transfer function:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "transfer = response.make_spectrum()\n", "transfer.plot()\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the transfer function on a log-log scale:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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Jl9NfG9OHBjS2Ixm+VF8ItIOwIMAUlT1SrPjISIKpzcmDMDBnMIqZR2a1UOHZvVwQedmyHhsid/nGty+aajDM5ShNSgReUVEjojIZrfyESKyQ0R2iYjPef1UdY+qTjAyTiIiq6qfGIdOzet73Na0XvVntIxYot4sRteg5sCx2OH/KgpEJBbA8wAuApAJYK2IzAcQC2Ca2/E3q+oRg2MkIiILMjRBqepyEUl3Kx4AYJeq7gEAEXkbwGhVnQbgUiPjISKym8X3nI/M4wWVrznMvHZawbF8fIVMZ5lHItJERF4E0EdEpvrY71YRWSci67KyskIXLRGRhXVqXh8XdA7v0PJwMWOQhKf87rXVVFWPAZhU00lVdSaAmQCQkZFho1ZYIqLoZEYNKhNAa5fXaQAOhOLEXA+KiCLVuAGta97JDzZq4TMlQa0F0FFE2opIPICxAOaH4sRcD4qIItW0MT3x8/SRhl/n3os6GX6NUDF6mPlbAFYCOEtEMkVkgqqWApgMYBGAbQDmqeqWEF2PNSgiimo19W/cdWHHsMQRCkaP4hvnpXwhgIUGXG8BgAUZGRkTQ31uIiIKL051RERkI+yDsig28RER2YetEhQHSRARBabzGZ6nUbICWyUoIqJo5z6TRFqjJHMCCQFbJSg28RERVfXBHYPNDiFotkpQbOIjIqqqWf1Es0MImq0SFBER2YetEhSb+IiI7MNWCYpNfEREDr3SUrDjsREet61/aDjemnh2mCMKnK0SFBEROcTGCBLqxHrc1qReAlKS4sIcUeCYoIiIbKimOfm0xj3MxwRFRGQrgU12JBZegtdWCYqDJIiIAnd+p1SzQ/DIVgmKgySIKNrVTXD0O7Vs6P8MEjOu62vJB3rNWPKdiIgM0vmMBnjhur4B1YrqJtRB3zaNDIwqOExQREQ289seLcwOISRs1cRHRET2YasExUESRET2YasExUESRET2YasERURE9sEERURElsQERURElsQERURElsQERUREXi2+53zTrs0ERUREXp3ZJNm0a9sqQfE5KCIi+7BVguJzUEREwWtSN75aWVyMeWmCc/EREdncTeeko23TukEdGxNj3npRTFBERDb38Khufu1ntTV2bdXER0RE9sEERURElsQERURElsQERURElsQERURElsQERUREAIDrBrYxO4QqmKCIiAgAcO9FncwOoQrL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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "transfer.plot()\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude',\n", " xscale='log', yscale='log')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can simulate what a recording would sound like if it were played in the same room and recorded in the same way. Here's the violin recording we have used before:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('92002__jcveliz__violin-origional.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/92002__jcveliz__violin-origional.wav" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd5hU5fUH8O9haVKkLoK0pSlF+oKgotKUomIsCcaCLURji4nGFayIcdVY87OG2HsPyYIUEVGQsiiwgPQiSJXe257fH3N3uTt7Z3Zmbp2Z7+d59tmZWw/D7Jy5733f84qqgoiIKGjK+R0AERGRFSYoIiIKJCYoIiIKJCYoIiIKJCYoIiIKpPJ+B5CIunXralZWlt9hEBGRA+bOnfurqmaGL0/KBJWVlYX8/Hy/wyAiIgeIyFqr5WziIyKiQGKCIiKiQGKCIiKiQGKCIiKiQGKCIiKiQGKCIiKiQHIkQYnIayKyRUQWRlgvIvK8iKwQkQUi0sW0bpiILDd+hjkRDxERJT+nrqDeADAgyvqBAFoZP8MBvAQAIlIbwIMATgfQHcCDIlLLoZiIiCiJOZKgVHUagO1RNhkC4C0NmQmgpog0AHA+gEmqul1VdwCYhOiJjigwpi3bii8XbvI7DKKU5VUliYYA1pmerzeWRVpeiogMR+jqC02aNHEnSqI4XPPabADAmtzBPkdClJq86iQhFss0yvLSC1VfVdVsVc3OzCxVsomIiFKMVwlqPYDGpueNAGyIspwo0NZt31/8+PmvlvsYCVHq8ipBjQVwjdGbrweAXaq6EcAEAOeJSC2jc8R5xjKiQLvn0wXFj5+etMzHSIhSlyP3oETkfQDnAqgrIusR6plXAQBU9WUA4wAMArACwH4A1xnrtovIIwDmGIcaparROlsQBcKMldv8DoEo5TmSoFT1ijLWK4BbIqx7DcBrTsRBRESpg5UkiIgokJigiBxw9Fih3yEQpRwmKCIHdHx4ot8hEKUcJiiiOFldLe07fMyHSIhSGxMUUZwOHGEyIvICExRRnJigiLzBBEUUp3s+WWC5/Ag7ShA5igmKKE5fL91quXzHvsMeR0KU2pigiKIoLFQs2rArpm0XbdjtcjRE6YUJiiiKMd+twuDnv8OcNWVX4LrujTllbkNEsWOCIoqiqBDsyi17AQBPTVwadfvtbOYjcgwTFFEUB4+EOj48/N/FAIB/TlkRdfsuj0xyPSaidMEERQSgYP0unHLfeGzZfdByPbuWE3mPCYoIwOvTV+Pw0UJ8u/xXv0MhIgMTFJEJr5SIgoMJigjA0s17AAD3fbHQ50iIqAgTFBGAPQeP+h0CEYVhgiJyWGgCaSKyiwmKKMyxQusEcyDGKTV++HmHk+EQpS0mKCIAiuNJ6db3frDcZvmWPTEdaz/nhiJyBBMUEYB12w8UPx6/cJOPkRBREUcSlIgMEJGlIrJCRHIs1j8jIvOMn2UistO07php3Vgn4iHy07++Xe13CEQpobzdA4hIBoAXAPQHsB7AHBEZq6qLi7ZR1TtN298GoLPpEAdUtZPdOIiCYtoy6+k4iCg+TlxBdQewQlVXqephAB8AGBJl+ysAvO/AeYmIKIU5kaAaAlhner7eWFaKiDQF0AzAFNPiyiKSLyIzReRiB+IhIqIUYLuJD4BYLIs0EGQogE9U1dzNqYmqbhCR5gCmiEiBqq4sdRKR4QCGA0CTJk3sxkwU1c3vzMXvTy/5Phs7b4NP0RClJyeuoNYDaGx63ghApL/koQhr3lPVDcbvVQCmouT9KfN2r6pqtqpmZ2Zm2o2ZKKrxCzfh6n/PLrFszHfs/EDkJScS1BwArUSkmYhURCgJleqNJyKnAqgF4HvTsloiUsl4XBfAmQAWh+9LRETpx3YTn6oeFZFbAUwAkAHgNVVdJCKjAOSralGyugLAB1qyDkwbAK+ISCFCyTLX3PuPiIjSlxP3oKCq4wCMC1v2QNjzhyz2mwGgvRMxEBFRamElCSIiCiQmKCIiCiQmKCIX7D54xO8QiJIeExSlvbHznR/ftG77fsePSZRumKAo7d3+/o9+h0BEFpigiIgokJigiIgokJigiFwwa9V2v0MgSnpMUJTWVv+6z5XjTljEWXmJ7GKCorR2+cvfl70REfmCCYrS2t5DHK9EFFRMUJTWDh4pdOW4R465c1yidMIEReSCH37eWWrZ0WOF+GXnAR+iIUpOTFBELsnKySvx/Jwnp+LM3CkYV7DRp4iIkgsTFJFHiq6e3p211udIiJIDExSRi7Jy8lBYqCWW/cw6fUQxYYIictl7s3/Grv3Hewuu2877UESxYIKitBV+ZeOW3QePoOOoiZ6ci8htre8fb9ky4AYmKEpbv+495Ml5PpyzzpPzEHmhaGjGmm3uVGExY4IictnabbznRKnnAw++eDFBpZAJizZhxspf/Q6DiNLAuzPd743KBJUiDh45hj++PRe//9csHDp6zO9wqAxb93jTvEjkJPNny77D7n/OOJKgRGSAiCwVkRUikmOx/loR2Soi84yfG03rhonIcuNnmBPxpKMfTZULPs5f72MkFItuj072OwSiuO0/5O2XX9sJSkQyALwAYCCAtgCuEJG2Fpt+qKqdjJ8xxr61ATwI4HQA3QE8KCK17MaUjp6ZvKz4MevAxUj8Pf3s1ZwzioJp36GjyMrJQ1ZOHgrW7ypevnjj7hLbTV682dU4nLiC6g5ghaquUtXDAD4AMCTGfc8HMElVt6vqDgCTAAxwIKa0c9SUlA4cYRNfLPxuZvvtK99j4y6OiaJgmblqGzo8PLHE8yLPTV5eYtvvVrh7z9uJBNUQgLk7x3pjWbhLRWSBiHwiIo3j3BciMlxE8kUkf+vWrQ6EnfxenLqiuN6buTjpE18u9SukpPL+7J/9DgFf/LjB7xCIShj66kwcM41xemHqCt9icSJBWTWUhI/g+i+ALFXtAGAygDfj2De0UPVVVc1W1ezMzMyEg/VT0SWzU7O4MhElTlU9b0+38viXS/wOgSiqnaYqKHsOHfX03E4kqPUAGpueNwJQ4muhqm5T1aL2lH8B6Brrvqliz8Hj/8m9/zHV0WPv2HfY0eOlg3s/K8BnP/7idxgUIOu278eyzXv8DiOQ5q7dAQD4KewelNucSFBzALQSkWYiUhHAUABjzRuISAPT04sA/GQ8ngDgPBGpZXSOOM9YljQOHD6GrJw8PDR2UdTtdh8s+c1jxZa9jsVw1uNTHDtWuvBikCElB1VFzqcL0OuJr3HeM9OQlZOH4W/lc7iGyePj/bnSt52gVPUogFsRSiw/AfhIVReJyCgRucjY7HYRWSQi8wHcDuBaY9/tAB5BKMnNATDKWJY0Bv/zWwDAGzPWlGi3DXdmbskk8uPPOxyLwWo8wtFjhVi6aQ9uensuvl3Oe3ZBpupNTUAqbf66nWh277hSX1gmLt6MU+/7Eo/8bzH2etys5afDR617AM9eY/2x/I7Lg3UdGQelquNU9RRVbaGqjxrLHlDVscbje1W1nap2VNXeqrrEtO9rqtrS+HndiXi8tGrr8ftJo/MWx7zf3Z8scCOcYgs37Mb5z07Dl4s24ep/z3b1XGTPLHY391xhoSIrJw9DXpgedbt/f7capz2YVI06tizfErmJ85b3fii17KjLBWNZScJBr09f43cIxT7KL/mNsKi54oefdyArJw8TFm3yIyyy8KxpDBs5q7BQMb5gI56euLS4k1JWTh6ajxgX13H++dXysjdKASM+K4i4Lm+B9zNBl/f8jGlo/2HrJgJVhYg7o0Xfm1WyC3VRK9IlL84AAPzx7blYkzvYlXNTfFZscb8qdKoqLFQs3rgb93y6ADVOqIDKFTLwp3Nb4LHxS4pv7DvhqUnL0Lt1PZzWsIZjx0zUjz/vwKzV23HTOS0cP/bOA0fK3shDTFAe+OtH8y2X5365BPcObONJDAvW70L3ZrUt1/1r2io8Ou4nzHugP2pWqehJPHQcb8bHb8/BIzj9719hv8X91ylLtrhyzgv++R1u6d0Cd5/f2pXjx+o3xpfM3PFLMPPevqhfo7Kv8biJTXw2fG3xh2DV5Xv8QuvmtFe+WYVhryV2f8g8Q2ss8tdux5JNpbuIbth5AI+OC3WqfHHqyoRiIXv2HEyfm/B2rdu+H1k5eWj/0ETL5OS2F75eiXs/W4Bf9x6K2KHATeEdaqY53AEqaFPDMEHZcMcHP5ZaNuz1+BLON8uiv8H2HjqKOz+ch537Sya+eCcLEwiusegscYapd+Gr01bFdcxks23vIWTl5OHrpe58wyZ3DXzuW/R64mu/w8D7s9che/RknHLfeE/vTR0+Wohzw8ZQfhKAwtBu9kJlgrIhfGwTAKxMYHxTtJpwXR6ZhM9//AWdRk2K+7hmG3cdwJY0n+Jh4YbQFeR1r8/xORKKx16jcKnXg0Rj8dSkZcjKyUOvJ6ZgucuDfC9/5ftSVziRun97aex892orMEE5LJE5UsZ8G/nKJVIzwrQyrrzCvfV96fEK4wq875VDFI9dB44kRTfvddsPoL8xyHfbXne+CM5ft7PsjWyYlGBlcjcr2TBBBcArEZrWol06fzTXfiWEP71belzDroD14qH0dueH8/wOIW5dR08uUdosWcwyVS0PCiYoF7z1/Zrix4s3xNYs8bPFzclpyyOXsl+33Z1pGljVgIJi7todrvXIc9ug57919HiRegKnOiYoFzzwn+N1+f74Tn5M+5z9ZOmbv/8Na9sN7yjhhv/6MBjPKz7PT0gx2rb3EAY8Ow2XvjTD71AStm77AUd7+X36g/udIcZ8t9r1c8SLCcolB4x7UYlOiqeq+GRuyTdlp1GT0OURe50lyhLEG9FOSfdOIslg8+6D6Dp6MpZsSv6q4uaWFEoME1SClpbxB9TmgS8BAAePxP4tKisnDzNW/gpVRbN7rUuxbN93uHiSQjeEV6BIJSM+j1zGhYLh9L9/5XcIjhmd91PZGznAycLTQcMElaBYLt8T+bD//b9mRUxOXknVOXH8GFgZqy17Dnp2rrXb9mHb3kNY+Msuz84Zi4/zOQVKuO9XbivzC2lRZYlUxFJHCdoRw/2gZP3Gft4z01inz2Pb9x1Gverulqz52yfzMXPVdvy8/XiHnE9u6onsLOsSWG75de8hZI+eDAC4d2Br1K9RGRt3HUSuT3MOuWn+up3o2Lhmwvvf86m7sx4U+c+8YE7eyQSVoKcmpXYF6v8t2IALOpzsdxgRLdqwC1OXbsVVPZqixgkV/A7HNrc7TxYWKj6yqDpw2cvfY/Vjg1wrWmw2c9U2DH11Zollj6VgUjIb8sL0hL/s7Tt0tMSXCTfd8UHi3fndfO+wiS9RKd4d+9b3fsT6HcGqy1Vk+eY9GPz8d3hywlJ0fHhiwh1R0skbM9ZEXNf3qW+waIO7zX2qWio5UXT9nv4m5m39LDjMUkdB5ME3Tr+d9fjXUA1N7PbB7OB0nuj/zLQSz2fHMOGf2x/AdrlZLgYARv0v8mSaq37dh8HPf+fauQ8eOeb7fVU/FZom9Zu7dgfW/BpbHc2Nu2K/L3nOE1PjDSspMEElyO2yI0Fx6/uhgrg5USYy85vVTJ/h3PwAdkIQ3k9r4yxAXJZd+49gzLer0Pr+Lx09brL5bsXxAfeXvjSjVMFXJ2zafTyZ7T8cql349vdrHD+P15igKCo/ZtFMxLwAfMDb4WaL8YEY60Oe8+TUEs/HfLuqeAbaTVG+zR8rVPzp3bnIysnD0k17sP/wUWzefRAdR030rKt1kN34ZmyD9Z1S1OT9r29jG3hbaHPadjfvQbGTBMUsKyfP9959U5ZYF7Qc+XkB8m7v5XE0znHzZnheHEWBDx8txCn3jS+1vMdjX2Hl3wcho5xAVdHx4YmW1fzPf3ZaqWXp7vCx+Ic32E0aQGzvKVVFn6em2joP70ERGa5/w9tvo175Zac7tRUB4K6PY6/jZpWcirQYMQ7HCkODyK2SE9m38Jdd6PrIJFz0gjdN0scKFWsCNkmhGRMUxSWog10XbdiNjbvc+5CnkBYj0rezgx17D8WW0F/6ZiW27TuMhb/EX3JsyAvTsevAEUgcVSeD3hfZkQQlIgNEZKmIrBCRHIv1fxGRxSKyQES+EpGmpnXHRGSe8TPWiXjIPYUB7l7/lw+trxTSuUK7E01FZN/TE90fNzl/3U5MWLQJ6nHaCfQ4KBHJAPACgIEA2gK4QkTahm32I4BsVe0A4BMAT5jWHVDVTsbPRXbjodRVVqKJ1JU8kXsAqcKLKthUttemx9ZhwW6npENHC0t0aCnryi3o392c6CTRHcAKVV0FACLyAYAhAIoHXqiqeS6JmQCucuC8vtm827u6aUFzrFCx8JddqFwhAy3rVfP03Be/MD3q+kj3RYL+R+imPbxXFBh/endu8eOft+1HkzpVHD/H/V8sLPH88NFCoFLk7Z1oEQl6J4mGAMxVHtcbyyK5AYD5TmxlEckXkZkicnGknURkuLFd/tat8U137rR07jr71vdrccE/vys1yv3Zyctw3xfujpWavz7Yg22D6MWpK/0OgQzjCjYVP7aa/80NN745J+r6fwdwDigzJxKUVQOkZUoVkasAZAN40rS4iapmA/g9gGdFpIXVvqr6qqpmq2p2Zmam3Zht2ZLGV1CPf1m6dtrm3Qfx7OTleGdmcKpNUMive1kGKp398HP08YHLHZi5IND3oBC6Ympset4IQKm6LSLSD8BIABepavFfjapuMH6vAjAVQGcHYnLVrBhK66STyT8dH5vk1k35mau2JbzvgjS98tq1/4jfIRDZ4kSCmgOglYg0E5GKAIYCKNEbT0Q6A3gFoeS0xbS8lohUMh7XBXAmTPeuKNiKrqbuM7V732aURnJSPIVGrQrcBqGMkB9GuNzkSs5a51Hl8iIF63fhi3nu1oC0y3aCUtWjAG4FMAHATwA+UtVFIjJKRIp65T0JoBqAj8O6k7cBkC8i8wF8DSBXVQOdoI6kcY+wcC9NXYmlm/aU6ISQV7ART3y5BD9YzPK5Y99h5K/Zjrlrt8c1MPWzH2Kfq+bt79eWWuZ1t9ugSJYyVRTS6wlv7ksV8WowsB2OlDpS1XEAxoUte8D0uF+E/WYAaO9EDF55JsXngYqXVWmbF6euxItTV5Yoi2Q1K+g3d5+LpnWqlnmOeEr1vDJtFe4d1KbEsmTpxVewfhfaN6rhdxiUJpLh74KVJOIwZclm9oqKQ1H302MR7kuFFyeNZMqSLWVvlAIu/D/nvtFygC4ViWU6mqBigopDqtaBc0v+2lAz35w1kf9AsnLyIiaw5Zv34KM56yzXleWSF6fjvVnJ16vw4BFnJp777MdgTuFN3jN/wVNVvDF9dcyll/zGBBWjy1+e4XcISeeGN0JjMMrq4BCpvl//Z6bhb58uiPu8qoofft6JEZ+HOgkk07XE+7N/xo59h20d4+CRY3EViCV/RPpi5jRzL/AJizbhof8uxmkPTvDk3HYxQcXg6LFCzFlT+qY/RRdrxeuiTgwHjxwrbpqy00Q1c1XJK7ZkaGsv8vB/F6PzI5NsHePWGCZwJP/d+eE8T87zmmkw7q4DyTX0gPNBxWDF1r1+h5C0voihqantA8e/zf3x7Oa4d1AbdBmd+If06zHWPUtVk39Kj3t2yW7s/A14/gr3h30eMrVQxFPpPAh4BRWDAc9+63cISevPcX5L/Hjueqzdtg87bQwynbi45KSG6drNnMissFCxMcrMyEHEK6gy7EuSm4mpYvu+wzH37otVMjXx2WX3/hV5S1VdLRVkNvKLhXh/dnJ1HOIVVBnaJcnNRCIA2HeYX6iSyeKN8U9MmIj/zt/gWnJyM78yQVFKW7JpN56csNTvMOK28JfE6geO/l/6VtpPRl5d3btRgqyIm/8GJqgorMr1UHK5/KXv/Q4hISu2WHfM2bHvMLJy8vDQ2EWW6ycu3mS5nIJp1a/7AEQeapHumKCiyB1femoJSi57kvQeYqTOJX2NebjemLHGcj0LSCSX29//EaP/txin3De+7I3TEBNUFMlcIoRS03ZTJ4hrXptdYt2ho85UoSBvjQn4pIFl4T0oHwx6jl3LyV9HjxVi464D+HKhdbPdtGVb8d3yX4ufZ4+e7FVoRJ5ggorAq941RJHkr92Bno9NwU3vzMWYb1dZdiG/6t+zih/vibFyB5GT2EnCY8lWDoRS08RFxwccj877KWIJpLlr2RRNqYkJykLHhyf6HQIRXouxZNOlL32fNNWpKfXwHpSHzn3S21ktiZxw8QvT/Q6ByHFMUCb3fVGANdv2+x0GUdwijZsiSmZMUCbvzEyuOlVERKmMCcqQlZPndwhERGTCBAVgPwtsEhEFjiMJSkQGiMhSEVkhIjkW6yuJyIfG+lkikmVad6+xfKmInO9EPPGasIj1y4iIgsZ2ghKRDAAvABgIoC2AK0SkbdhmNwDYoaotATwD4HFj37YAhgJoB2AAgBeN43nqzg/ne31KIiIqgxMTFnYHsEJVVwGAiHwAYAiAxaZthgB4yHj8CYD/k9AsXUMAfKCqhwCsFpEVxvFcK0F98MgxtL7/S7cOT0REDnGiia8hgHWm5+uNZZbbqOpRALsA1IlxXwCAiAwXkXwRyd+6dWvCwVau4PkFGhERJcCJBGU1jji8OlOkbWLZN7RQ9VVVzVbV7MzMzDhDLOkfl3cEAHRvVhut61e3dSwionS23aJGpFOcaOJbD6Cx6XkjABsibLNeRMoDqAFge4z7Ou6yro1wWddGxc/ZxZyIKDGHXJxs0YkrqDkAWolIMxGpiFCnh7Fh24wFMMx4fBmAKaqqxvKhRi+/ZgBaAZgNj40a0s7rUxIRpYTy5dwrxmc7QRn3lG4FMAHATwA+UtVFIjJKRC4yNvs3gDpGJ4i/AMgx9l0E4COEOlR8CeAWVfV81rWrezT1+pRERCnh4BH3PrJF3ZzMwyXZ2dman5/v6DHZzEdElJg1uYNt7S8ic1U1O3w5K0kQJYlhPXmlT+mFCcrw6tVd/Q6BKKLqlcvj4SGn+R0GkaeYoAx9WtfzOwSiiAoe8qUKGJGvmKAM5TP4UlDyuvaMLL9DIHIcP5VN7N7oI3Lb4A4NLJff2KsZ/nfbWR5HQ+QuJqgwTFIUNO//oUfx47vOO9Vym0a1qqBNgxO9ConIE0xQFppnVvU7BKJinZvULH7coEbliNtluDhgksgPTFAWJv75bL9DIId0bFTD7xBsMxc4LmvUfqQmQKJkxARloXxGObRvmPwfbATUj3LFkYysOvPMGtG3+PEzv+3kZThErmKCiuDTm8/wO4S09sUtZ2LKX8+xfZwnLuvoQDT+Kavjw/f39sFJJx5PwhXL80+aUgffzRHwD91/zTOr2T5GjRMqOBCJP96+oTtOs7iSf/3abgCAIZ1ORoMaJ3gdFpFn+CkcBbvteq9utUoAgPAakbf3aZnwMU86sZKtmPxyRou6lst7t66HpaMH4LmhnT2OiFLNd/f0tn2MOlUrOhCJNSaoKKy+vZI73riuG9bkDsb9F7QBADSrG+pJmd20Fga1r4/b+7ZK+Ni1qyZngorWK69Sec4MnSoGtKvvy3nvv6AtGtWq4su5Y8UEVYZeray/xVLIW9d3t7X/fYPb4KyWdXHuqaFSU0M6NcSa3MGoWSX0reyTm8/Ai1d2ZaWPONj9PyFv/fP3nXFJl4aen7duNWeufEQCPB9UqvtL/1P8DiGwRgxqjbNPybR1jCGdGuKdG093KCJg5d8HOXYsP9kpXXT2KZm4tXfiTaLkrQoZ5Tz5Ivzt33oj95L2eOnKLgCOtxD1bF7H1nFdzE9MUGXp3KSW3yEE1iVdGsW9z5WnN0n4fBUyyv5LSJXBqjec1czW/nfyi1VS+U3nRpg9si+WPDLAtXM0rl0FQ7s3wcD2DbDq74PQwuiE1K/tSbaO6+ZfHBMUJWT2iL7FHRruPt+6/I4Vc6mea8/IiquZYcSgNlHX/+ncFpbLkzFlNa5t795AqiTqdFKvemVUrpCBfm3sJYxYlDO9P66zWWi4HJv4/HXXefw2ajb87OaoZxp7M7Rb45j3Nb+ZH7qoXVzt10O7Rb/6qlXFvd5EXvn05p6O1YP81zWlJiilJNClac2yN4rRpTG0cpSz+WWGTXw+u4ZTGZQQfiVjLsVTliqVMtCw5gl49nfxVzw4oWL087j5h+KVLg42Kfe32XRD7sm7PfIQlqa1nasF2jyzKv7a/xSMvti9yS7ZxOezEyv7M9izdf3qvpw3XlUrlY952woZ5TA9pw8u7ux8r6VI5anOaGHvJrCX3OwRRcFw/wVt0e7kyENYBrWvj49v6unY+W7r2wpX9Wjq2PHCNanjXld1JqgAu61P4mN/0lG7sARVVAX8wo4n+xFOILx8VRe/Q6AwZXWAERF0y6rtUTT23Te4rWvHZoIKsCBWpu7Tup7l8iBc7WUYVx83Gh8A3ZuF/sg14h6pr2U9//9fyNpDF7bFgxe69+Eejx/u75/wvm1dnIfMVoISkdoiMklElhu/SzWgi0gnEfleRBaJyAIR+Z1p3RsislpE5hk/gS3FPGdkP79DCIQbe1l/+3v7BufGMiWq6B5VnWrJWTnCDS04t1mgDGp/vGrEtWc2w3Vn2htOUJYBp8VWpaKmjZqVdjtZRD22zf1zAHylqq0AfGU8D7cfwDWq2g7AAADPioi5m8rdqtrJ+JlnMx7XZFY//qGXzoN3I9WHy6xeCQUPnYe595VM5A1rOlvM9InLOsS9Tzrf1RER/MaF+32UmIcvir2zQtGAWjtaxFhw2c0kY4fdBDUEwJvG4zcBXBy+gaouU9XlxuMNALYAsFd+wCdz7+uH687Mws0Rxts46RLjQ8WLMRFOqV65Qqmrly//3MvRc/w227pL+7Cex28CX9qlIZpnVsVVp4eWlY9hgG8q+0Ov5n6HQAbzF92yxNP5yAlB7ExkN0GdpKobAcD4bX2DwiAi3QFUBLDStPhRo+nvGRGJ+L8nIsNFJF9E8rdu3Woz7MTUqVYJD17YDhUyyrk+xmTE4FBX7mS/ye1VUdNOpmnR651YGVP+em7xYFc328iTQduT0/vfn6xOruntZJs5A1t7er5YlJmgRGSyiCy0+BkSz4lEpAGAtwFcp/eJXa4AABcgSURBVKqFxuJ7AbQG0A1AbQD3RNpfVV9V1WxVzc7M9P8CrLvLvWyKqjSEF0nt2jT4pZeKekr//vQmgZhXK1m6brMwcWrr0Ci+2RFa1quOvNvPwnNDvbk13yaBL3KjhrRzIZLjyryGVNWIvQNEZLOINFDVjUYC2hJhuxMB5AG4T1Vnmo690Xh4SEReB3BXXNH7yKkP3scvbY97Pi2Iadtpd/dGkzpVsGzzHpz3zDRHzh+PM1vG1gQwZ2Q/5C3YiGFhA5wv7uRed+9o40qSRaTmSyeULyc4WpjO/Rn9d0sCBXzbnVwDTRIse3VWy/i+8FRIYMaAKhXdbYa0+yk7FsAw4/EwAP8J30BEKgL4HMBbqvpx2LoGxm9B6P7VQpvxeKasqgaxuO7MLPzOonxPpKnOiwbEnXJSdbz3B+97zb17Y4+YtqtbrVKJ5FR0H+2+C9zrUtuyjJvBL1/V1bVzJ4Ov7zrX7xDSXqL3k6tULI+W9eKfXTqW4sp2uX0GuwkqF0B/EVkOoL/xHCKSLSJjjG1+C+BsANdadCd/V0QKABQAqAtgtM14ksr9xgC3+Q+eV3xF9odezUpNdb4md3Cp+mxt6nt7X2HWiL4J7ztmWDbW5A4ubra0a9KdZ5daVlYvpFi72/qpemX3vo02rl2lVA9L8laiBXwzygkm/8X6S2s0fT3oYOV267mtvwhV3Qag1CeXquYDuNF4/A6AdyLs38fO+ZNd0YdqjRMqYNnogVj4y67A3tA/6URvb9hGE94TqooDV7NBcI7NubXKUqdapbialClYBndogLwFG0ssyxnYGvsOHUVGOcGzk5eXWGdnaptYBTpBkbPimWLeiSbGZFUzrGp5qwSaP4LIi84cv+vWBI1qVcGVY2ZZrs+9pD36tjkJxwoVN7w5B4s27C6xftztvdCw5gmoUF7Q9oEJrsebKp7+bUfbx3j2d51KJaibzjk+5MWcoJpnVk3o/fTt33qj1xNfx7z9+S5PV88E5RO7M57GU0E81b2Y5veX4nVGizqWnSau6N4YQ7sf/9add3svLN20B6u27sVj45fgpnNalOiyvvqxQdh94Ch++8r3WLp5j2fxJ6OLHKgHGU8nhnG3Jzb+MN55yNzuJMEEZcNvOjfE5z/+ktC+f+6XPIVg5z94nt8hROV0tYpUJyJY8fdByMrJK1625JEBll96Tq1fHafWr46B7UvXhRQR1KhSAROMe4IrtuxBv6e9712aDMKHizihVhXr8kS/P71JynyB9X+QShK7o2/iScaNN6xbatio0+WWNbmD0bN58Ea+J5PXrs3G6c1qI/++fo58oLWsVx1rcgdj4cPnOxAdWTEnpfAmvAFGc1ukaWeSEa+gbDg5wW/un//pDIcjcc8lXYJbx+21a7th655DMW/fsOYJ+GXnARcjSi59Wp+EPq2d7+lVrVJ5zB7ZF90f/crxYycjJ2t3TrzzHGzcdQB/H/dTqXFVd/Rrhekrfo0440AySp6v8QGU6GDdzg7Omuq2py63f3PXLSdUzIhrsrR6J7LKuVfqVa+MpaMH4Px2yVNL0i3hA9btyKxeCR0a1cQHw3uiV6uSvT7bNDgRBQ+fH6get3YxQXls3gOJz7vih2QpExSLWmG9/8hdlcpn4JWrs3H3+af6HYqvgthEHs31MU4BMtCDsYVMUDZFG7vS0aL2VngXafLOU5d3xEMBmSAundzSu6UvlU+CIN76e0EQbcC4uck/3h5/iWCCsilaBeA/90vueaN+52JtOD/UqloR17o8QRxZ69EsPTu0fPTHnn6HELdojSYXdnCvnqYVJiibmka5B9I+7NtTMn3gr8kdjMcTmByQyEq5coJv/9bb7zA8l4zdvS+MMGbruaGd0Lt1veIhMqruFx9mgrIp2kC18NpzXkx0SBRUjWtXwcc3Jd8VRaJmj0y8fqWfwmfhbVK7Cn4aNQBDOoWa9/7Qqzku69oIt/Z2fywnE5SHsupW9TsEAjD+Dmdn+aXYdcuqjRWPDvQ7DE/Uq54avemev6JzidJqVSuVxz8u74gaEQYKO4kJymXT7g41a5hrZpG/EpmYzW12Bn0nm/IZ5TBnZGpXVn/80vZ+h+CY+j52W+dAXZcUJaQmdapgzsh+qFM1eXrvBXnsU6ryokdUkGRWr4Rxt/fCy9+sxN8GnIp9h47h1PrV8e6stRj5edJMC2cpZ2Bry3neksnA0+pj/MJNAID6NfxLULyCcsArV5cuVnrXecd78GVWr1TmfEWJcGtqjku7NnLluBSZF2NKgqbtySfi+Ss6o1GtKji1fnUAwJWnN8WKRweia9PkGcxuNqTTySnRWpJ7STA6SPEKygHnt6uPD4b3wNBXi2ez96TW3ts3dEfX0ZNdPw+5L4XGQ9tWPqMcPr35DOzYdxiTftqMv32ywO+QynT9mc1wW5+WqJVELSXR1KhSARP+fDYa1fK3EDMTlEN6mAqXNq7tzX+qE0mwUa0TsH7H8fp0yTiwMBWckITdkd1Wq2pF/Da7MVpkVsOlL83wO5yIvrjlTHRqXNPvMBxXdFXrJzbxOWj1Y4PwwAVt8b/bvOklFu+3bqsxW49dUvJm7kMXtbMTEiUolUpKOa1r01ronlXb7zAs3d63VUomp6BggnKQiOD6s5oFtvbWjb2al1oWXnCyc5r8sdWtlhpNMeniwz/28DuEUpaOHoA7k2het2TEBJXEKsbZxNe/jXVl6c9M03+kyzf5fhFeCz+MGBS5XBaFiAjW5A5G7YDc41mTOxiVymekzd+LX3gPKonFU0ZlcIcGpbqLzsjpAwDo0qQWxlyTjdNSaKKzsgTpc2X42cnf68srE+88G+MLNuL+/yzyLYaZ9yZnhYhkZOsKSkRqi8gkEVlu/LbsGyoix0RknvEz1rS8mYjMMvb/UESC8fUoBd1sdH0dffFpAIDcS9qXmHCxX9uTfB3vQBSLutUq4eqeWbjTp0LM8x7oz78TD9lt4ssB8JWqtgLwlfHcygFV7WT8XGRa/jiAZ4z9dwC4wWY8ZGKeEr3dyaExU1f1aIo1uYMxtHtyDySk9HZbn5a4rU/Lsjd00P/9vjOny/GY3QQ1BMCbxuM3AVwc644SarztA+CTRPansr19Q/fix2wrL+kv/dN7Er1kV66c4K/nnYopfz3Hs3P2bxuc+5bpwm6COklVNwKA8btehO0qi0i+iMwUkaIkVAfATlU9ajxfD6Ch9e6AiAw3jpG/detWm2GnnhMtJhnzYrBwssqsXimpyk+RteaZ1fDdPe5P47HkkQGoVJ5j1bxWZicJEZkMwKoOy8g4ztNEVTeISHMAU0SkAMBui+0iTjCiqq8CeBUAsrOz3Z+IJMmc1aouxhVsKn7ewGgnnz2irytlloiColGtKpj/wHm45KXpWLl1n+PHv7pH06Sc1ykVlJmgVDVi2WER2SwiDVR1o4g0ALAlwjE2GL9XichUAJ0BfAqgpoiUN66iGgHYkMC/gRCaVtucoIoG5dbzsRIxkVdqVKmAr/56LlQV01dsw1X/nuXYsUcN4eB1v9htAxoLYJjxeBiA/4RvICK1RKSS8bgugDMBLNbQdIxfA7gs2v4Um2qVyuOW3se7Kyf7dPNeyAjAlWWLTM4R5iQRwVmt6mJGTh9cZMwMO7Rb4jNZr3h0IO/f+shugsoF0F9ElgPobzyHiGSLyBhjmzYA8kVkPkIJKVdVFxvr7gHwFxFZgdA9qX/bjCet3X3+8QGfNT2YTCzZ3X9BW79DQDNOYumKk2uegOev6Iylowcg99IOWPLIANSuWtHyXm0kqx8bxPu4PrM1UFdVtwEoNWpNVfMB3Gg8ngHAcvYuVV0FoLvVOopPOeNb3nNDO+GOD+ahYU1/qxAnA7erEgzu0AB5CzZG3SZ8em1yVlHHhsoVMvDD/f2Ll//w8w7s3H8YzepWQ+9/TC2xzyMXn4ZLOjfklVMAsJJEkvv4pp54Z+ba4gnvhnRqiCGdInaGJA89cWmHMhPUZZx7yxddmhyvKfDABW0xfuFGXHl6U/Q+tZ4nU5lTbJigkly3rNroFtBKz+muaqWy/7zYhOS/689qhuvPauZ3GGSBfx1EPuI9KKLImKAobfEOA1GwMUEREVEgMUERueCK7omPvSGiECYoIhcEZWI9omTGBEVpq0tTy+nLiCggmKAobblZALRCDN3Hq1ZkAVKiaJigiBzy5GUdih/fdE7Z07izkC9RdByoS+SQy7Mb47SGNXDiCRViujprwKnDiaLiFRRRHDo0qhF1fZsGJ8ZcB/G2Pq2cCIkoZTFBUVp77w+nx7V90RQO4SqWj/9PqUIGhwoTRcMERWntjBZ149r+ki7WxV2H9WzqRDhEZMIERRSHSOObcga2iftYjWpVsRsOUUpjgiKKUdsGJ1ouXzZ6YEKz89ZnJwmiqJigKO2VjzG59G6dCQAoeOi8EssTuf9ERGXjXxalva/vOhfDz25enGha1bOe5bZfm5MAANUrH5/Q7sUru0Q9dt/W9RyKkij9MEFR2mtcuwpGDGqDZaMH4vXruuG9P/TAy1d1jbpPVp3Q/aPep0ZPQJ0a1yzxvOjqK9au6ETpjAN1iUyKEs6A0+qXWmeu/DD17t4JHb9CRjl8enNPNK3DiQqJysIERRTBNT2bYuf+Ixg7fwMAZ656KlfIQNemtW0fhygdMEERRTBqyGkAgG7NamP55j0JHaOcqQPGtWdkOREWUdqwdQ9KRGqLyCQRWW78LjV/gYj0FpF5pp+DInKxse4NEVltWtfJTjxEbri6R9PiZBWvod2OT1z40EXtnAqJKC3Y7SSRA+ArVW0F4CvjeQmq+rWqdlLVTgD6ANgPYKJpk7uL1qvqPJvxEAVKJRen9CBKdXYT1BAAbxqP3wRwcRnbXwZgvKrut3leIiJKcXYT1EmquhEAjN9lDfoYCuD9sGWPisgCEXlGRCpF2lFEhotIvojkb9261V7URB6pUiEDPZrXxuvXdfM7FKKkI6oafQORyQBK97kFRgJ4U1VrmrbdoaqW82iLSAMACwCcrKpHTMs2AagI4FUAK1V1VFlBZ2dna35+flmbERFREhCRuaqaHb68zF58qtovykE3i0gDVd1oJJstUQ71WwCfFyUn49gbjYeHROR1AHeVFQ8REaUHu018YwEMMx4PA/CfKNtegbDmPSOpQUQEoftXC23GQ0REKcJugsoF0F9ElgPobzyHiGSLyJiijUQkC0BjAN+E7f+uiBQAKABQF8Bom/EQEVGKsDVQV1W3AehrsTwfwI2m52sANLTYro+d8xMRUepisVgiIgokJigiIgokJigiIgokJigiIgokJigiIgqkMitJBJGIbAWw1uZh6gL41YFw3MY4nZUMcSZDjADjdFo6x9lUVTPDFyZlgnKCiORbldYIGsbprGSIMxliBBin0xhnaWziIyKiQGKCIiKiQErnBPWq3wHEiHE6KxniTIYYAcbpNMYZJm3vQRERUbCl8xUUEREFGBMUEREFUsolKBEZICJLRWSFiORYrK8kIh8a62cZU4EUrbvXWL5URM73Oc6/iMhiEVkgIl+JSFPTumMiMs/4GetznNeKyFZTPDea1g0TkeXGz7DwfT2O8xlTjMtEZKdpnZev52siskVELOc+k5DnjX/HAhHpYlrnyesZQ4xXGrEtEJEZItLRtG6NiBQYr6Wr017HEOe5IrLL9H/7gGld1PeLx3HebYpxofF+rG2s8/L1bCwiX4vITyKySETusNjG2/enqqbMD4AMACsBNEdoGvn5ANqGbfMnAC8bj4cC+NB43NbYvhKAZsZxMnyMszeAKsbjm4viNJ7vDdDreS2A/7PYtzaAVcbvWsbjWn7FGbb9bQBe8/r1NM51NoAuABZGWD8IwHgAAqAHgFk+vJ5lxXhG0bkBDCyK0Xi+BkDdgLyW5wL4n933i9txhm17IYApPr2eDQB0MR5XB7DM4u/d0/dnql1BdQewQlVXqephAB8AGBK2zRAAbxqPPwHQV0TEWP6Bqh5S1dUAVhjH8yVOVf1aVfcbT2cCaORSLNHE8npGcj6ASaq6XVV3AJgEYEBA4iw1u7NXVHUagO1RNhkC4C0NmQmgpoRmnvbs9SwrRlWdYcQA+PfejOW1jMTO+zpuccbp53tzo6r+YDzeA+AnlJ7Hz9P3Z6olqIYA1pmer0fpF7h4G1U9CmAXgDox7utlnGY3IPStpUhlEckXkZkicrEbARpijfNS43L/ExFpHOe+Toj5XEZTaTMAU0yLvXo9YxHp3+Ll6xmP8PemApgoInNFZLhPMZn1FJH5IjJeRNoZywL5WopIFYQ+1D81Lfbl9ZTQrY/OAGaFrfL0/WlrRt0AEotl4f3oI20Ty75OiflcInIVgGwA55gWN1HVDSLSHMAUESlQ1ZU+xflfAO+r6iERuQmhq9M+Me7rlHjONRTAJ6p6zLTMq9czFkF4f8ZERHojlKDOMi0+03gt6wGYJCJLjCsIP/yAUI23vSIyCMAXAFohgK+l4UIA01XVfLXl+espItUQSpJ/VtXd4astdnHt/ZlqV1DrATQ2PW8EYEOkbUSkPIAaCF1+x7Kvl3FCRPoBGAngIlU9VLRcVTcYv1cBmIrQNx1f4lTVbabY/gWga6z7ehmnyVCENaF4+HrGItK/xcvXs0wi0gHAGABDVHVb0XLTa7kFwOdwr5m8TKq6W1X3Go/HAaggInURsNfSJNp705PXU0QqIJSc3lXVzyw28fb96cXNN69+ELoiXIVQE07Rzc92YdvcgpKdJD4yHrdDyU4Sq+BeJ4lY4uyM0I3cVmHLawGoZDyuC2A5XLrBG2OcDUyPfwNgph6/abraiLeW8bi2X3Ea252K0E1n8eP1NJ0zC5Fv7A9GyZvQs71+PWOIsQlC92jPCFteFUB10+MZAAb4+FrWL/q/RuiD/WfjdY3p/eJVnMb6oi/KVf16PY3X5i0Az0bZxtP3p2v/IX79INTLZBlCH+4jjWWjELoKAYDKAD42/sBmA2hu2neksd9SAAN9jnMygM0A5hk/Y43lZwAoMP6oCgDc4HOcjwFYZMTzNYDWpn2vN17nFQCu8zNO4/lDAHLD9vP69XwfwEYARxD61nkDgJsA3GSsFwAvGP+OAgDZXr+eMcQ4BsAO03sz31je3Hgd5xvviZE+v5a3mt6bM2FKqFbvF7/iNLa5FqFOWub9vH49z0KoWW6B6f92kJ/vT5Y6IiKiQEq1e1BERJQimKCIiCiQmKCIiCiQmKCIiCiQmKCIiCiQmKCIHCIidUxVqTeJyC+m5zNcOmdnERkTZX2miHzpxrmJ3JZqpY6IfKOhigqdAEBEHkKoSvo/XD7tCACjo8S0VUQ2isiZqjrd5ViIHMUrKCIPiMhe4/e5IvKNiHwkoXmpco35lWYb8/60MLbLFJFPRWSO8XOmxTGrA+igqvON5+eYrth+NNYDoRp0V3r0TyVyDBMUkfc6ArgDQHsAVwM4RVW7I1Sh4TZjm+cAPKOq3QBcaqwLlw3APAneXQBuUdVOAHoBOGAszzeeEyUVNvEReW+Oqm4EABFZCWCisbwAoYkqAaAfgLahqcoAACeKSHUNzdNTpAGArabn0wE8LSLvAvhMVdcby7cAONn5fwaRu5igiLx3yPS40PS8EMf/JssB6KmqBxDZAYRqSwIAVDVXRPIQqp82U0T6qeoSY5toxyEKJDbxEQXTRISKnQIARKSTxTY/AWhp2qaFqhao6uMINeu1NladgpJNgURJgQmKKJhuB5BtzFS8GKGK0iUYV0c1TJ0h/iwiC0VkPkJXTEUz3fYGkOdF0EROYjVzoiQmIncC2KOq0cZCTUNoYsEd3kVGZB+voIiS20soeU+rBBHJBPA0kxMlI15BERFRIPEKioiIAokJioiIAokJioiIAokJioiIAokJioiIAun/Adh8B+2+RUK1AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "violin = read_wave('92002__jcveliz__violin-origional.wav')\n", "\n", "start = 0.11\n", "violin = violin.segment(start=start)\n", "violin.shift(-start)\n", "\n", "violin.truncate(len(response))\n", "violin.normalize()\n", "violin.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it sounds like before transformation:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "violin.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we compute the DFT of the violin recording." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = violin.make_spectrum()\n", "spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I trimmed the violin recording to the same length as the impulse response:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(44554, 44554)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(spectrum.hs), len(transfer.hs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We we can multiply in the frequency domain and the transform back to the time domain." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "output = (spectrum * transfer).make_wave()\n", "output.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a comparison of the original and transformed recordings:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "violin.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "output.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = output.make_spectrum()\n", "spectrum.plot()\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it sounds like:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the beginning of the output, you might notice an extra note that has wrapped around from the end. The reason is that multiplication in the frequency domain corresponds to *circular* convolution, which assumes that the signal is periodic. When the signal is not periodic, we can avoid wrap-around by padding the signal with zeros." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convolution\n", "--\n", "\n", "To understand how that worked, you can think about the input signal as a series of impulses, and the output as the sum of shifted, scaled versions of the impulse response." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def shifted_scaled(wave, shift, factor):\n", " \"\"\"Make a shifted, scaled copy of a wave.\n", " \n", " wave: Wave\n", " shift: time shift, float\n", " factor: multiplier, float\n", " \"\"\"\n", " res = wave.copy()\n", " res.shift(shift)\n", " res.scale(factor)\n", " return res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it would sound like if we fired a big gun followed by a small gun:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dt = 1\n", "factor = 0.5\n", "\n", "response2 = response + shifted_scaled(response, dt, factor)\n", "response2.plot()\n", "decorate(xlabel='Time (s)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Two gunshots:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response2.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adding up shifted, scaled copies of the impulse response doesn't always sounds like gunshots. If there are enough of them, close enough together, it sounds like a wave.\n", "\n", "Here's what it sounds like if we fire 220 guns at a rate of 441 gunshots per second:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "dt = 1 / 441\n", "total = 0\n", "for k in range(220):\n", " total += shifted_scaled(response, k*dt, 1.0)\n", "total.normalize()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "total.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it sounds like:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To me it sounds a bit like a car horn in a garage.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can do the same thing with an arbitrary input signal." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from thinkdsp import SawtoothSignal\n", "\n", "signal = SawtoothSignal(freq=441)\n", "wave = signal.make_wave(duration=0.2, framerate=response.framerate)\n", "wave.plot()\n", "decorate(xlabel='Time (s)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what we get if we use the wave to generate shifted, scaled versions of the impulse response:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "total = 0\n", "for t, y in zip(wave.ts, wave.ys):\n", " total += shifted_scaled(response, t, y)\n", "total.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a simulation of what the wave would sound like if it was recorded in the room where the gunshot was recorded:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "total.plot()\n", "decorate(xlabel='Time (s)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it sounds like:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a comparison of the spectrum before and after convolution:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "high = 5000\n", "wave.make_spectrum().plot(high=high, color='0.7')\n", "\n", "segment = total.segment(duration=0.2)\n", "segment.make_spectrum().plot(high=high)\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we recognize this operation as convolution, we can compute it using the convolve method:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "convolved = wave.convolve(response)\n", "convolved.normalize()\n", "convolved.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can do the same thing with the violin recording:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "convolved2 = violin.convolve(response)\n", "convolved2.normalize()\n", "convolved2.make_audio()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "convolved2.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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 }