{ "metadata": { "name": "", "signature": "sha256:023add2d2aa2245a5bf6ba5baa1a60f97fb23ab7bafc6dab789b4a54128b3e21" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#### Stack of tones\n", "* list of \n", " * list of freqs\n", " * duration\n", " " ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "from IPython.html.widgets import interactive\n", "from IPython.display import Audio, display" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: pylab import has clobbered these variables: ['interactive']\n", "`%matplotlib` prevents importing * from pylab and numpy\n" ] } ], "prompt_number": 94 }, { "cell_type": "code", "collapsed": false, "input": [ "def make20msramp(fs):\n", " tr = 0.02\n", " fr = 1./tr\n", " ne = int(tr*fs)\n", " te = np.arange(ne)/fs\n", " env = (1-np.cos(np.pi*te*fr))*0.5\n", " return env\n", "\n", "# Plotting function\n", "def plot_stack(s,type='lin'):\n", " Nstack = len(s)\n", " t = 0. # time\n", " plt.subplot(1,1,1)\n", " for i in range(Nstack):\n", " stack = s[i]\n", " freqs = stack[0]\n", " d = stack[1] \n", " for f in freqs:\n", " plt.plot([t,t+d],[f,f],'b')\n", " t+=d\n", " plt.xlabel('time (s)')\n", " plt.ylabel('freq (Hz)')\n", " if (type == 'log'):\n", " plt.yscale('log')\n", " plt.show()\n", " \n", "# Playing function\n", "def sound_from_stack(s,fs=44100.):\n", " env = make20msramp(fs)\n", " n_env = len(env)\n", " Nstacks = len(s)\n", " t = 0. # time\n", " # get total duration\n", " dtot = sum([x[1] for x in s])\n", " # create empty sound\n", " N = int(fs*dtot)+1\n", " x = np.zeros(N)\n", " # loop over stacks\n", " for i in range(Nstacks):\n", " stack = s[i]\n", " freqs = stack[0]\n", " d = stack[1] \n", " n_stack = int(fs*d)\n", " i_start = int(fs*t)+1\n", " i_end = i_start + n_stack\n", " # loop over frequencies\n", " for f in freqs: \n", " tf = np.arange(n_stack)/fs\n", " xf = np.cos(2.*np.pi*f*tf)\n", " x[i_start:i_end] += xf\n", " x[i_start:i_start+n_env] *= env\n", " x[i_end-n_env:i_end] *= flipud(env)\n", " t+=d\n", " return x\n", "\n", "\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 293 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Streaming vs melody" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "f1 = 200.\n", "f3 = 240.\n", "f5 = 280.\n", "f2 = 400.\n", "f4 = 360.\n", "f6 = 320.\n", "d = 0.1\n", "melody_block = [[[f1], d],\n", " [[f2],d],\n", " [[f3],d],\n", " [[f4],d],\n", " [[f5],d],\n", " [[f6],d]]\n", " \n", "\n", "T = 10.\n", "nrep = int(T/4./d)\n", "s = []\n", "for i in range(nrep):\n", " s = s+melody_block\n", " \n", "plot_stack(s,type='lin')\n", "y = sound_from_stack(s,fs=fs)\n", "display(Audio(data=y, rate=fs,autoplay=True))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRqmpqfG//sMf/mBiY2NNa2ur+e9//2suv/xy89JLLxljjHnggQfMc889Z4wxJjU11VRXVxtjjCkv\nLzepqanWctavX29+9rOf+V8nJiaaxsZGY4wxx48f97+/fft2k5OT08PfEuiecKfLCXCa6WLP6vTp\n09W/f3/1799fV1xxhf+xqomJidq/f78+//xz7dq1q8NxCp/PZ83n4MGDuvrqq/2vp0yZory8POXk\n5PjvmClJV199tWpra7/htwK+GcoB6MJ3v/td/+9hYWH+12FhYWpra1N7e7sGDx6svXv3djmvrxfR\nCy+8oIqKCr3xxhuaMGGC3nvvPQ0ZMkTGmJB/xgK+/TjmgEvewIED9dlnn3V73NkV/cCBAxUTE6PX\nXnvN//7+/fut6a+77jr/cxSkL49TTJo0SUuXLtVVV13lfwxmU1OTrrvuuov5KkCPoRxwyRs6dKim\nTJmixMRE5efnd3g62rlPSjv397Ov161bp6KiIiUnJyshIUElJSXWcqZMmdLhYUWPPPKIxo0bp8TE\nRE2ZMsX/mMmKigpNmzYtKN8VuFCcygr0otTUVK1bt67DsYdzcSorQgFbDkAveuihh/Tiiy8G/Hz/\n/v2KjY2lGOA4thwAABa2HAAAFsoBAGChHAAAFsoBAGChHAAAFsoBAGD5f9v/sMtkjvuoAAAAAElF\nTkSuQmCC\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 239 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Breaking harmony: creating object" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Isolation of a frequency component based on mistuning\n", "\n", "f0 = 300.\n", "d = 0.5\n", "\n", "indices = [1.,2.,4.,5.,6.,7.] # no third\n", "i_miss=3.\n", "freqs = [i*f0 for i in indices]\n", "\n", "blank = [ [ [], d] ]\n", "s_tone600 = [[ [i_miss*f0], d*4] ]\n", "s_harm = [ [freqs+[i_miss*f0], d*4] ]\n", "\n", "s= blank+blank+s_harm+blank+blank\n", "for i in range(10):\n", " s_inharm = [ [ freqs+[(i_miss+0.02*i)*f0] , d] ]\n", " s += s_inharm+blank\n", "\n", "plot_stack(s,type='lin')\n", "y = sound_from_stack(s,fs=fs)\n", "display(Audio(data=y, rate=fs,autoplay=True))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nQmCC\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 267 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Informational masking in chords " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# inharmonic -> Chord tone\n", "k = 0.7\n", "fb = 100.\n", "d= 0.2\n", "d_blank = 0.1\n", "i= 3.\n", "\n", "disp=1\n", "\n", "fb = 200\n", "n_tones = 5\n", "intervals = np.random.rand(n_tones)*4+6 # in semitones\n", "intervals_f = 2.**(intervals/12.)\n", "factors = np.cumprod(intervals_f)\n", "freqs = list( factors*fb)\n", "\n", "i = np.random.randint(n_tones)\n", "s_p = [ [freqs, d],[ [], d_blank ], [[freqs[i]], d] ]\n", "\n", "i = np.random.randint(n_tones-1)\n", "f = np.exp(0.5*(np.log(freqs[i]) + np.log(freqs[i+1])) )\n", "s_a = [ [freqs, d],[ [], d_blank ], [[f], d] ]\n", "\n", "i = np.random.randint(n_tones)\n", "si = np.sign(np.random.rand()-0.5)\n", "s_d = [ [freqs, d],[ [], d_blank ], [[freqs[i]*(1+si*0.1)], d] ]\n", "\n", "if disp:\n", " print 'present'\n", " plot_stack(s_p,type='log')\n", "\n", "y = sound_from_stack(s_p,fs=fs)\n", "display(Audio(data=y, rate=fs))\n", "\n", "if disp:\n", " print 'absent'\n", " plot_stack(s_a,type='log')\n", " \n", "y = sound_from_stack(s_a,fs=fs)\n", "display(Audio(data=y, rate=fs))\n", "if disp:\n", " print 'close'\n", " plot_stack(s_d,type='log')\n", " print si\n", "y = sound_from_stack(s_d,fs=fs)\n", "display(Audio(data=y, rate=fs))\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "present\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nUvDSiauq4YYAAAAASUVORK5CYII=\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "absent\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nWF10BWuLLVu2mOuvv97k5eWZvLw88+STTwZ9z7gNivPnz5usrCxz8OBB09LSYkaPHm0aGxvbPWfj\nxo2mpKTEGGPM559/bm655ZZYlOo6J21x/Phx88UXX5g//elP3ToonLTF9u3bzenTp40xF/7T9OTv\nxdmzZwP3GxoaTFZWVrTLdJ2Tdrj4vGnTppnbb7/drFu3LgaVus9JW2zZssWUlpaG9L5xOyng5eMs\nkpOTA+MsLrdhwwbNnTtXknTLLbfo9OnT+u6772JRrquctEVaWpoKCgqUnJwcoyqjw0lbTJgwQTfc\ncIOkC9+Lb775Jhalus5JW6SkpATunz17VjfeeGO0y3Sdk3aQpGeffVZ33XWX0tLSYlBldDhtCxPi\nNB5xGxQdjbM4cuRI0Od0xx8FJ23RU4TaFi+88IKmT58ejdKizmlbvP3228rJyVFJSYlWrFgRzRKj\nwulvRU1NjR599FFJXTs9P545aQuPx6Pt27dr9OjRmj59uhobG4O+b9zNHnuR03/IK5OxO34BuuNn\nClcobbFlyxa9+OKL2rZtm4sVxY7Ttpg5c6ZmzpyprVu36v7779dXX33lcmXR5aQdFi1apKeeeiow\nKV6of1EnCidtkZ+fr+bmZvXu3VubNm3SzJkztW/fPutr4jYonIyzuPI533zzjdLT06NWY7R0ZcxJ\nd+O0LRoaGvTQQw+ptrZWffv2jWaJURPq92Ly5Mk6f/68Tpw4of79+0ejxKhw0g47d+5UWVmZJOmH\nH37Qpk2blJyc3O1OyXfSFn369AncLykp0WOPPaaTJ0+qX79+nb9xpDpRIu2XX34xw4YNMwcPHjQ/\n//xz0M7szz77rNt2Wjppi4sqKiq6dWe2k7Y4dOiQycrKMp999lmMqowOJ21x4MAB09bWZowxZufO\nnWbYsGGxKNVVofz/MMaYBx98sNue9eSkLY4dOxb4TuzYscMMHjw46PvG7R7F5eMsWltbVV5erpyc\nHD3//POSpIcffljTp0/Xe++9J6/Xq5SUFK1evTrGVbvDSVscO3ZM48aN05kzZ9SrVy8988wzamxs\nVGpqaoyrjywnbbF06VKdOnUqcDw6OTlZ9fX1sSzbFU7aYv369XrppZeUnJys1NRUvfbaazGuOvKc\ntENP4aQt1q1bp1WrVikpKUm9e/d29J2I2wsXAQDiQ9ye9QQAiA8EBQDAiqAAAFgRFAAAK4ICAGBF\nUAAArAgK9Hg//vijVq1aFVg+evSo7r77ble29e6776qysrLTxxsaGlReXu7KtoFwMY4CPZ7f71dp\naan27t3r+ramTZum1157TQMGDOj0OYWFhXr99dd10003uV4P4AR7FOjx/vjHP6qpqUljxozRkiVL\ndOjQIfl8PknSP/7xD82cOVO33Xabhg4dqpUrV+rpp59Wfn6+JkyYoFOnTkmSmpqaVFJSooKCAk2Z\nMqXDifeam5vV0tISCIk33nhDPp9PeXl5mjp1auB5JSUleuONN6LwyQGHIj3XCJBo/H6/GTVqVGD5\n4MGDgeXVq1cbr9drzp49a77//ntz/fXXm+eff94YY8zvfvc789e//tUYY0xRUZHZv3+/MebCRbSK\nioqu2k51dbVZsGBBYNnn85mjR48aY4z58ccfA+s//vhjc88990T4UwLhi9u5noBoMUGOvk6bNk0p\nKSlKSUnRr371K5WWlkqSfD6fGhoadO7cOW3fvr1dv0ZLS8tV73P48GHdfPPNgeVJkyZp7ty5uuee\ne3TnnXcG1t98883y+/1d/FRA5BAUQBDXXntt4H6vXr0Cy7169dL58+fV1tamvn37avfu3UHf6/JQ\nWrVqlerr67Vx40aNHTtWO3fuVL9+/WSM4RokiCv0UaDH69Onj3766aeQX3fxR79Pnz4aOnSo1q1b\nF1jf0NBw1fMHDx6sY8eOBZabmpo0fvx4VVVVKS0tLXB1xm+//VaDBw8O56MAriAo0OP1799fkyZN\nks/n05IlS+TxeAJ/0V9+/+Ly5fcvLq9Zs0YvvPCC8vLyNGrUKG3YsOGq7UyaNEm7du0KLP/hD39Q\nbm6ufD6fJk2apNzcXEkXrns8ZcoUVz4rEA5OjwWiqKioSGvWrGnXV3ElTo9FvGGPAoiixYsX67nn\nnuv08YaGBnm9XkICcYU9CgCAFXsUAAArggIAYEVQAACsCAoAgBVBAQCwIigAAFb/A8gb04ezTyhO\nAAAAAElFTkSuQmCC\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "close\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nbbF582Zz7bXXmry8PJOXl2eefPLJoO8Zt0Fx7tw5k5WVZQ4cOGBaWlrMqFGjTGNjY7vnbNiwwZSU\nlBhjjPn888/NzTffHItSXeekLY4dO2b++9//mscff7xbB4WTtti2bZs5deqUMeb8f5qe/L04c+ZM\n4H5DQ4PJysqKdpmuc9IOF543depUc/vtt5u1a9fGoFL3OWmLzZs3m9LS0pDeN24nBbx0nEVycnJg\nnMWl1q9frzlz5kiSbr75Zp06dUrff/99LMp1lZO2SEtLU0FBgZKTk2NUZXQ4aYvx48fruuuuk3T+\ne/Htt9/GolTXOWmLlJSUwP0zZ87o+uuvj3aZrnPSDpL0/PPP66677lJaWloMqowOp21hQpzGI26D\noqNxFocPHw76nO74o+CkLXqKUNvi5Zdf1rRp06JRWtQ5bYt3331XOTk5Kikp0fLly6NZYlQ4/a2o\nqanRI488Iqlrp+fHMydt4fF4tG3bNo0aNUrTpk1TY2Nj0PeNu9ljL3D6D3l5MnbHL0B3/EzhCqUt\nNm/erFdeeUVbt251saLYcdoWM2bM0IwZM7Rlyxbdf//9+vrrr12uLLqctMPChQv11FNPBSbFC/Uv\n6kThpC3y8/PV3Nys3r17a+PGjZoxY4b27t1rfU3cBoWTcRaXP+fbb79Venp61GqMlq6MOelunLZF\nQ0ODHnzwQdXW1qpv377RLDFqQv1eTJo0SefOndPx48fVv3//aJQYFU7aYceOHSorK5Mk/fDDD9q4\ncaOSk5O73Sn5TtqiT58+gfslJSV69NFHdeLECfXr16/zN45UJ0qk/fbbb+amm24yBw4cML/++mvQ\nzuzPPvus23ZaOmmLCyoqKrp1Z7aTtjh48KDJysoyn332WYyqjA4nbbF//37T1tZmjDFmx44d5qab\nbopFqa4K5f+HMcb88Y9/7LZnPTlpi6NHjwa+E9u3bzeDBw8O+r5xu0dx6TiL1tZWlZeXKycnRy++\n+KIk6aGHHtK0adP0wQcfyOv1KiUlRatWrYpx1e5w0hZHjx7V2LFjdfr0afXq1UvPPfecGhsblZqa\nGuPqI8tJWyxZskQnT54MHI9OTk5WfX19LMt2hZO2WLdunf71r38pOTlZqampeuONN2JcdeQ5aYee\nwklbrF27VitXrlRSUpJ69+7t6DsRtxcuAgDEh7g96wkAEB8ICgCAFUEBALAiKAAAVgQFAMCKoAAA\nWBEU6PF+/PFHrVy5MrB85MgR3X333a5s6/3331dlZWWnjzc0NKi8vNyVbQPhYhwFejy/36/S0lLt\n2bPH9W1NnTpVb7zxhgYMGNDpcwoLC/Xmm2/qhhtucL0ewAn2KNDjPfbYY2pqatLo0aO1ePFiHTx4\nUD6fT5L0j3/8QzNmzNBtt92moUOHasWKFXrmmWeUn5+v8ePH6+TJk5KkpqYmlZSUqKCgQJMnT+5w\n4r3m5ma1tLQEQuKtt96Sz+dTXl6epkyZEnheSUmJ3nrrrSh8csChSM81AiQav99vRo4cGVg+cOBA\nYHnVqlXG6/WaM2fOmP/973/m2muvNS+++KIxxpi//OUv5tlnnzXGGFNUVGT27dtnjDl/Ea2ioqIr\ntlNdXW3mz58fWPb5fObIkSPGGGN+/PHHwPqPP/7Y3HPPPRH+lED44nauJyBaTJCjr1OnTlVKSopS\nUlL0u9/9TqWlpZIkn8+nhoYGnT17Vtu2bWvXr9HS0nLF+xw6dEg33nhjYHnixImaM2eO7rnnHt15\n552B9TfeeKP8fn8XPxUQOQQFEMTVV18duN+rV6/Acq9evXTu3Dm1tbWpb9++2rVrV9D3ujSUVq5c\nqfr6em3YsEFjxozRjh071K9fPxljuAYJ4gp9FOjx+vTpo59++ink11340e/Tp4+GDh2qtWvXBtY3\nNDRc8fzBgwfr6NGjgeWmpiaNGzdOVVVVSktLC1yd8bvvvtPgwYPD+SiAKwgK9Hj9+/fXxIkT5fP5\ntHjxYnk8nsBf9Jfev7B86f0Ly6tXr9bLL7+svLw8jRw5UuvXr79iOxMnTtTOnTsDy3/729+Um5sr\nn8+niRMnKjc3V9L56x5PnjzZlc8KhIPTY4EoKioq0urVq9v1VVyO02MRb9ijAKJo0aJFeuGFFzp9\nvKGhQV6vl5BAXGGPAgBgxR4FAMCKoAAAWBEUAAArggIAYEVQAACsCAoAgNX/AXYp0YVcSl9dAAAA\nAElFTkSuQmCC\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "-1.0\n" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 306 }, { "cell_type": "code", "collapsed": false, "input": [ "si" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 303, "text": [ "1.0" ] } ], "prompt_number": 303 }, { "cell_type": "code", "collapsed": false, "input": [ "# Harmonic chord\n", "f1 = 250.\n", "f2 = 400.\n", "d = 0.5\n", "s_harm = [ [list(np.arange(8)*f1), d],[ [], d ],[list(np.arange(8)*f2), d] ]\n", "fs = 44100.\n", "\n", "plot_stack(s_harm)\n", "y = sound_from_stack(s_harm,fs=fs)\n", "display(Audio(data=y, rate=fs))\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEPCAYAAAC6Kkg/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHdJJREFUeJzt3XtwVPXh/vFnaTKtchNQNrALhpLFsCaQCLNIURrABIhD\nBsRGY5WA6NRQK1Sdau2FYL8DaacdC9oo04lKKXJRW8JoSVMsQQVNnADGGkdWDJJsLsolCkgNkPP7\nAzk/UgjZT8xeAu/XzM5kz+45+2zgnCfn7rAsyxIAAAZ6RDoAAKD7oTwAAMYoDwCAMcoDAGCM8gAA\nGKM8AADGQlYe//3vfzVu3DilpKTI6/Xq5z//uSTp0KFDSk9P14gRI5SRkaHm5mZ7nGXLlsnj8Sgx\nMVGlpaX28MrKSiUnJ8vj8WjhwoWhigwACFLIyuM73/mOtm7dqt27d6uqqkpbt27Vm2++qYKCAqWn\np2vPnj2aMmWKCgoKJEnV1dVav369qqurVVJSogULFujMKSh5eXkqKiqS3++X3+9XSUlJqGIDAIIQ\n0s1Wl19+uSSppaVFp06dUr9+/bRp0ybl5uZKknJzc7Vx40ZJUnFxsXJychQbG6v4+HglJCSovLxc\nDQ0NOnLkiHw+nyRpzpw59jgAgMgIaXm0trYqJSVFTqdTkyZN0rXXXqumpiY5nU5JktPpVFNTkySp\nvr5ebrfbHtftdisQCJwz3OVyKRAIhDI2AKADMaGceI8ePbR79259/vnnmjp1qrZu3drmdYfDIYfD\nEcoIAIAQCGl5nNG3b1/dfPPNqqyslNPpVGNjo+Li4tTQ0KCBAwdKOr1GUVtba49TV1cnt9stl8ul\nurq6NsNdLtc5n5GQkKC9e/eG/ssAwEVk+PDh+uijj4zHC9lmqwMHDthHUh0/flz/+te/lJqaqqys\nLK1atUqStGrVKs2cOVOSlJWVpXXr1qmlpUU1NTXy+/3y+XyKi4tTnz59VF5eLsuytHr1anucs+3d\nu1eWZUX9Y/HixRHPQE5ydteM5Oz6R2f/6A7ZmkdDQ4Nyc3PV2tqq1tZW3XXXXZoyZYpSU1OVnZ2t\noqIixcfHa8OGDZIkr9er7Oxseb1excTEqLCw0N6kVVhYqLlz5+r48ePKzMzUtGnTQhUbABCEkJVH\ncnKydu7cec7w/v37a8uWLecd57HHHtNjjz12zvAxY8bovffe6/KMAIDO4QzzMEtLS4t0hKCQs2t1\nh5zdIaNEzmjhsCzrorgZlMPh0EXyVQAgbDq77GTNAwBgjPIAABijPAAAxigPAIAxygMAYIzyAAAY\nozwAAMYoDwCAsbBcVRdA9OPuCN1DtJwLTXkAkBQ9CyV0D2y2AgAYozwAAMYoDwCAMcoDAGCM8gAA\nGKM8AADGKA8AgDHKAwBgjPIAABijPAAAxigPAIAxygMAYIzyAAAYozwAAMYoDwCAMcoDAGAsZOVR\nW1urSZMm6dprr1VSUpJWrFghScrPz5fb7VZqaqpSU1O1efNme5xly5bJ4/EoMTFRpaWl9vDKykol\nJyfL4/Fo4cKFoYoMAAiSw7JCc/+wxsZGNTY2KiUlRUePHtWYMWO0ceNGbdiwQb1799aDDz7Y5v3V\n1dW644479M477ygQCOimm26S3++Xw+GQz+fTU089JZ/Pp8zMTD3wwAOaNm1a2y/icChEXwUALlqd\nXXaGbM0jLi5OKSkpkqRevXpp5MiRCgQCknTeoMXFxcrJyVFsbKzi4+OVkJCg8vJyNTQ06MiRI/L5\nfJKkOXPmaOPGjaGKDQAIQlj2eezbt0+7du3S9ddfL0l68sknNXr0aM2fP1/Nzc2SpPr6erndbnsc\nt9utQCBwznCXy2WXEAAgMkJeHkePHtWtt96q5cuXq1evXsrLy1NNTY12796tQYMG6aGHHgp1BABA\nF4sJ5cRPnDih2bNn684779TMmTMlSQMHDrRfv+eeezRjxgxJp9coamtr7dfq6urkdrvlcrlUV1fX\nZrjL5Trv5+Xn59s/p6WlKS0trQu/DQB0f2VlZSorK/vG0wnZDnPLspSbm6sBAwboiSeesIc3NDRo\n0KBBkqQnnnhC77zzjl544QV7h3lFRYW9w/yjjz6Sw+HQuHHjtGLFCvl8Pt18883sMAeALtLZZWfI\n1jy2b9+uv/71rxo1apRSU1MlSUuXLtXatWu1e/duORwODRs2TCtXrpQkeb1eZWdny+v1KiYmRoWF\nhXI4HJKkwsJCzZ07V8ePH1dmZuY5xQEACK+QrXmEG2seAGAu6g7VBQBcvCgPAIAxygMAYCykh+oC\n6D6+Pj4FUS5adu1SHgAkRc9CCd0Dm60AAMYoDwCAMcoDAGCM8gAAGKM8AADGKA8AgDHKAwBgjPIA\nABijPAAAxigPAIAxygMAYIzyAAAYozwAAMYoDwCAMcoDAGCM8gAAGKM8AADGKA8AgDHKAwBgjPIA\nABijPAAAxigPAIAxygMAYIzyAAAYC1l51NbWatKkSbr22muVlJSkFStWSJIOHTqk9PR0jRgxQhkZ\nGWpubrbHWbZsmTwejxITE1VaWmoPr6ysVHJysjwejxYuXBiqyACAIIWsPGJjY/XEE0/o/fff19tv\nv60//elP+uCDD1RQUKD09HTt2bNHU6ZMUUFBgSSpurpa69evV3V1tUpKSrRgwQJZliVJysvLU1FR\nkfx+v/x+v0pKSkIVGwAQhJCVR1xcnFJSUiRJvXr10siRIxUIBLRp0ybl5uZKknJzc7Vx40ZJUnFx\nsXJychQbG6v4+HglJCSovLxcDQ0NOnLkiHw+nyRpzpw59jgAgMgIyz6Pffv2adeuXRo3bpyamprk\ndDolSU6nU01NTZKk+vp6ud1uexy3261AIHDOcJfLpUAgEI7YAIB2xIT6A44eParZs2dr+fLl6t27\nd5vXHA6HHA5Hl31Wfn6+/XNaWprS0tK6bNrAxa4LZ0WE0Ndb8zutrKxMZWVl3zhHSMvjxIkTmj17\ntu666y7NnDlT0um1jcbGRsXFxamhoUEDBw6UdHqNora21h63rq5ObrdbLpdLdXV1bYa7XK7zft7Z\n5QHAzDddKKF7+N8/rJcsWdKp6YRss5VlWZo/f768Xq8WLVpkD8/KytKqVaskSatWrbJLJSsrS+vW\nrVNLS4tqamrk9/vl8/kUFxenPn36qLy8XJZlafXq1fY4AIDIcFhWaP7eePPNNzVx4kSNGjXK3jS1\nbNky+Xw+ZWdna//+/YqPj9eGDRt0xRVXSJKWLl2qZ599VjExMVq+fLmmTp0q6fShunPnztXx48eV\nmZlpH/bb5os4HArRVwGAi1Znl50hK49wozwAwFxnl52cYQ4AMEZ5AACMUR4AAGOUBwDAGOUBADBG\neQAAjFEeAABjlAcAwBjlAQAwRnkAAIxRHgAAY5QHAMDYBe/nceLECZWWlur111/Xvn375HA4dPXV\nV2vixImaOnWqYmJCfi8pAEAUavequr/5zW/08ssva/z48fL5fBo8eLBaW1vV0NCgiooKvf3227r1\n1lv1y1/+MtyZz4ur6gKAuS6/JPumTZs0Y8aMdm8T29raqldeeUVZWVnGHxoKp3NSHtGOfgeiS8ju\n5/HGG2/oe9/7nr71rW/Zw3bu3KnrrrvOPGUIseYBAOZCdj+PqVOnavLkyWpqarKHzZ8/3/iDAAAX\njw7L45prrtHDDz+stLQ0bd++PRyZAABRLqjDpWbMmKHExETddtttmjdvXqgzAQCiXIdrHme2hXk8\nHr3++ut64403VFVVFfJgAIDo1eEO8/PZv3+/hg4dGoo8ncYOcwAw19llZ7ubrX7yk5+0O3GHw6EV\nK1YYfxgA4OLQbnmMGTPGLo3Fixfr8ccftwukvXM/AACXhqA2W6WmpmrXrl3hyNNpbLYCAHMhO88D\nAID/xZUNAUiS2BrdPUTLBpZ2y6NXr172vo3jx4+rd+/e9msOh0NffPFF6NMBCJtoWSihe+jUobrR\niH0eAGCuy/d5HDlypMORO3rP3XffLafTqeTkZHtYfn6+3G63UlNTlZqaqs2bN9uvLVu2TB6PR4mJ\niSotLbWHV1ZWKjk5WR6PRwsXLuwwFwAgtNotj1mzZunHP/6xSktLdejQIXv4wYMH9c9//lN5eXma\nNWvWBSc+b948lZSUtBnmcDj04IMPateuXdq1a5emT58uSaqurtb69etVXV2tkpISLViwwG7DvLw8\nFRUVye/3y+/3nzNNAEB4tVseW7Zs0ezZs7VhwwZNmDBBffv2Vd++fXXDDTfopZde0m233aYtW7Zc\ncOI33nij+vXrd87w860iFRcXKycnR7GxsYqPj1dCQoLKy8vV0NCgI0eOyOfzSZLmzJmjjRs3mn5P\nAEAXuuDRVpMnT9bkyZO7/EOffPJJ/eUvf9HYsWP1hz/8QVdccYXq6+t1/fXX2+9xu90KBAKKjY2V\n2+22h7tcLgUCgS7PBAAIXtgP1c3Ly9Ovf/1rSdKvfvUrPfTQQyoqKuqSaTsc+Wc9S/v6gWjCMQ1A\nZJWVlamsrOwbTyfs5TFw4ED753vuuUczZsyQdHqNora21n6trq5ObrdbLpdLdXV1bYa7XK7zTtuy\n8kMTGgAuEmlpaUpLS7OfL1mypFPTCfsZ5g0NDfbPf//73+0jsbKysrRu3Tq1tLSopqZGfr9fPp9P\ncXFx6tOnj8rLy2VZllavXq2ZM2eGOzYA4CwdrnmcfaTV+fTv37/d13JycrRt2zYdOHBAQ4YM0ZIl\nS1RWVqbdu3fL4XBo2LBhWrlypSTJ6/UqOztbXq9XMTExKiwstE9SLCws1Ny5c3X8+HFlZmZq2rRp\nJt8RANDFOjxJMD4+Xvv377ePmjp8+LCGDh0qh8Mhh8Ohjz/+OCxBO8JJggBgLmQXRkxPT9crr7yi\ngwcP6uDBg3r11VeVkZGhmpqaqCkOAEB4dbjmkZSUpP/85z8dDos01jwAwFyX30nwjMGDB+v//u//\ndOedd8qyLL3wwgvtHu0EALg0dLjZau3atfr00081a9Ys3XLLLfr000+1du3acGQDAESpoK+qe+zY\nMfXs2TPUeTqNzVYAYC5kO8x37Nghr9erxMRESdK7776rBQsWmCcEAFw0OiyPRYsWqaSkRFdeeaUk\nafTo0dq2bVvIgwEAoldQZ5gPHTq0zfOYGO5eCwCXsg5bYOjQodq+fbskqaWlRStWrNDIkSNDHgwA\nEL063GF+4MABPfDAA9qyZYssy1JGRoZWrFihAQMGhCtjUNhhDgDmOrvsvGB5nDx5Urm5uVqzZs03\nChcOlAcAmAvJ0VYxMTH65JNP9NVXX3U6GADg4tPhPo9hw4bphhtuUFZWli6//HJJ//8+5ACAS1OH\n5ZGQkKDhw4ertbVVR48eDUcmAECUa7c87rrrLq1evVp9+/bVokWLwpmp076+/QeiGLulgItDuzvM\nvV6vtmzZomnTpp33frcXuglUJLDDHADMdflVde+77z5NmTJFH3/8scaMGXPOh3EvDwC4dHV4nsd9\n992nZ555Jlx5Oo01DwAwF5LzPLoTygP4Zthn2D109WIuZDeDAnBp4G8vmAjqwogAAJyN8gAAGKM8\nAADGKA8AgDHKAwBgjPIAABijPAAAxigPAICxkJbH3XffLafTqeTkZHvYoUOHlJ6erhEjRigjI0PN\nzc32a8uWLZPH41FiYqJKS0vt4ZWVlUpOTpbH49HChQtDGRkAEISQlse8efNUUlLSZlhBQYHS09O1\nZ88eTZkyRQUFBZKk6upqrV+/XtXV1SopKdGCBQvsU+bz8vJUVFQkv98vv99/zjQBAOEV0vK48cYb\n1a9fvzbDNm3apNzcXElSbm6uNm7cKEkqLi5WTk6OYmNjFR8fr4SEBJWXl6uhoUFHjhyRz+eTJM2Z\nM8ceBwAQGWHf59HU1CSn0ylJcjqdampqkiTV19fL7Xbb73O73QoEAucMd7lcCgQC4Q0NAGgjohdG\ndDgccnThpTwdjvyznqV9/UA04eJ7QGSVlZWd9wZ/psJeHk6nU42NjYqLi1NDQ4MGDhwo6fQaRW1t\nrf2+uro6ud1uuVwu1dXVtRnucrnOO23Lyg9pdgDo7tLS0pSWlmY/X7JkSaemE/bNVllZWVq1apUk\nadWqVZo5c6Y9fN26dWppaVFNTY38fr98Pp/i4uLUp08flZeXy7IsrV692h4HABAZIV3zyMnJ0bZt\n23TgwAENGTJEjz/+uB599FFlZ2erqKhI8fHx2rBhg6TT90zPzs6W1+tVTEyMCgsL7U1ahYWFmjt3\nro4fP67MzExNmzYtlLEBAB3gToIAcAnr7LKTM8wBAMYoDwCAMcoDAGCM8gAAGKM8AADGKA8AgDHK\nAwBgjPIAABijPAAAxigPAICxiF6SHUD06MK7IyCEouUqTJQHAEnRs1BC98BmKwCAMcoDAGDsotps\nxTbb6MemEeDicFGVBwsmAAgPNlsBAIxRHgAAY5QHAMAY5QEAMEZ5AACMUR4AAGOUBwDAGOUBADBG\neQAAjFEeAABjlAcAwBjlAQAwFrHyiI+P16hRo5SamiqfzydJOnTokNLT0zVixAhlZGSoubnZfv+y\nZcvk8XiUmJio0tLSSMUGACiC5eFwOFRWVqZdu3apoqJCklRQUKD09HTt2bNHU6ZMUUFBgSSpurpa\n69evV3V1tUpKSrRgwQK1trZGKjoAXPIiutnK+p9rqG/atEm5ubmSpNzcXG3cuFGSVFxcrJycHMXG\nxio+Pl4JCQl24QAAwi+iax433XSTxo4dqz//+c+SpKamJjmdTkmS0+lUU1OTJKm+vl5ut9se1+12\nKxAIhD80AEBSBG8GtX37dg0aNEifffaZ0tPTlZiY2OZ1h8MhxwVuDXih1wAAoRWx8hg0aJAk6aqr\nrtKsWbNUUVEhp9OpxsZGxcXFqaGhQQMHDpQkuVwu1dbW2uPW1dXJ5XKdM02HI/+sZ2lfPxBNuNsj\nEFllZWUqKyv7xtNxWP+74yEMvvzyS506dUq9e/fWsWPHlJGRocWLF2vLli0aMGCAHnnkERUUFKi5\nuVkFBQWqrq7WHXfcoYqKCgUCAd1000366KOP2qx9OByOc/ahAAAurLPLzoiseTQ1NWnWrFmSpJMn\nT+qHP/yhMjIyNHbsWGVnZ6uoqEjx8fHasGGDJMnr9So7O1ter1cxMTEqLCxksxUARFBE1jxCgTUP\nADDX2WUnZ5gDAIxRHgAAY5QHAMBYxA7VBRBdOAale4iWXbuUBwBJ0bNQQvfAZisAgDHKAwBgjPIA\nABijPAAAxigPAIAxygMAYIzyAAAYozwAAMYoDwCAsYvqDHMurxD9OIsZuDhcVOXBggkAwoPNVgAA\nY5QHAMAY5QEAMEZ5AACMUR4AAGOUBwDAGOUBADBGeQAAjFEeAABjlAcAwBjlAQAwRnkAAIx1m/Io\nKSlRYmKiPB6Pfvvb30Y6DgBc0rpFeZw6dUr333+/SkpKVF1drbVr1+qDDz6IdKxOKSsri3SEoJCz\na3WHnN0ho0TOaNEtyqOiokIJCQmKj49XbGysbr/9dhUXF0c6Vqd0l/9Q5Oxa3SFnd8gokTNadIvy\nCAQCGjJkiP3c7XYrEAhEMBEAXNq6RXk4uEUgAEQXqxt46623rKlTp9rPly5dahUUFLR5z/Dhwy1J\nPHjw4MHD4DF8+PBOLZcdlhX9N289efKkrrnmGr322msaPHiwfD6f1q5dq5EjR0Y6GgBckrrFPcxj\nYmL01FNPaerUqTp16pTmz59PcQBABHWLNQ8AQHTpFjvMzxbMyYIPPPCAPB6PRo8erV27doU54Wkd\n5VyzZo1Gjx6tUaNGacKECaqqqopAyuBPvnznnXcUExOjv/3tb2FMd1owGcvKypSamqqkpCSlpaWF\nN+DXOsp54MABTZs2TSkpKUpKStLzzz8f9ox33323nE6nkpOT231PNMw/HeWMlvknmN+nFNn5Rwou\np/E81Om92BFw8uRJa/jw4VZNTY3V0tJijR492qqurm7znldffdWaPn26ZVmW9fbbb1vjxo2Lypw7\nduywmpubLcuyrM2bN0dtzjPvmzRpknXzzTdbL730UtRlPHz4sOX1eq3a2lrLsizrs88+C2vGYHMu\nXrzYevTRR+2M/fv3t06cOBHWnK+//rq1c+dOKykp6byvR8P8Y1kd54yG+ceyOs5pWZGdf87oKGdn\n5qFuteYRzMmCmzZtUm5uriRp3Lhxam5uVlNTU9TlHD9+vPr27WvnrKurC2vGYHNK0pNPPqlbb71V\nV111VVRmfOGFFzR79my53W5J0pVXXhmVOQcNGqQvvvhCkvTFF19owIABiokJ727HG2+8Uf369Wv3\n9WiYf6SOc0bD/CN1nFOK7PxzRkc5OzMPdavyCOZkwfO9J9z/sUxPaiwqKlJmZmY4orUR7O+zuLhY\neXl5ksJ/zk0wGf1+vw4dOqRJkyZp7NixWr16dVgzSsHlvPfee/X+++9r8ODBGj16tJYvXx7umB2K\nhvnHVKTmn2BEev4JVmfmoW5xtNUZwf7irf85BiDc/2Amn7d161Y9++yz2r59ewgTnV8wORctWqSC\nggI5HA5ZlnXO7zbUgsl44sQJ7dy5U6+99pq+/PJLjR8/Xtdff708Hk8YEp4WTM6lS5cqJSVFZWVl\n2rt3r9LT0/Xuu++qd+/eYUgYvEjPPyYiOf8EI9LzT7A6Mw91q/JwuVyqra21n9fW1tqrWe29p66u\nTi6XK2wZz5fhfDklqaqqSvfee69KSko6XPUNhWByVlZW6vbbb5d0eofv5s2bFRsbq6ysrKjJOGTI\nEF155ZW67LLLdNlll2nixIl69913w1oeweTcsWOHfvGLX0iShg8frmHDhunDDz/U2LFjw5azI9Ew\n/wQr0vNPMCI9/wSrU/NQF+2PCYsTJ05Y3/3ud62amhrrq6++6nCH+VtvvRWRHWnB5Pzkk0+s4cOH\nW2+99VbY850RTM6zzZ0713r55ZfDmDC4jB988IE1ZcoU6+TJk9axY8espKQk6/3334+6nD/96U+t\n/Px8y7Isq7Gx0XK5XNbBgwfDmtOyLKumpiaoHeaRmn/OuFDOaJh/zrhQzrNFYv4524VydmYe6lZr\nHu2dLLhy5UpJ0o9+9CNlZmbqH//4hxISEtSzZ08999xzUZnz8ccf1+HDh+1tobGxsaqoqIi6nJEW\nTMbExERNmzZNo0aNUo8ePXTvvffK6/VGXc7HHntM8+bN0+jRo9Xa2qrf/e536t+/f1hz5uTkaNu2\nbTpw4ICGDBmiJUuW6MSJE3bGaJh/gskZDfNPMDmjRUc5OzMPcZIgAMBYtzraCgAQHSgPAIAxygMA\nYIzyAAAYozwAAMYoDwCAMcoDaMfnn3+up59+2n5eX1+vH/zgByH5rFdeeUX5+fntvl5VVaX58+eH\n5LOBzuA8D6Ad+/bt04wZM/Tee++F/LMmTZqkdevWyel0tvuetLQ0bdiwQQMHDgx5HqAjrHkA7Xj0\n0Ue1d+9epaam6pFHHtEnn3xi30zn+eef18yZM5WRkaFhw4bpqaee0u9//3tdd911Gj9+vA4fPixJ\n2rt3r6ZPn66xY8dq4sSJ+vDDD8/5nNraWrW0tNjF8eKLLyo5OVkpKSn6/ve/b79v+vTpevHFF8Pw\nzYEgdPX1U4CLxb59+9pcC+jsawM999xzVkJCgnX06FHrs88+s/r06WOtXLnSsqzT17D64x//aFmW\nZU2ePNny+/2WZZ2+udLkyZPP+Zy1a9da999/v/08OTnZqq+vtyzLsj7//HN7+L///W8rOzu7i78l\n0Dnd6tpWQDhZHWzRnTRpknr27KmePXvqiiuu0IwZMyRJycnJqqqq0rFjx7Rjx442+0laWlrOmc7+\n/fs1aNAg+/mECROUm5ur7Oxs3XLLLfbwQYMGad++fd/wWwFdg/IAOunb3/62/XOPHj3s5z169NDJ\nkyfV2tqqfv36BXUf8LOL6umnn1ZFRYVeffVVjRkzRpWVlerfv78sy4rqe2vg0sI+D6AdvXv31pEj\nR4zHO1MEvXv31rBhw/TSSy/Zw6uqqs55/9VXX63Gxkb7+d69e+Xz+bRkyRJdddVV9p38GhoadPXV\nV3fmqwBdjvIA2jFgwABNmDBBycnJeuSRR+RwOOy//M/++czzs38+83zNmjUqKipSSkqKkpKStGnT\npnM+Z8KECdq5c6f9/Gc/+5lGjRql5ORkTZgwQaNGjZJ0+j7pEydODMl3BUxxqC4QBSZPnqw1a9a0\n2ffxvzhUF9GENQ8gCjz88MN65pln2n29qqpKCQkJFAeiBmseAABjrHkAAIxRHgAAY5QHAMAY5QEA\nMEZ5AACMUR4AAGP/D+kn0u0YiwiBAAAAAElFTkSuQmCC\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 295 }, { "cell_type": "code", "collapsed": false, "input": [ "# Shepard chord\n", "f1 = 250.\n", "f2 = 240.\n", "d = 0.1\n", "s_shep = [ [list(2**np.arange(8)*f1), d],[ [], d ],[list(2**np.arange(8)*f2), d] ]\n", "fs = 44100.\n", "\n", "plot_stack(s_shep,type='log')\n", "y = sound_from_stack(s_shep,fs=fs)\n", "display(Audio(data=y, rate=fs))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] }, { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 270 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }