{ "metadata": { "name": "Extracting information from a MusicXML file" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The subject of this writing is to extract meaningful information from a MusicXML file I downloaded from [Wikifonia](http://fr.wikifonia.org/node/4607). You can find the specs of the *.mxml* file which is an compressed XML file [here](http://www.musicxml.com/UserManuals/MusicXML/MusicXML.htm). " ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Extracting a MusicXML file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To start, we're gonna work on unzipping the file automatically with some bash commands." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "cd files\n", "mkdir tmp\n", "unzip \"Joseph Kosma, English: Johnny Mercer, French: Jacques Prevert - Autumn Leaves.mxl\" -d tmp" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Archive: Joseph Kosma, English: Johnny Mercer, French: Jacques Prevert - Autumn Leaves.mxl\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "mkdir: cannot create directory \u2018tmp\u2019: File exists\n", "replace tmp/musicXML.xml? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL\n", "(EOF or read error, treating as \"[N]one\" ...)\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "I created a temp directory because I might wanna delete the tmp/musicXML.xml file after working with it. For the time being, I'll just leave it there. The conclusion of this step is that we can now work with the XML in the file and parse it." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Parsing a MusicXML file for chords" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example chords" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we're really interested in is extracting the chord succession of a song. It turns out the developers of MusicXML have a nice [tutorial on chords](http://www.musicxml.com/UserManuals/MusicXML/MusicXML.htm#TutMusicXML6-1.htm). Essentially, it boils down to parsing some XML code. Let's see an example for two different chords below (a G major 6 bass D and a A(9)):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "g_chord = \"\"\"\n", " \n", " \n", " G\n", " \n", " major-sixth\n", " \n", " D\n", " \n", " \n", "\"\"\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "a_chord =\"\"\" \n", " \n", " \n", " A\n", " \n", " major\n", " \n", " 9\n", " 0\n", " add\n", " \n", " \n", " \"\"\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see if we can parse those chords correctly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import xml.etree.cElementTree as ET" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "tree = ET.fromstring(g_chord)\n", "tree" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "First thing would be to get the root of the chord and the type." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for elem in tree.findall('root/root-step'):\n", " print elem.text" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "G\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "for elem in tree.findall('kind'):\n", " print elem.text" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "major-sixth\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_chords(xml):\n", " tree = ET.fromstringlist(xml)\n", " roots = []\n", " kinds = []\n", " for elem in tree.findall('root/root-step'):\n", " roots.append(elem.text)\n", " for elem in tree.findall('kind'):\n", " kinds.append(elem.text)\n", " return (roots, kinds)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "get_chords(g_chord)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "(['G'], ['major-sixth'])" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "get_chords(a_chord)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "(['A'], ['major'])" ] } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The whole example song" ] }, { "cell_type": "code", "collapsed": false, "input": [ "xml = file(\"files/tmp/musicXML.xml\", 'r').readlines()\n", "len(xml)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "4280" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "print get_chords(xml)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "([], [])\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we see that our function doesn't work. But that's because we calibrated it on the examples. We don't really know the exact structure of the real file, therefore we're going to modify the existing code to search for all root/root-step elements starting anywhere in the depth of the tree." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def get_chords(xml):\n", " tree = ET.fromstringlist(xml)\n", " roots = []\n", " kinds = []\n", " for elem in tree.findall('.//root/root-step'):\n", " roots.append(elem.text)\n", " for elem in tree.findall('.//kind'):\n", " kinds.append(elem.text)\n", " return (roots, kinds)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "print get_chords(xml)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(['E', 'A', 'F', 'B', 'E', 'E', 'C', 'B', 'A', 'B', 'E', 'E', 'E', 'A', 'B', 'A', 'B', 'E', 'E', 'C', 'B', 'A', 'B', 'E', 'E', 'A', 'B', 'A', 'B', 'E', 'E', 'F', 'B', 'E', 'D', 'G', 'F', 'B', 'E', 'C', 'B', 'B', 'A', 'D', 'G', 'C', 'F', 'B', 'E', 'A', 'D', 'G', 'C', 'F', 'B', 'E', 'F', 'B', 'E', 'A', 'D', 'G', 'F', 'B', 'E', 'A', 'D', 'G', 'A', 'A', 'B', 'E', 'E'], ['minor', 'minor', 'half-diminished', 'dominant', 'minor', 'minor-seventh', 'dominant', 'dominant', 'minor', 'dominant', 'minor', 'dominant', 'dominant', 'minor', 'dominant', 'minor', 'dominant', 'minor', 'minor-seventh', 'dominant', 'dominant', 'minor', 'dominant', 'minor', 'dominant', 'minor', 'dominant', 'minor', 'dominant', 'minor', 'minor-seventh', 'dominant', 'dominant', 'minor', 'dominant', 'major', 'half-diminished', 'dominant', 'minor', 'dominant', 'augmented-seventh', 'dominant', 'minor-seventh', 'dominant', 'major-seventh', 'major-seventh', 'half-diminished', 'dominant', 'minor-seventh', 'minor-seventh', 'dominant', 'major-seventh', 'major-seventh', 'half-diminished', 'dominant', 'minor-seventh', 'half-diminished', 'dominant', 'minor-seventh', 'minor-seventh', 'dominant', 'major-seventh', 'half-diminished', 'dominant', 'minor-seventh', 'dominant', 'minor-seventh', 'dominant', 'major', 'minor', 'dominant', 'minor-seventh', 'minor-seventh'])\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we zip the information together, we'll get the transitions." ] }, { "cell_type": "code", "collapsed": false, "input": [ "(roots, kinds) = get_chords(xml)\n", "chords = []\n", "for (root, kind) in zip(roots, kinds):\n", " chords.append(\" \".join([root, kind]))\n", "print chords " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['E minor', 'A minor', 'F half-diminished', 'B dominant', 'E minor', 'E minor-seventh', 'C dominant', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E dominant', 'E dominant', 'A minor', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E minor-seventh', 'C dominant', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E dominant', 'A minor', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E minor-seventh', 'F dominant', 'B dominant', 'E minor', 'D dominant', 'G major', 'F half-diminished', 'B dominant', 'E minor', 'C dominant', 'B augmented-seventh', 'B dominant', 'A minor-seventh', 'D dominant', 'G major-seventh', 'C major-seventh', 'F half-diminished', 'B dominant', 'E minor-seventh', 'A minor-seventh', 'D dominant', 'G major-seventh', 'C major-seventh', 'F half-diminished', 'B dominant', 'E minor-seventh', 'F half-diminished', 'B dominant', 'E minor-seventh', 'A minor-seventh', 'D dominant', 'G major-seventh', 'F half-diminished', 'B dominant', 'E minor-seventh', 'A dominant', 'D minor-seventh', 'G dominant', 'A major', 'A minor', 'B dominant', 'E minor-seventh', 'E minor-seventh']\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note to self: this way of parsing is not super robust. I might get false parsing data if one of the file doesn't follow the right structure. Then again, if this happens, my whole zip stuff would break. I'd notice." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "What about alterated chords?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While comparing the chords from the file above with the website, I noticed that alterated chords were not detected. Upon checking, I've realized that the alteration is described in the following way:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f_sharp_chord = \"\"\"\n", " \n", " \n", " F\n", " 1\n", " \n", " half-diminished\n", " \n", "\"\"\"" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, to parse this correctly, we need to account for the root-alter tag. Let's see if we can integrate this into our parsing function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "tree = ET.fromstringlist(f_sharp_chord)\n", "tree" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 33, "text": [ "" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "for elem in tree.findall('.//root'):\n", " alter = elem.find('root-alter')\n", " if alter != None:\n", " print alter.text\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1\n" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now update the *get_chords* function to take this into account." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def get_chords(xml):\n", " tree = ET.fromstringlist(xml)\n", " chords = []\n", " for elem in tree.findall('.//harmony'):\n", " root = elem.find('root/root-step').text\n", " alter_elem = elem.find('root/root-alter')\n", " alter = (alter_elem != None and alter_elem.text)\n", " kind = elem.find('kind').text\n", " chords.append((root, alter, kind))\n", " return chords" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "print get_chords(xml)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('E', False, 'minor'), ('A', False, 'minor'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor'), ('E', False, 'minor-seventh'), ('C', False, 'dominant'), ('B', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('E', False, 'minor'), ('E', False, 'dominant'), ('E', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('E', False, 'minor'), ('E', False, 'minor-seventh'), ('C', False, 'dominant'), ('B', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('E', False, 'minor'), ('E', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('A', False, 'minor'), ('B', False, 'dominant'), ('E', False, 'minor'), ('E', False, 'minor-seventh'), ('F', '1', 'dominant'), ('B', False, 'dominant'), ('E', False, 'minor'), ('D', False, 'dominant'), ('G', False, 'major'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor'), ('C', False, 'dominant'), ('B', False, 'augmented-seventh'), ('B', False, 'dominant'), ('A', False, 'minor-seventh'), ('D', False, 'dominant'), ('G', False, 'major-seventh'), ('C', False, 'major-seventh'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor-seventh'), ('A', False, 'minor-seventh'), ('D', False, 'dominant'), ('G', False, 'major-seventh'), ('C', False, 'major-seventh'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor-seventh'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor-seventh'), ('A', False, 'minor-seventh'), ('D', False, 'dominant'), ('G', False, 'major-seventh'), ('F', '1', 'half-diminished'), ('B', False, 'dominant'), ('E', False, 'minor-seventh'), ('A', False, 'dominant'), ('D', False, 'minor-seventh'), ('G', False, 'dominant'), ('A', False, 'major'), ('A', False, 'minor'), ('B', False, 'dominant'), ('E', False, 'minor-seventh'), ('E', False, 'minor-seventh')]\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can define some utility function to translate our chords triplet into real chord names." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def increment_note(note, half_tones):\n", " notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']\n", " ind = notes.index(note)\n", " return notes[(ind + half_tones) % 12]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "increment_note('C', 6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 55, "text": [ "'F#'" ] } ], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "def triplet_to_string(triplet):\n", " (root, alter, kind) = triplet\n", " if alter == False:\n", " return \" \".join([root, kind])\n", " else:\n", " return \" \".join([increment_note(root, int(alter)), kind])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 58 }, { "cell_type": "code", "collapsed": false, "input": [ "print map(triplet_to_string, get_chords(xml))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['E minor', 'A minor', 'F# half-diminished', 'B dominant', 'E minor', 'E minor-seventh', 'C dominant', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E dominant', 'E dominant', 'A minor', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E minor-seventh', 'C dominant', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E dominant', 'A minor', 'B dominant', 'A minor', 'B dominant', 'E minor', 'E minor-seventh', 'F# dominant', 'B dominant', 'E minor', 'D dominant', 'G major', 'F# half-diminished', 'B dominant', 'E minor', 'C dominant', 'B augmented-seventh', 'B dominant', 'A minor-seventh', 'D dominant', 'G major-seventh', 'C major-seventh', 'F# half-diminished', 'B dominant', 'E minor-seventh', 'A minor-seventh', 'D dominant', 'G major-seventh', 'C major-seventh', 'F# half-diminished', 'B dominant', 'E minor-seventh', 'F# half-diminished', 'B dominant', 'E minor-seventh', 'A minor-seventh', 'D dominant', 'G major-seventh', 'F# half-diminished', 'B dominant', 'E minor-seventh', 'A dominant', 'D minor-seventh', 'G dominant', 'A major', 'A minor', 'B dominant', 'E minor-seventh', 'E minor-seventh']\n" ] } ], "prompt_number": 61 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Translating the chords to a C-major key" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know how to parse a MusicXML file, we can shift the chords to the key of C-major if we note the root key for the song. In our case, the song *Les feuilles mortes* has a F sharp in its key, therefore we're in G major or equivalently, E minor (in this case E minor, because there are some D sharps in the melody). So what we need to do is to compute the distance between C and G and shift all the chords." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def distance_between_notes(first_note, second_note):\n", " \"\"\" returns distance between the two notes, in half-tones \n", " \"\"\"\n", " notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']\n", " first_index = notes.index(first_note)\n", " second_index = notes.index(second_note)\n", " distance = second_index - first_index\n", " if distance < 0:\n", " return distance + 12\n", " else:\n", " return distance" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "print distance_between_notes('C', 'D')\n", "print distance_between_notes('G', 'C')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2\n", "5\n" ] } ], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "increment_note('G', 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 67, "text": [ "'C'" ] } ], "prompt_number": 67 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, the main loop is:\n", "\n", "- we extract the chord information from the XML\n", "- we shift the notes into the C key\n", "- we build the proper chord names (including the alterations)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "chord_information = get_chords(xml)\n", "distance_to_C_major = distance_between_notes('G', 'C')\n", "new_chord_information = []\n", "for info in chord_information:\n", " info = (increment_note(info[0], distance_to_C_major), info[1], info[2])\n", " new_chord_information.append(info)\n", "chords = map(triplet_to_string, new_chord_information)\n", "print chords\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['A minor', 'D minor', 'B half-diminished', 'E dominant', 'A minor', 'A minor-seventh', 'F dominant', 'E dominant', 'D minor', 'E dominant', 'A minor', 'A dominant', 'A dominant', 'D minor', 'E dominant', 'D minor', 'E dominant', 'A minor', 'A minor-seventh', 'F dominant', 'E dominant', 'D minor', 'E dominant', 'A minor', 'A dominant', 'D minor', 'E dominant', 'D minor', 'E dominant', 'A minor', 'A minor-seventh', 'B dominant', 'E dominant', 'A minor', 'G dominant', 'C major', 'B half-diminished', 'E dominant', 'A minor', 'F dominant', 'E augmented-seventh', 'E dominant', 'D minor-seventh', 'G dominant', 'C major-seventh', 'F major-seventh', 'B half-diminished', 'E dominant', 'A minor-seventh', 'D minor-seventh', 'G dominant', 'C major-seventh', 'F major-seventh', 'B half-diminished', 'E dominant', 'A minor-seventh', 'B half-diminished', 'E dominant', 'A minor-seventh', 'D minor-seventh', 'G dominant', 'C major-seventh', 'B half-diminished', 'E dominant', 'A minor-seventh', 'D dominant', 'G minor-seventh', 'C dominant', 'D major', 'D minor', 'E dominant', 'A minor-seventh', 'A minor-seventh']\n" ] } ], "prompt_number": 73 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Counting chord changes" ] }, { "cell_type": "code", "collapsed": false, "input": [ "chord_changes = {}\n", "for ind, val in enumerate(chords[:-1]):\n", " transition = \"->\".join([val, chords[ind + 1]])\n", " if transition in chord_changes:\n", " chord_changes[transition] += 1\n", " else:\n", " chord_changes[transition] = 1\n", "chord_changes" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 95, "text": [ "{'A dominant->A dominant': 1,\n", " 'A dominant->D minor': 2,\n", " 'A minor->A dominant': 2,\n", " 'A minor->A minor-seventh': 3,\n", " 'A minor->D minor': 1,\n", " 'A minor->F dominant': 1,\n", " 'A minor->G dominant': 1,\n", " 'A minor-seventh->A minor-seventh': 1,\n", " 'A minor-seventh->B dominant': 1,\n", " 'A minor-seventh->B half-diminished': 1,\n", " 'A minor-seventh->D dominant': 1,\n", " 'A minor-seventh->D minor-seventh': 2,\n", " 'A minor-seventh->F dominant': 2,\n", " 'B dominant->E dominant': 1,\n", " 'B half-diminished->E dominant': 6,\n", " 'C dominant->D major': 1,\n", " 'C major->B half-diminished': 1,\n", " 'C major-seventh->B half-diminished': 1,\n", " 'C major-seventh->F major-seventh': 2,\n", " 'D dominant->G minor-seventh': 1,\n", " 'D major->D minor': 1,\n", " 'D minor->B half-diminished': 1,\n", " 'D minor->E dominant': 7,\n", " 'D minor-seventh->G dominant': 3,\n", " 'E augmented-seventh->E dominant': 1,\n", " 'E dominant->A minor': 7,\n", " 'E dominant->A minor-seventh': 5,\n", " 'E dominant->D minor': 4,\n", " 'E dominant->D minor-seventh': 1,\n", " 'F dominant->E augmented-seventh': 1,\n", " 'F dominant->E dominant': 2,\n", " 'F major-seventh->B half-diminished': 2,\n", " 'G dominant->C major': 1,\n", " 'G dominant->C major-seventh': 3,\n", " 'G minor-seventh->C dominant': 1}" ] } ], "prompt_number": 95 }, { "cell_type": "code", "collapsed": false, "input": [ "occurences = [chord_changes[key] for key in chord_changes]\n", "bar(arange(len(occurences)), occurences)\n", "xticks(0.5 + arange(len(occurences)))\n", "locs, labels = xticks()\n", "xticks(locs, chord_changes.keys(), rotation = 90);" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n" } ], "prompt_number": 96 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Deleting the files on the disk" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "cd files\n", "rm -r tmp/\n", "ls" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "big.txt\n", "Demokratie.jpg\n", "High_tone.wav\n", "Joseph Kosma, English: Johnny Mercer, French: Jacques Prevert - Autumn Leaves.mxl\n", "Low_tone.wav\n", "WiiBoard_data.npy\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "rm: cannot remove \u2018tmp/\u2019: No such file or directory\n" ] } ], "prompt_number": 101 } ], "metadata": {} } ] }