Commit 528ac1fd authored by Steve Tjoa's avatar Steve Tjoa

factored more out of lab 3: mfccs, segmentation, etc.

parent 4fcb48c6
{
"metadata": {
"name": "",
"signature": "sha256:fee871f8d8f5b66df2844daf79ffb4871bb3968bdedf0dfc5fe58bc2ef4bc7b6"
"signature": "sha256:1b40a8d8876543c0c76b15b5f61ce11a51ef19462649aca9f838b884ea509d9d"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"CCRMA Workshop on Music Information Retrieval"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Table of Contents"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"CCRMA Workshop on Music Information Retrieval\n",
"=============================================\n",
"\n",
"Table of Contents\n",
"-----------------\n",
"\n",
"### Introduction\n",
"\n",
"- [About This Workshop](notebooks/about_this_workshop.ipynb)\n",
"\n",
"- [Getting Good at IPython](notebooks/get_good_at_ipython.ipynb)\n",
"\n",
"- [Using Audio in IPython](notebooks/ipython_audio.ipynb)\n",
"\n",
"### Day 1\n",
"\n",
"- [Python Basics](notebooks/python_basics.ipynb)\n",
"- [NumPy, SciPy, Matplotlib Basics](notebooks/numpy_basics.ipynb)"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Day 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. [Onset Detection](notebooks/)\n",
"\n",
"1. [Basic Segmentation and Feature Extraction](notebooks/)\n",
"\n",
"1. [Example: Zero-Crossing Rate](notebooks/zcr.ipynb)\n",
"\n",
"1. [Segmentation](notebooks/segmentation.ipynb)\n",
"1. [Feature Extraction](notebooks/feature_extraction.ipynb)\n",
"1. [Spectral Features](notebooks/spectral_features.ipynb)\n",
"\n",
"1. [K-Nearest Neighbor](notebooks/knn.ipynb)\n",
"\n",
"### Day 2\n",
"\n",
"1. [K-Nearest Neighbor](notebooks/knn.ipynb)"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Other Topics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. [Segmentation](notebooks/)\n",
"\n",
"1. [Mel-Frequency Ceptral Coefficients](notebooks/mfcc.ipynb)\n",
"\n",
"1. [Cross Validation](notebooks/cross_validation.ipynb)\n",
"\n",
"### Day 3\n",
"\n",
"1. [Cross Validation](notebooks/cross_validation.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. [Unsupervised Classification]()\n",
"\n",
"### Day 4\n",
"\n",
"1. [Nonnegative Matrix Factorization](notebooks/nmf.ipynb)\n",
"\n",
"1. [Source Separation]()\n",
"\n",
"### Day 5\n"
"1. [Source Separation]()\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
......
{
"metadata": {
"name": "",
"signature": "sha256:b2601021bd013cb3fdcacb2e0157136ad11d85f587ddf0ff2b13b65d9283ef7f"
"signature": "sha256:cd4472e8ac0f4f801a3205494dfe44e1ada8a471f6bfeab2687bc72cc86c3a63"
},
"nbformat": 3,
"nbformat_minor": 0,
......@@ -34,6 +34,39 @@
"- 2014: Jay LeBoeuf, Leigh Smith, Steve Tjoa\n"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Guest Lecturers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 2011: Rebecca Fiebrink, Doug Eck, George Tzanetakis\n",
"- 2012: Oscar Celma, Michael Mandel\n",
"- 2013: Ching-Wei Chen, Nick Bryan, Gautham Mysore\n",
"- 2014: Stephen Pope, Andreas Ehmann"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Alumni"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 2011: Chris Colatos, Jeff Albert, Kamlesh Lakshminarayanan, Sean Zhang, Eli Stine, David Bird, Gina Collecchia, Dekun Zou, Bill Paseman, John Amuedo"
]
},
{
"cell_type": "markdown",
"metadata": {},
......
{
"metadata": {
"name": "",
"signature": "sha256:cbc1af750af498ef85f3815ac440eb10487c54a254b406dbbf0718013c11351e"
"signature": "sha256:fe5d5ea456808e1b6dd737e475dd01bba7fbb7d6f6cf84dcd06530bf14c53a05"
},
"nbformat": 3,
"nbformat_minor": 0,
......@@ -85,55 +85,6 @@
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Segment this file into 100ms frames based on the onsets.\n",
"\n",
"Now, feature extract the frames using only zero crossing and centroid. Store the feature values in one matrix for both the kick and the snares\u2026 remember, we don't care about the labels with clustering - we just want to create some clustered groups of data."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from essentia.standard import MFCC, Spectrum, Windowing, FrameGenerator\n",
"hamming_window = Windowing(type='hamming')\n",
"spectrum = Spectrum() # FFT() would return the complex FFT, here we just want the magnitude spectrum\n",
"mfcc = MFCC()\n",
"\n",
"mfccs = array([mfcc(spectrum(hamming_window(frame)))[1]\n",
" for frame in FrameGenerator(simple_loop, frameSize=1024, hopSize = 512)])\n",
"\n",
"imshow(mfccs[1:,:].T, origin='lower', aspect='auto')\n",
"ylabel('MFCC Coefficient Index')\n",
"xlabel('Frame Index')\n",
"#show() # unnecessary if you started \"ipython --pylab\"\n",
"#print mfccs"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"<matplotlib.text.Text at 0x44c3dd0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x44be950>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -316,98 +267,6 @@
"\n",
"This hopefully provides you with which files are representative of your cluster. "
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Distances"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from scipy.spatial import distance\n",
"print distance.euclidean([0, 0], [3, 4])\n",
"print distance.sqeuclidean([0, 0], [3, 4])\n",
"print distance.cityblock([0, 0], [3, 4])\n",
"print distance.chebyshev([0, 0], [3, 4])\n",
"print distance.cosine([1, 0], [0, 99])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"5.0\n",
"25\n",
"7\n",
"4\n",
"1.0\n"
]
}
],
"prompt_number": 23
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Sorting"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = randn(5)\n",
"print x\n",
"x.sort()\n",
"print x"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 1.62935544 0.94413054 -0.87221347 0.3706405 -0.89390489]\n",
"[-0.89390489 -0.87221347 0.3706405 0.94413054 1.62935544]\n"
]
}
],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = randn(5)\n",
"print x\n",
"ind = argsort(x)\n",
"print ind\n",
"print x[ind]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.84735591 -0.5848496 0.83377041 1.79434528 0.25275051]\n",
"[1 4 2 0 3]\n",
"[-0.5848496 0.25275051 0.83377041 0.84735591 1.79434528]\n"
]
}
],
"prompt_number": 38
}
],
"metadata": {}
......
{
"metadata": {
"name": "",
"signature": "sha256:6d4d8f02ec3a6e31bac7c35b68acdd27227e96b152d2e69d76283b9c7e1b31a5"
"signature": "sha256:26be3747209e886db08a0058c8a09bc10e73e0f751c2a409d339ea69f4a6124c"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Spectral Features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Spectral Features\n",
"-----------------\n",
"\n",
"For classification, we're going to be using the new features in our arsenal: cherishing those \"spectral moments\" (centroid, bandwidth, skewness, kurtosis) and also examining other spectral statistics."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Training Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Training Data\n",
"\n",
"First off, we want to analyze and feature extract a small collection of audio samples - storing their feature data as our \"training data\". The commands below read all of the drum example .wav files from the MIR web site into an array, snareFileList. \n",
"First, we want to analyze and feature extract a small collection of audio samples - storing their feature data as our \"training data\". The commands below read all of the drum example .wav files from the MIR web site into an array, snareFileList. \n",
"\n",
"First we define a function to retrieve a list of URLs from a text file."
"Let's define a function to retrieve a list of URLs from a text file."
]
},
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment