{ "metadata": { "name": "Marsyas" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Marsyas Tutorial" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Documentation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://marsyas.info/assets/docs/\n", "\n", "But many things are missing. Maybe you can help?\n", "\n", "The Marsyas API docs can be found here:\n", "\n", "http://marsyas.info/assets/docs/sourceDoc/html/index.html\n", "\n", "You can also build the documentation for your source version using:\n", "\n", " make docs" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Command line utilities" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ls /home/andres/Documents/src/marsyas/build/bin" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\u001b[0m\u001b[01;32maim\u001b[0m* \u001b[01;32mextractMoodFeatures\u001b[0m* \u001b[01;32mkea\u001b[0m* \u001b[01;32mmarsyas-latency-test\u001b[0m* \u001b[01;32mmudbox\u001b[0m* \u001b[01;32mpeakClustering\u001b[0m* \u001b[01;32mpitchdtw\u001b[0m* \u001b[01;32msfinfo\u001b[0m* sources.mf \u001b[01;32mWHaSp\u001b[0m*\r\n", "\u001b[01;32maudioCompare\u001b[0m* \u001b[01;32mextractRhythmFeatures\u001b[0m* \u001b[01;32mMarGrid\u001b[0m* \u001b[01;32mmarsyas-run\u001b[0m* \u001b[01;32mnextract\u001b[0m* \u001b[01;32mpeakClustering2\u001b[0m* \u001b[01;32mpitchdtw_pair\u001b[0m* \u001b[01;32msfplay\u001b[0m* \u001b[01;32mspeakerSeg\u001b[0m* \u001b[01;32mwreckBeach\u001b[0m*\r\n", "\u001b[01;32mbextract\u001b[0m* \u001b[01;32mhelloWorld\u001b[0m* \u001b[01;32mmarsyas-debug\u001b[0m* \u001b[01;32mmirex_extract\u001b[0m* \u001b[01;32momRms\u001b[0m* \u001b[01;32mpeakClusteringEval\u001b[0m* \u001b[01;32mpitchextract\u001b[0m* \u001b[01;32msfplugin\u001b[0m* \u001b[01;32mspeakerSeg2\u001b[0m*\r\n", "bextract_single.mf helloworld.wav MARSYAS_EMPTYMARSYAS_EMPTY \u001b[01;32mmirex_train_and_predict\u001b[0m* \u001b[01;32monsets\u001b[0m* \u001b[01;32mpeakSynth\u001b[0m* \u001b[01;32mrecord\u001b[0m* \u001b[01;32msound2png\u001b[0m* \u001b[01;32mtempo\u001b[0m*\r\n", "\u001b[01;32mextractBassFeatures\u001b[0m* \u001b[01;32mibt\u001b[0m* MARSYAS_EMPTYmfcc.arff \u001b[01;32mmkcollection\u001b[0m* \u001b[01;32morcarecord\u001b[0m* \u001b[01;32mphasevocoder\u001b[0m* \u001b[01;32mrhythmMap\u001b[0m* \u001b[01;32msound2sound\u001b[0m* \u001b[01;32mvirtualsensor\u001b[0m*\r\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import sys\n", "sys.path.append('/home/andres/Documents/src/marsyas/build/bin')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can run shell commands in ipython with '!'" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!onsets -h" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "onsets, MARSYAS, Copyright George Tzanetakis \r\n", "--------------------------------------------------------\r\n", "Detect the onsets in the sound file provided as argument\r\n", "\r\n", "Usage : onsetsfileName\r\n", "\r\n", "where file is a sound file in a Marsyas supported format\r\n", "Help Options:\r\n", "-u --usage : display short usage info\r\n", "-h --help : display this information \r\n", "-v --verbose : verbose output \r\n", "-as --audiosynth: synthesize onsets and mix with original sound\r\n", "-th --threshold : a positive floating number for thresholding the novelty function\r\n", "-co --confidence : output confidence of onsets\r\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "!onsets 'sources/Dire Straits - Walk of life.wav' > wof_onsets.txt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('wof_onsets.txt')\n", "lines = f.readlines()\n", "print lines[:5]\n", "print lines[-5:]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['Marsyas onset detection\\n', 'fname0 = sources/Dire Straits - Walk of life.wav\\n', 'Sampling rate = 44100\\n', '0.510839\\n', '0.661769\\n']" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "['234.986\\n', '235.195\\n', '235.265\\n', '295.149\\n', 'Done writing Dire Straits - Walk of life.output\\n']\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "onsets = [float(val) for val in lines[3:-1]]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "onsets[0], onsets[-1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 7, "text": [ "(0.510839, 295.149)" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(diff(onsets))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(diff(onsets)[:-1])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nCCIJ+P+90zTaxBEY8wAAAABJRU5ErkJggg==\n" } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(diff(onsets)[:-1])\n", "hlines(diff(onsets)[:-1].mean(), 300, 500)\n", "hlines(diff(onsets)[:-1].mean()* 2, 300, 500)\n", "hlines(diff(onsets)[:-1].mean()/ 2, 300, 500)\n", "xlim(300, 500)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "(300, 500)" ] }, { "output_type": "display_data", "png": "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\nTkSuQmCC\n" } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Other extractor programs read \"collections\" so we must first make one:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!mkcollection -c sources.mf -l sources \"/home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Writing collectionName = sources into file sources.mf\r\n", "Adding Contents of Directory = /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/\r\n", " to collection sources.mf\r\n", "Adding directory entry Dire Straits - Walk of life.wav\r\n", "Adding directory entry passport.wav\r\n", "Adding directory entry Dire Straits - Walk of life.mp3\r\n", "Adding directory entry THX.wav\r\n", "Adding directory entry Bob Dylan - Canadee-I-O.mp3\r\n", "Adding directory entry Messiaen-Turangalila4.mp3\r\n", "Adding directory entry 04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Adding directory entry 180451__iluppai__alto-saxophone-solo.wav\r\n", "Adding directory entry Led Zeppelin - Rock And Roll.mp3\r\n", "Adding directory entry 109193__juskiddink__leq-acappella.wav\r\n", "Adding directory entry Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Adding directory entry superstition.wav\r\n", "Adding directory entry Palestrina-Gloria.mp3\r\n", "Adding directory entry 32804__johnwally__solo-man.wav\r\n", "Adding directory entry Stevie Wonder - Superstition.mp3\r\n", "Adding directory entry Bob Marley - Buffalo Soldier.mp3\r\n", "Wrote collection sources.mf\r\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's run the *bextract* utility" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!bextract -h" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "bextract, MARSYAS, Copyright George Tzanetakis \r\n", "--------------------------------------------\r\n", "Prints information about the sound files provided as arguments \r\n", "\r\n", "Usage : bextract file1 file2 file3\r\n", "\r\n", "where file1, ..., fileN are sound files in a Marsyas supported format\r\n", "Help Options:\r\n", "-u --usage : display short usage info\r\n", "-v --verbose : verbose output\r\n", "-c --collection : use files in this collection [only for MIREX 2007]\r\n", "-n --normalize : enable normalization\r\n", "-as --accSize : accumulator size\r\n", "-cl --classifier : classifier name\r\n", "-pr --predict : predict class for files in collection\r\n", "-fe --featExtract : only extract features\r\n", "-tc --test : test collection\r\n", "-st --stereo : use stereo feature extraction\r\n", "-ds --downsample : downsampling factor\r\n", "-h --help : display this information \r\n", "-e --extractor : extractor \r\n", "-p --plugin : output plugin name \r\n", "-pm --pluginmute : mute the plugin \r\n", "-csv --csvoutput : output confidence values in sfplugin in csv format\r\n", "-pb --playback : playback during feature extraction \r\n", "-s --start : playback start offset in seconds \r\n", "-sh --shuffle : shuffle collection file before processing\r\n", "-l --length : playback length in seconds \r\n", "-m --memory : memory size \r\n", "-w --wekafile : weka .arff filename \r\n", "-od --outputdir : output directory for output of files\r\n", "-ws --windowsize : analysis window size in samples \r\n", "-hp --hopsize : analysis hop size in samples \r\n", "-t --timeline : flag 2nd input collection as timelines for the 1st collection\r\n", "-os --onlyStable : only output 'stable' frames (silently omit the rest)\r\n", "-rg --regression : print regression labels instead of classification labels\r\n", "\r\n", "Available extractors: \r\n", "---------------------\r\n", "BEAT: Beat histogram features\r\n", "LPCC: LPC derived Cepstral coefficients \r\n", "LSP: Linear Spectral Pairs\r\n", "MFCC: Mel-frequency Cepstral Coefficients \r\n", "MPL_FILE: not yet implemented...\r\n", "REFACTORED: Dummy extractor for refactored bextract\r\n", "SCF: Spectral Crest Factor (MPEG-7)\r\n", "SFM: Spectral Flatness Measure (MPEG-7)\r\n", "SFMSCF: SCF and SFM features\r\n", "STFT: Centroid, Rolloff, Flux, ZeroCrossings \r\n", "STFTMFCC: Centroid, Rolloff Flux, ZeroCrossings, Mel-frequency Cepstral Coefficients\r\n", "\r\n", "NOTE:\r\n", "All extractors calculate means and variances over a memory size window\r\n", "SV can be appended in front of any extractor to extract a single vector (mean, variances) over a 30-second clip (for example SVSTFT) \r\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Only extract features (-fe) (i.e. no machine learning or plugin generation for classification), extract MFCCs (-mfcc), and output WEKA file *mfccs.arff*" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!bextract -fe -mfcc -w mfcc.arff sources.mf" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\r\n", "Window Size (in samples): 512\r\n", "Hop Size (in samples): 512\r\n", "Memory Size (in analysis windows):20\r\n", "Accumulator size (in analysis windows):20000\r\n", "\r\n", "Extractor = REFACTORED\r\n", "\r\n", "collectionName = MARSYAS_EMPTY\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "wekafname = MARSYAS_EMPTYmfcc.arff\r\n", "Downsampling factor = 1\r\n", "Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Finished feature extraction\r\n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "ls" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Audio Features IIIa-Pitch.ipynb~ Audio File IO.ipynb Graphing with pylab.ipynb mfcc_python.arff Python Basics.ipynb testout.wav\r\n", "Audio Features IIIa-Tempo.ipynb Beat_histogram.png MARSYAS_EMPTYMARSYAS_EMPTY mfcc.sig \u001b[0m\u001b[01;34msources\u001b[0m/ wof_onsets.txt\r\n", "Audio Features IIIb-Pitch.ipynb beat_hist.png MARSYAS_EMPTYmfcc.arff ms.mpl \u001b[01;34msources2\u001b[0m/ wtk1-prelude1.mid\r\n", "Audio Features IIIb-Pitch.ipynb~ bextract_python.arff MARSYAS_EMPTYms.arff output.pdf sources2.mf\r\n", "Audio Features II.ipynb~ bextract_single.mf Marsyas.ipynb outtest_scipy.wav sources.mf\r\n", "Audio Features I.ipynb Dire Straits - Walk of life.output mfccaggr.sig out.txt Symbolic MIR Using Music21.ipynb\r\n", "Audio Features II-Temporal and Spectral.ipynb Feature summary and analysis.ipynb mfccframes.txt passport.wav testout2.wav\r\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we need a WEKA file reader!\n", "\n", "http://www.cs.waikato.ac.nz/ml/weka/" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import arff" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can get *arff* from [https://pypi.python.org/pypi/arff](https://pypi.python.org/pypi/arff) or by running:\n", "\n", " sudo pip install arff" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs = arff.load('MARSYAS_EMPTYmfcc.arff')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gets us a \"generator\" object" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 18, "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which we need to turn into actual data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs = list(mfccs)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "len(mfccs)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 20, "text": [ "40354" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "But then each element is a \"Row\" object!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 21, "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So it's actually better to do it like this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs = []\n", "for row in arff.load('MARSYAS_EMPTYmfcc.arff'):\n", " mfccs.append(list(row)[1:14])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "imshow(array(mfccs).T, aspect='auto', interpolation='nearest')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 23, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nk5TNHQAAAABJRU5ErkJggg==\n" } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that these are the MFCCs for all pieces combined together!\n", "\n", "This makes sense as these MFCCs are meant as training data for a classifier (i.e. it doesn't matter where they come from, they belong to the same category)\n", "\n", "To create a classification \"plugin\":" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!bextract sources.mf -w ms.arff -p ms.mpl -cl GS" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\r\n", "Window Size (in samples): 512\r\n", "Hop Size (in samples): 512\r\n", "Memory Size (in analysis windows):20\r\n", "Accumulator size (in analysis windows):20000\r\n", "\r\n", "Extractor = REFACTORED\r\n", "\r\n", "collectionName = MARSYAS_EMPTY\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "wekafname = MARSYAS_EMPTYms.arff\r\n", "classifierName = GS\r\n", "Downsampling factor = 1\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Finished feature extraction\r\n", "Finished classifier training\r\n" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have a plugin called *ms.mpl*.\n", "\n", "To use it:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ls" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Audio Features IIIa-Pitch.ipynb~ Audio File IO.ipynb Graphing with pylab.ipynb mfcc_python.arff Python Basics.ipynb testout.wav\r\n", "Audio Features IIIa-Tempo.ipynb Beat_histogram.png MARSYAS_EMPTYMARSYAS_EMPTY mfcc.sig \u001b[0m\u001b[01;34msources\u001b[0m/ wof_onsets.txt\r\n", "Audio Features IIIb-Pitch.ipynb beat_hist.png MARSYAS_EMPTYmfcc.arff ms.mpl \u001b[01;34msources2\u001b[0m/ wtk1-prelude1.mid\r\n", "Audio Features IIIb-Pitch.ipynb~ bextract_python.arff MARSYAS_EMPTYms.arff output.pdf sources2.mf\r\n", "Audio Features II.ipynb~ bextract_single.mf Marsyas.ipynb outtest_scipy.wav sources.mf\r\n", "Audio Features I.ipynb Dire Straits - Walk of life.output mfccaggr.sig out.txt Symbolic MIR Using Music21.ipynb\r\n", "Audio Features II-Temporal and Spectral.ipynb Feature summary and analysis.ipynb mfccframes.txt passport.wav testout2.wav\r\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "!sfplugin -h" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "sfplugin, MARSYAS, Copyright George Tzanetakis \r\n", "--------------------------------------------\r\n", "Prints information about the sound files provided as arguments \r\n", "\r\n", "Usage : sfplugin[-c collection] file1 file2 file3\r\n", "\r\n", "where file1, ..., fileN are sound files in a Marsyas supported format\r\n", "Help Options:\r\n", "-u --usage : display short usage info\r\n", "-h --help : display this information \r\n", "-v --verbose : verbose output \r\n", "-g --gain : linear volume gain \r\n", "-sa --start : playback start offset in seconds \r\n", "-ln --length : playback length in seconds \r\n", "-pl --plugin : plugin file \r\n", "-o --output : output file \r\n", "-r --repetitions : number of repetitions \r\n", "-pm --pluginMute : don't play audio \r\n", "[MRSERR] Unknown MarSystemType\r\n", "[MRSERR] skipstr = \r\n", "Manager could not load MarSystem from plugin file\r\n" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "!sfplugin -pl ms.mpl sources/superstition.wav" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] AudioSink: buffer underrun!\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.000\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.464\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.929\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.393\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.858\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.322\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.786\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.251\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.715\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.180\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.644\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.108\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.573\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.037\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.502\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "^C\r\n" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "!mkcollection -c sources2.mf -l sources2 \"/home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Writing collectionName = sources2 into file sources2.mf\r\n", "Adding Contents of Directory = /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/\r\n", " to collection sources2.mf\r\n", "Adding directory entry turangalila_excerpt.wav\r\n", "Wrote collection sources2.mf\r\n" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "!bextract sources.mf sources2.mf -p ms.mpl -cl GS" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\r\n", "Window Size (in samples): 512\r\n", "Hop Size (in samples): 512\r\n", "Memory Size (in analysis windows):20\r\n", "Accumulator size (in analysis windows):20000\r\n", "\r\n", "Extractor = REFACTORED\r\n", "\r\n", "collectionName = MARSYAS_EMPTY\r\n", "wekafname = MARSYAS_EMPTYMARSYAS_EMPTY\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "classifierName = GS\r\n", "Downsampling factor = 1\r\n", "Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3\r\n", "Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\r\n", "Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3\r\n", "Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3\r\n", "Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3\r\n", "Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3\r\n", "[MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3\r\n", "Processing: 16 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/turangalila_excerpt.wav\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Finished feature extraction\r\n", "Finished classifier training\r\n" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "!sfplugin -pl ms.mpl sources2/turangalila_excerpt.wav" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] AudioSink: buffer underrun!\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.000\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.464\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.929\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.393\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.858\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.322\tPR = sources\t52\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.786\tPR = sources2\t100\t0.8571\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.251\tPR = sources2\t100\t0.7500\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.715\tPR = sources2\t57\t0.6667\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.180\tPR = sources2\t68\t0.6000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.644\tPR = sources2\t70\t0.5455\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.108\tPR = sources2\t100\t0.5000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.573\tPR = sources2\t100\t0.4615\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.037\tPR = sources2\t100\t0.4286\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.502\tPR = sources2\t85\t0.4000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.966\tPR = sources\t80\t0.4375\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7.430\tPR = sources\t65\t0.4706\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "7.895\tPR = sources2\t90\t0.4444\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8.359\tPR = sources2\t68\t0.4211\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "8.824\tPR = sources2\t100\t0.4000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9.288\tPR = sources\t57\t0.4286\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "9.752\tPR = sources2\t98\t0.4091\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10.217\tPR = sources2\t100\t0.3913\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "10.681\tPR = sources2\t60\t0.3750\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11.146\tPR = sources2\t100\t0.3600\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "11.610\tPR = sources2\t88\t0.3462\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12.074\tPR = sources2\t100\t0.3333\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "12.539\tPR = sources2\t70\t0.3214\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "13.003\tPR = sources\t72\t0.3448\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "^C\r\n" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "!sfplugin -pl ms.mpl sources/passport.wav" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[MRS_WARNING] AudioSink: buffer underrun!\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.000\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.464\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.929\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.393\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1.858\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.322\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2.786\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.251\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "3.715\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.180\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "4.644\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.108\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "5.573\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.037\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.502\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "6.966\tPR = sources\t100\t1.0000\t GT = sources\r\n" ] } ], "prompt_number": 32 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Using the Marsyas API" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Marsyas is stream-based/declarative, so you connect modules in a graph which you then run." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import marsyas" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "mng = marsyas.MarSystemManager()\n", "fnet = mng.create(\"Series\", \"featureNetwork\")\n", "\n", "# functional short cuts to speed up typing \n", "create = mng.create\n", "add = fnet.addMarSystem \n", "link = fnet.linkControl\n", "upd = fnet.updControl\n", "get = fnet.getControl\n", "\n", "# Add the MarSystems \n", "add(create(\"SoundFileSource\", \"src\"))\n", "add(create(\"TimbreFeatures\", \"featExtractor\"))\n", "add(create(\"TextureStats\", \"tStats\"))\n", "add(create(\"Annotator\", \"annotator\"))\n", "add(create(\"WekaSink\", \"wsink\"))\n", "\n", "# link the controls to coordinate things\n", "link(\"mrs_string/filename\", \"SoundFileSource/src/mrs_string/filename\")\n", "link(\"mrs_bool/hasData\", \"SoundFileSource/src/mrs_bool/hasData\")\n", "link(\"WekaSink/wsink/mrs_string/currentlyPlaying\",\"SoundFileSource/src/mrs_string/currentlyPlaying\")\n", "link(\"Annotator/annotator/mrs_natural/label\", \"SoundFileSource/src/mrs_natural/currentLabel\")\n", "link(\"SoundFileSource/src/mrs_natural/nLabels\", \"WekaSink/wsink/mrs_natural/nLabels\")\n", "\n", "# update controls to setup things \n", "upd(\"TimbreFeatures/featExtractor/mrs_string/disableTDChild\", marsyas.MarControlPtr.from_string(\"all\"))\n", "upd(\"TimbreFeatures/featExtractor/mrs_string/disableLPCChild\", marsyas.MarControlPtr.from_string(\"all\"))\n", "upd(\"TimbreFeatures/featExtractor/mrs_string/disableSPChild\", marsyas.MarControlPtr.from_string(\"all\"))\n", "upd(\"TimbreFeatures/featExtractor/mrs_string/enableSPChild\", marsyas.MarControlPtr.from_string(\"MFCC/mfcc\"))\n", "upd(\"mrs_string/filename\", marsyas.MarControlPtr.from_string(\"sources.mf\"))\n", "upd(\"WekaSink/wsink/mrs_string/labelNames\", \n", "\t\t\t get(\"SoundFileSource/src/mrs_string/labelNames\"))\n", "upd(\"WekaSink/wsink/mrs_string/filename\", marsyas.MarControlPtr.from_string(\"mfcc_python.arff\"))\n", "\n", "# do the processing extracting MFCC features and writing to weka file \n", "previouslyPlaying = \"\"\n", "while get(\"SoundFileSource/src/mrs_bool/hasData\").to_bool():\n", "\tcurrentlyPlaying = get(\"SoundFileSource/src/mrs_string/currentlyPlaying\").to_string()\n", "\tif (currentlyPlaying != previouslyPlaying):\n", "\t\tprint \"Processing: \" + get(\"SoundFileSource/src/mrs_string/currentlyPlaying\").to_string()\n", "\t\t\n", "\tfnet.tick()\n", "\t\n", "\tpreviouslyPlaying = currentlyPlaying" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav\n", "Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "mfccs = []\n", "for row in arff.load('mfcc_python.arff'):\n", " mfccs.append(list(row)[1:14])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "imshow(array(mfccs).T, interpolation='nearest', aspect='auto')\n", "colorbar()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 36, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nEEKExP8HdVne3bNkUDYAAAAASUVORK5CYII=\n" } ], "prompt_number": 36 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Marsyas scripting language" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Marsyas can be used interactively:\n", "\n", "http://marsyas.info/assets/docs/manual/marsyas-user/msl.html#msl" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By Andr\u00e9s Cabrera mantaraya36@gmail.com\n", "\n", "For course MAT 240E at UCSB\n", "\n", "This ipython notebook is licensed under the CC-BY-NC-SA license: http://creativecommons.org/licenses/by-nc-sa/4.0/\n", "\n", "![http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)" ] } ], "metadata": {} } ] }