{ "metadata": { "name": "", "signature": "sha256:f942cc1f0ca28b3dd5e285f1cf9781bb504cb424bc5c4594a6085513c0ea4411" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Our goal: plot the equilibrium state of the vibrato bridge in the linearized spring model.\n", "\n", "Guitar part:\n", "\n", "- define frequencies as variables\n", "- compute tensions, make a sum\n", "- compute equilibrium position of the bridge\n", "\n", "When a guitar is tuned the zero frequencies are:\n", "\n", "329,6 Hz \n", "246,9 Hz\n", "196 Hz\n", "146,8 Hz\n", "110,0 Hz\n", "82,4 Hz\n", "\n", "Material properties can be found [here](http://www.daddario.com/DADProductDetail.Page?ActiveID=3769&ProductID=25&productname=EXL116_Nickel_Wound_Medium_Top_Heavy_Bottom_11_52), for example." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pylab import *\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import SVG" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "SVG(filename='files/guitar_string_spring.svg')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "svg": [ "\n", " \n", " \n", " \n", " \n", " \n", " image/svg+xml\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "" ], "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Computing the linear mass of my strings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we're going to compute the linear weights of each individual string using the factory data that can be found on the string package.\n", "\n", "In my case, I'm using a d'Addario EXL116 (medium top, heavy bottom) string set, whose information can be found [here](http://www.daddario.com/DADProductDetail.Page?ActiveID=3769&productid=25&productname=EXL116_Nickel_Wound__Medium_Top_Heavy_Bottom__11_52). It looks like this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import Image" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "Image(url=\"http://www.daddario.com/resources/jdcdad/images/products/da_prod_exl116_detail2_1.jpg\")" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The classical formula relating the fundamental parameters of a vibrating string is:\n", "\n", "$$\n", "f = \\frac{1}{2 L} \\sqrt{\\frac{T}{\\mu}}\n", "$$\n", "\n", "From this formula, we can compute the value of $\\mu$ as:\n", "\n", "$$\n", "\\mu = \\frac{T}{4 L^2 f^2}\n", "$$\n", "\n", "Using the frequencies found on [Wikipedia](http://en.wikipedia.org/wiki/Piano_key_frequencies) and the data on the package, we can compute $\\mu$:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "freqs = array([82.4, 110., 146.8, 196., 246.9, 329.6]) # frequencies of the guitar strings, from low E to high E, in Hz\n", "calibration_T = array([9.59, 11.61, 11.22, 8.43, 8.09, 8.9]) * 9.81 # calibration tensions found on package (in kg) converted to N\n", "mu = calibration_T / (4 * 0.648**2 * freqs**2) \n", "mu" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "array([ 0.00824942, 0.0056041 , 0.00304088, 0.00128166, 0.00077511,\n", " 0.00047849])" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot these linear masses as a function of string number:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(arange(1, 7), mu * 1000, 'o')\n", "xlabel('string number')\n", "ylabel('linear mass (g/m)')\n", "grid(True)\n", "xlim(0.5, 6.5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "(0.5, 6.5)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nwNXY3/JwAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From here, we can proceed to write an analysis toolkit allowing us to measure the frequencies of the strings and finally compute the tensions they produce on the vibrato bridge." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Computing the string tensions from the frequencies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the above steps, we know the linear masses and the frequencies of our strings. Assuming I'm tuned from low to high (which I am), we can derive the tensions and compute the total tension on the guitar neck from our data:\n", "\n", "$$\n", "T = 4 \\mu L^2 f^2\n", "$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def compute_tensions(freqs, linear_masses, l):\n", " return 4 * linear_masses * l**2 * freqs ** 2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "compute_tensions(array(fundamentals), mu, 0.7)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'fundamentals' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mcompute_tensions\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfundamentals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmu\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0.7\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mNameError\u001b[0m: name 'fundamentals' is not defined" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "I chose 0.7 m as the string length, while in reality I hadn't screwed my neck tight so strings have in fact different lengths (the shortest being the lowest E string).\n", "\n", "The tensions are, of course, in Newtons. So if we want something more tangible, we can convert it to kg with the following code: " ] }, { "cell_type": "code", "collapsed": false, "input": [ "T_kg = compute_tensions(array(fundamentals), mu, 0.7) / 9.81\n", "T_kg" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'fundamentals' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mT_kg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcompute_tensions\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfundamentals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmu\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0.7\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m9.81\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mT_kg\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mNameError\u001b[0m: name 'fundamentals' is not defined" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The total tension in my case is:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "sum(T_kg)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'T_kg' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mT_kg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mNameError\u001b[0m: name 'T_kg' is not defined" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }