{ "metadata": { "name": "", "signature": "sha256:e638c48220de745993f087e2ef33fa7b80c37414175a92e9db6a7a6b38957cd8" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook visualizes and clusters notes in the original MIDI file (oscar2notes.txt). Later, it goes on to other things with CFG techniques. Note that you do NOT modify the original notes in this notebook (although you might take a subset of those notes).\n", "\n", "Basically, this is an example of what you can do with the (using the originals as the example)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "\n", "from collections import Counter, defaultdict\n", "from sklearn.cluster import KMeans\n", "from sklearn.cluster import AffinityPropagation\n", "from itertools import izip\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "import sys, copy, random" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 99 }, { "cell_type": "code", "collapsed": false, "input": [ "# Import and order the original notes.\n", "oscar2 = pd.read_csv('oscar2notes.txt', skiprows=2)[:].sort(\"Offset\") # only first 50 notes\n", "oscar2.index = xrange(1, len(oscar2) + 1)\n", "oscar2 = oscar2[oscar2.Octave >= 4] # threshold >= octave 4 for melodies\n", "with open('oscar2notes.txt', 'rb') as f:\n", " metmark = float(f.readline())\n", " tsig_num, tsig_den = [i for i in f.readline().replace(' /', '').split()]\n", " \n", "print \"Metrics:\" \n", "print metmark, tsig_num, tsig_den, len(oscar2) # len shorter if octave cutoff, also if [:200] in .read_csv\n", "del oscar2[\"Octave\"]\n", "oscar2 = oscar2.rename(columns = {\"Note/Rest\" : \"Note\"})\n", "oscar2.head(20)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Metrics:\n", "176.0 4 4 1078\n" ] }, { "html": [ "
\n", " | Note | \n", "Len | \n", "Offset | \n", "
---|---|---|---|
2 | \n", "D | \n", "0.750000 | \n", "12.666667 | \n", "
3 | \n", "E | \n", "0.666667 | \n", "14.000000 | \n", "
4 | \n", "C# | \n", "0.875000 | \n", "14.000000 | \n", "
5 | \n", "A | \n", "0.250000 | \n", "15.000000 | \n", "
6 | \n", "F | \n", "3.125000 | \n", "16.000000 | \n", "
7 | \n", "D | \n", "0.250000 | \n", "16.000000 | \n", "
8 | \n", "A | \n", "3.125000 | \n", "16.000000 | \n", "
9 | \n", "F | \n", "1.333333 | \n", "16.000000 | \n", "
10 | \n", "D | \n", "3.000000 | \n", "16.375000 | \n", "
11 | \n", "F | \n", "1.750000 | \n", "17.625000 | \n", "
12 | \n", "G | \n", "0.666667 | \n", "20.625000 | \n", "
13 | \n", "B- | \n", "0.250000 | \n", "20.666667 | \n", "
14 | \n", "E- | \n", "0.625000 | \n", "22.000000 | \n", "
15 | \n", "A | \n", "0.125000 | \n", "22.000000 | \n", "
17 | \n", "G | \n", "0.375000 | \n", "22.000000 | \n", "
18 | \n", "B- | \n", "0.875000 | \n", "23.875000 | \n", "
19 | \n", "F | \n", "1.250000 | \n", "23.875000 | \n", "
20 | \n", "B- | \n", "1.250000 | \n", "25.500000 | \n", "
21 | \n", "D | \n", "0.750000 | \n", "28.625000 | \n", "
22 | \n", "B | \n", "1.375000 | \n", "28.625000 | \n", "
20 rows \u00d7 3 columns
\n", "\n", " | Labels | \n", "Note | \n", "X-Coords | \n", "Y-Coords | \n", "
---|---|---|---|---|
0 | \n", "5 | \n", "D | \n", "12.666667 | \n", "0.750000 | \n", "
1 | \n", "5 | \n", "E | \n", "14.000000 | \n", "0.666667 | \n", "
2 | \n", "5 | \n", "C# | \n", "14.000000 | \n", "0.875000 | \n", "
3 | \n", "5 | \n", "A | \n", "15.000000 | \n", "0.250000 | \n", "
4 | \n", "5 | \n", "F | \n", "16.000000 | \n", "3.125000 | \n", "
5 rows \u00d7 4 columns
\n", "\n", " | Labels | \n", "Note | \n", "X-Coords | \n", "Y-Coords | \n", "
---|---|---|---|---|
0 | \n", "14 | \n", "D | \n", "12.666667 | \n", "0.750000 | \n", "
1 | \n", "14 | \n", "E | \n", "14.000000 | \n", "0.666667 | \n", "
2 | \n", "14 | \n", "C# | \n", "14.000000 | \n", "0.875000 | \n", "
3 | \n", "14 | \n", "A | \n", "15.000000 | \n", "0.250000 | \n", "
4 | \n", "14 | \n", "F | \n", "16.000000 | \n", "3.125000 | \n", "
5 | \n", "14 | \n", "D | \n", "16.000000 | \n", "0.250000 | \n", "
6 | \n", "14 | \n", "A | \n", "16.000000 | \n", "3.125000 | \n", "
7 | \n", "14 | \n", "F | \n", "16.000000 | \n", "1.333333 | \n", "
8 | \n", "14 | \n", "D | \n", "16.375000 | \n", "3.000000 | \n", "
9 | \n", "14 | \n", "F | \n", "17.625000 | \n", "1.750000 | \n", "
10 | \n", "14 | \n", "G | \n", "20.625000 | \n", "0.666667 | \n", "
11 | \n", "14 | \n", "B- | \n", "20.666667 | \n", "0.250000 | \n", "
12 | \n", "14 | \n", "E- | \n", "22.000000 | \n", "0.625000 | \n", "
13 | \n", "14 | \n", "A | \n", "22.000000 | \n", "0.125000 | \n", "
14 | \n", "14 | \n", "G | \n", "22.000000 | \n", "0.375000 | \n", "
15 | \n", "14 | \n", "B- | \n", "23.875000 | \n", "0.875000 | \n", "
16 | \n", "14 | \n", "F | \n", "23.875000 | \n", "1.250000 | \n", "
17 | \n", "14 | \n", "B- | \n", "25.500000 | \n", "1.250000 | \n", "
18 | \n", "14 | \n", "D | \n", "28.625000 | \n", "0.750000 | \n", "
19 | \n", "14 | \n", "B | \n", "28.625000 | \n", "1.375000 | \n", "
20 | \n", "14 | \n", "G# | \n", "28.625000 | \n", "0.250000 | \n", "
21 | \n", "14 | \n", "D | \n", "28.625000 | \n", "1.250000 | \n", "
22 | \n", "14 | \n", "B- | \n", "28.666667 | \n", "0.125000 | \n", "
23 | \n", "14 | \n", "G# | \n", "29.250000 | \n", "0.375000 | \n", "
24 | \n", "14 | \n", "C | \n", "30.000000 | \n", "0.666667 | \n", "
25 | \n", "14 | \n", "D | \n", "30.000000 | \n", "0.250000 | \n", "
26 | \n", "14 | \n", "B- | \n", "30.875000 | \n", "0.250000 | \n", "
27 | \n", "14 | \n", "E | \n", "31.500000 | \n", "3.375000 | \n", "
28 | \n", "14 | \n", "C | \n", "31.500000 | \n", "3.625000 | \n", "
29 | \n", "14 | \n", "C | \n", "31.625000 | \n", "3.500000 | \n", "
30 rows \u00d7 4 columns
\n", "