http://marsyas.info/assets/docs/
But many things are missing. Maybe you can help?
The Marsyas API docs can be found here:
http://marsyas.info/assets/docs/sourceDoc/html/index.html
You can also build the documentation for your source version using:
make docs
ls /home/andres/Documents/src/marsyas/build/bin
aim* extractMoodFeatures* kea* marsyas-latency-test* mudbox* peakClustering* pitchdtw* sfinfo* sources.mf WHaSp* audioCompare* extractRhythmFeatures* MarGrid* marsyas-run* nextract* peakClustering2* pitchdtw_pair* sfplay* speakerSeg* wreckBeach* bextract* helloWorld* marsyas-debug* mirex_extract* omRms* peakClusteringEval* pitchextract* sfplugin* speakerSeg2* bextract_single.mf helloworld.wav MARSYAS_EMPTYMARSYAS_EMPTY mirex_train_and_predict* onsets* peakSynth* record* sound2png* tempo* extractBassFeatures* ibt* MARSYAS_EMPTYmfcc.arff mkcollection* orcarecord* phasevocoder* rhythmMap* sound2sound* virtualsensor*
import sys
sys.path.append('/home/andres/Documents/src/marsyas/build/bin')
You can run shell commands in ipython with '!'
!onsets -h
onsets, MARSYAS, Copyright George Tzanetakis -------------------------------------------------------- Detect the onsets in the sound file provided as argument Usage : onsetsfileName where file is a sound file in a Marsyas supported format Help Options: -u --usage : display short usage info -h --help : display this information -v --verbose : verbose output -as --audiosynth: synthesize onsets and mix with original sound -th --threshold : a positive floating number for thresholding the novelty function -co --confidence : output confidence of onsets
!onsets 'sources/Dire Straits - Walk of life.wav' > wof_onsets.txt
f = open('wof_onsets.txt')
lines = f.readlines()
print lines[:5]
print lines[-5:]
['Marsyas onset detection\n', 'fname0 = sources/Dire Straits - Walk of life.wav\n', 'Sampling rate = 44100\n', '0.510839\n', '0.661769\n'] ['234.986\n', '235.195\n', '235.265\n', '295.149\n', 'Done writing Dire Straits - Walk of life.output\n']
onsets = [float(val) for val in lines[3:-1]]
onsets[0], onsets[-1]
(0.510839, 295.149)
plot(diff(onsets))
[<matplotlib.lines.Line2D at 0x2c20a50>]
plot(diff(onsets)[:-1])
[<matplotlib.lines.Line2D at 0x2e21650>]
plot(diff(onsets)[:-1])
hlines(diff(onsets)[:-1].mean(), 300, 500)
hlines(diff(onsets)[:-1].mean()* 2, 300, 500)
hlines(diff(onsets)[:-1].mean()/ 2, 300, 500)
xlim(300, 500)
(300, 500)
Other extractor programs read "collections" so we must first make one:
!mkcollection -c sources.mf -l sources "/home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/"
Writing collectionName = sources into file sources.mf Adding Contents of Directory = /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/ to collection sources.mf Adding directory entry Dire Straits - Walk of life.wav Adding directory entry passport.wav Adding directory entry Dire Straits - Walk of life.mp3 Adding directory entry THX.wav Adding directory entry Bob Dylan - Canadee-I-O.mp3 Adding directory entry Messiaen-Turangalila4.mp3 Adding directory entry 04 - Brandenburg Concerto No. 5_ I. Allegro.mp3 Adding directory entry 180451__iluppai__alto-saxophone-solo.wav Adding directory entry Led Zeppelin - Rock And Roll.mp3 Adding directory entry 109193__juskiddink__leq-acappella.wav Adding directory entry Isaac Hayes - Out Of The Ghetto.mp3 Adding directory entry superstition.wav Adding directory entry Palestrina-Gloria.mp3 Adding directory entry 32804__johnwally__solo-man.wav Adding directory entry Stevie Wonder - Superstition.mp3 Adding directory entry Bob Marley - Buffalo Soldier.mp3 Wrote collection sources.mf
Now let's run the bextract utility
!bextract -h
bextract, MARSYAS, Copyright George Tzanetakis -------------------------------------------- Prints information about the sound files provided as arguments Usage : bextract file1 file2 file3 where file1, ..., fileN are sound files in a Marsyas supported format Help Options: -u --usage : display short usage info -v --verbose : verbose output -c --collection : use files in this collection [only for MIREX 2007] -n --normalize : enable normalization -as --accSize : accumulator size -cl --classifier : classifier name -pr --predict : predict class for files in collection -fe --featExtract : only extract features -tc --test : test collection -st --stereo : use stereo feature extraction -ds --downsample : downsampling factor -h --help : display this information -e --extractor : extractor -p --plugin : output plugin name -pm --pluginmute : mute the plugin -csv --csvoutput : output confidence values in sfplugin in csv format -pb --playback : playback during feature extraction -s --start : playback start offset in seconds -sh --shuffle : shuffle collection file before processing -l --length : playback length in seconds -m --memory : memory size -w --wekafile : weka .arff filename -od --outputdir : output directory for output of files -ws --windowsize : analysis window size in samples -hp --hopsize : analysis hop size in samples -t --timeline : flag 2nd input collection as timelines for the 1st collection -os --onlyStable : only output 'stable' frames (silently omit the rest) -rg --regression : print regression labels instead of classification labels Available extractors: --------------------- BEAT: Beat histogram features LPCC: LPC derived Cepstral coefficients LSP: Linear Spectral Pairs MFCC: Mel-frequency Cepstral Coefficients MPL_FILE: not yet implemented... REFACTORED: Dummy extractor for refactored bextract SCF: Spectral Crest Factor (MPEG-7) SFM: Spectral Flatness Measure (MPEG-7) SFMSCF: SCF and SFM features STFT: Centroid, Rolloff, Flux, ZeroCrossings STFTMFCC: Centroid, Rolloff Flux, ZeroCrossings, Mel-frequency Cepstral Coefficients NOTE: All extractors calculate means and variances over a memory size window SV can be appended in front of any extractor to extract a single vector (mean, variances) over a 30-second clip (for example SVSTFT)
Only extract features (-fe) (i.e. no machine learning or plugin generation for classification), extract MFCCs (-mfcc), and output WEKA file mfccs.arff
!bextract -fe -mfcc -w mfcc.arff sources.mf
Window Size (in samples): 512 Hop Size (in samples): 512 Memory Size (in analysis windows):20 Accumulator size (in analysis windows):20000 Extractor = REFACTORED collectionName = MARSYAS_EMPTY wekafname = MARSYAS_EMPTYmfcc.arff Downsampling factor = 1 Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 [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 Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3 Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav [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 Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3 Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Finished feature extraction
ls
Audio Features IIIa-Pitch.ipynb~ Audio File IO.ipynb Graphing with pylab.ipynb mfcc_python.arff Python Basics.ipynb testout.wav Audio Features IIIa-Tempo.ipynb Beat_histogram.png MARSYAS_EMPTYMARSYAS_EMPTY mfcc.sig sources/ wof_onsets.txt Audio Features IIIb-Pitch.ipynb beat_hist.png MARSYAS_EMPTYmfcc.arff ms.mpl sources2/ wtk1-prelude1.mid Audio Features IIIb-Pitch.ipynb~ bextract_python.arff MARSYAS_EMPTYms.arff output.pdf sources2.mf Audio Features II.ipynb~ bextract_single.mf Marsyas.ipynb outtest_scipy.wav sources.mf Audio Features I.ipynb Dire Straits - Walk of life.output mfccaggr.sig out.txt Symbolic MIR Using Music21.ipynb Audio Features II-Temporal and Spectral.ipynb Feature summary and analysis.ipynb mfccframes.txt passport.wav testout2.wav
Now we need a WEKA file reader!
import arff
You can get arff from https://pypi.python.org/pypi/arff or by running:
sudo pip install arff
mfccs = arff.load('MARSYAS_EMPTYmfcc.arff')
This gets us a "generator" object
mfccs
<generator object load at 0x2e36dc0>
Which we need to turn into actual data:
mfccs = list(mfccs)
len(mfccs)
40354
But then each element is a "Row" object!
mfccs[0]
<Row(-107.487389,-0.057839,0.4933,-0.359472,1.67356,-1.379592,0.160211,-1.491901,-0.247348,-0.032178,0.610133,0.131942,-0.403637,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,'sources')>
So it's actually better to do it like this:
mfccs = []
for row in arff.load('MARSYAS_EMPTYmfcc.arff'):
mfccs.append(list(row)[1:14])
imshow(array(mfccs).T, aspect='auto', interpolation='nearest')
<matplotlib.image.AxesImage at 0x3179590>
Notice that these are the MFCCs for all pieces combined together!
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)
To create a classification "plugin":
!bextract sources.mf -w ms.arff -p ms.mpl -cl GS
Window Size (in samples): 512 Hop Size (in samples): 512 Memory Size (in analysis windows):20 Accumulator size (in analysis windows):20000 Extractor = REFACTORED collectionName = MARSYAS_EMPTY wekafname = MARSYAS_EMPTYms.arff classifierName = GS Downsampling factor = 1 Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 [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 Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3 Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav [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 Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3 Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Finished feature extraction Finished classifier training
Now we have a plugin called ms.mpl.
To use it:
ls
Audio Features IIIa-Pitch.ipynb~ Audio File IO.ipynb Graphing with pylab.ipynb mfcc_python.arff Python Basics.ipynb testout.wav Audio Features IIIa-Tempo.ipynb Beat_histogram.png MARSYAS_EMPTYMARSYAS_EMPTY mfcc.sig sources/ wof_onsets.txt Audio Features IIIb-Pitch.ipynb beat_hist.png MARSYAS_EMPTYmfcc.arff ms.mpl sources2/ wtk1-prelude1.mid Audio Features IIIb-Pitch.ipynb~ bextract_python.arff MARSYAS_EMPTYms.arff output.pdf sources2.mf Audio Features II.ipynb~ bextract_single.mf Marsyas.ipynb outtest_scipy.wav sources.mf Audio Features I.ipynb Dire Straits - Walk of life.output mfccaggr.sig out.txt Symbolic MIR Using Music21.ipynb Audio Features II-Temporal and Spectral.ipynb Feature summary and analysis.ipynb mfccframes.txt passport.wav testout2.wav
!sfplugin -h
sfplugin, MARSYAS, Copyright George Tzanetakis -------------------------------------------- Prints information about the sound files provided as arguments Usage : sfplugin[-c collection] file1 file2 file3 where file1, ..., fileN are sound files in a Marsyas supported format Help Options: -u --usage : display short usage info -h --help : display this information -v --verbose : verbose output -g --gain : linear volume gain -sa --start : playback start offset in seconds -ln --length : playback length in seconds -pl --plugin : plugin file -o --output : output file -r --repetitions : number of repetitions -pm --pluginMute : don't play audio [MRSERR] Unknown MarSystemType [MRSERR] skipstr = Manager could not load MarSystem from plugin file
!sfplugin -pl ms.mpl sources/superstition.wav
[MRS_WARNING] AudioSink: buffer underrun! 0.000 PR = sources 100 1.0000 GT = sources 0.464 PR = sources 100 1.0000 GT = sources 0.929 PR = sources 100 1.0000 GT = sources 1.393 PR = sources 100 1.0000 GT = sources 1.858 PR = sources 100 1.0000 GT = sources 2.322 PR = sources 100 1.0000 GT = sources 2.786 PR = sources 100 1.0000 GT = sources 3.251 PR = sources 100 1.0000 GT = sources 3.715 PR = sources 100 1.0000 GT = sources 4.180 PR = sources 100 1.0000 GT = sources 4.644 PR = sources 100 1.0000 GT = sources 5.108 PR = sources 100 1.0000 GT = sources 5.573 PR = sources 100 1.0000 GT = sources 6.037 PR = sources 100 1.0000 GT = sources 6.502 PR = sources 100 1.0000 GT = sources ^C
!mkcollection -c sources2.mf -l sources2 "/home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/"
Writing collectionName = sources2 into file sources2.mf Adding Contents of Directory = /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/ to collection sources2.mf Adding directory entry turangalila_excerpt.wav Wrote collection sources2.mf
!bextract sources.mf sources2.mf -p ms.mpl -cl GS
Window Size (in samples): 512 Hop Size (in samples): 512 Memory Size (in analysis windows):20 Accumulator size (in analysis windows):20000 Extractor = REFACTORED collectionName = MARSYAS_EMPTY wekafname = MARSYAS_EMPTYMARSYAS_EMPTY classifierName = GS Downsampling factor = 1 Processing: 0 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav Processing: 1 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 2 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: 3 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 Processing: 4 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 Processing: 5 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 [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 Processing: 6 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3 Processing: 7 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 8 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: 9 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav [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 Processing: 10 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3 Processing: 11 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 12 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: 13 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 Processing: 14 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3 [MRS_WARNING] Unsupported format for file /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Processing: 15 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Marley - Buffalo Soldier.mp3 Processing: 16 - /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources2/turangalila_excerpt.wav Finished feature extraction Finished classifier training
!sfplugin -pl ms.mpl sources2/turangalila_excerpt.wav
[MRS_WARNING] AudioSink: buffer underrun! 0.000 PR = sources 100 1.0000 GT = sources 0.464 PR = sources 100 1.0000 GT = sources 0.929 PR = sources 100 1.0000 GT = sources 1.393 PR = sources 100 1.0000 GT = sources 1.858 PR = sources 100 1.0000 GT = sources 2.322 PR = sources 52 1.0000 GT = sources 2.786 PR = sources2 100 0.8571 GT = sources 3.251 PR = sources2 100 0.7500 GT = sources 3.715 PR = sources2 57 0.6667 GT = sources 4.180 PR = sources2 68 0.6000 GT = sources 4.644 PR = sources2 70 0.5455 GT = sources 5.108 PR = sources2 100 0.5000 GT = sources 5.573 PR = sources2 100 0.4615 GT = sources 6.037 PR = sources2 100 0.4286 GT = sources 6.502 PR = sources2 85 0.4000 GT = sources 6.966 PR = sources 80 0.4375 GT = sources 7.430 PR = sources 65 0.4706 GT = sources 7.895 PR = sources2 90 0.4444 GT = sources 8.359 PR = sources2 68 0.4211 GT = sources 8.824 PR = sources2 100 0.4000 GT = sources 9.288 PR = sources 57 0.4286 GT = sources 9.752 PR = sources2 98 0.4091 GT = sources 10.217 PR = sources2 100 0.3913 GT = sources 10.681 PR = sources2 60 0.3750 GT = sources 11.146 PR = sources2 100 0.3600 GT = sources 11.610 PR = sources2 88 0.3462 GT = sources 12.074 PR = sources2 100 0.3333 GT = sources 12.539 PR = sources2 70 0.3214 GT = sources 13.003 PR = sources 72 0.3448 GT = sources ^C
!sfplugin -pl ms.mpl sources/passport.wav
[MRS_WARNING] AudioSink: buffer underrun! 0.000 PR = sources 100 1.0000 GT = sources 0.464 PR = sources 100 1.0000 GT = sources 0.929 PR = sources 100 1.0000 GT = sources 1.393 PR = sources 100 1.0000 GT = sources 1.858 PR = sources 100 1.0000 GT = sources 2.322 PR = sources 100 1.0000 GT = sources 2.786 PR = sources 100 1.0000 GT = sources 3.251 PR = sources 100 1.0000 GT = sources 3.715 PR = sources 100 1.0000 GT = sources 4.180 PR = sources 100 1.0000 GT = sources 4.644 PR = sources 100 1.0000 GT = sources 5.108 PR = sources 100 1.0000 GT = sources 5.573 PR = sources 100 1.0000 GT = sources 6.037 PR = sources 100 1.0000 GT = sources 6.502 PR = sources 100 1.0000 GT = sources 6.966 PR = sources 100 1.0000 GT = sources
Marsyas is stream-based/declarative, so you connect modules in a graph which you then run.
import marsyas
mng = marsyas.MarSystemManager()
fnet = mng.create("Series", "featureNetwork")
# functional short cuts to speed up typing
create = mng.create
add = fnet.addMarSystem
link = fnet.linkControl
upd = fnet.updControl
get = fnet.getControl
# Add the MarSystems
add(create("SoundFileSource", "src"))
add(create("TimbreFeatures", "featExtractor"))
add(create("TextureStats", "tStats"))
add(create("Annotator", "annotator"))
add(create("WekaSink", "wsink"))
# link the controls to coordinate things
link("mrs_string/filename", "SoundFileSource/src/mrs_string/filename")
link("mrs_bool/hasData", "SoundFileSource/src/mrs_bool/hasData")
link("WekaSink/wsink/mrs_string/currentlyPlaying","SoundFileSource/src/mrs_string/currentlyPlaying")
link("Annotator/annotator/mrs_natural/label", "SoundFileSource/src/mrs_natural/currentLabel")
link("SoundFileSource/src/mrs_natural/nLabels", "WekaSink/wsink/mrs_natural/nLabels")
# update controls to setup things
upd("TimbreFeatures/featExtractor/mrs_string/disableTDChild", marsyas.MarControlPtr.from_string("all"))
upd("TimbreFeatures/featExtractor/mrs_string/disableLPCChild", marsyas.MarControlPtr.from_string("all"))
upd("TimbreFeatures/featExtractor/mrs_string/disableSPChild", marsyas.MarControlPtr.from_string("all"))
upd("TimbreFeatures/featExtractor/mrs_string/enableSPChild", marsyas.MarControlPtr.from_string("MFCC/mfcc"))
upd("mrs_string/filename", marsyas.MarControlPtr.from_string("sources.mf"))
upd("WekaSink/wsink/mrs_string/labelNames",
get("SoundFileSource/src/mrs_string/labelNames"))
upd("WekaSink/wsink/mrs_string/filename", marsyas.MarControlPtr.from_string("mfcc_python.arff"))
# do the processing extracting MFCC features and writing to weka file
previouslyPlaying = ""
while get("SoundFileSource/src/mrs_bool/hasData").to_bool():
currentlyPlaying = get("SoundFileSource/src/mrs_string/currentlyPlaying").to_string()
if (currentlyPlaying != previouslyPlaying):
print "Processing: " + get("SoundFileSource/src/mrs_string/currentlyPlaying").to_string()
fnet.tick()
previouslyPlaying = currentlyPlaying
Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/passport.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Dire Straits - Walk of life.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/THX.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Bob Dylan - Canadee-I-O.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Messiaen-Turangalila4.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/04 - Brandenburg Concerto No. 5_ I. Allegro.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/180451__iluppai__alto-saxophone-solo.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Led Zeppelin - Rock And Roll.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/109193__juskiddink__leq-acappella.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Isaac Hayes - Out Of The Ghetto.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/superstition.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Palestrina-Gloria.mp3 Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/32804__johnwally__solo-man.wav Processing: /home/andres/Documents/01 Documentos/06 Santa Barbara/Lectures/240E/ipython/sources/Stevie Wonder - Superstition.mp3
mfccs = []
for row in arff.load('mfcc_python.arff'):
mfccs.append(list(row)[1:14])
imshow(array(mfccs).T, interpolation='nearest', aspect='auto')
colorbar()
<matplotlib.colorbar.Colorbar instance at 0x3afac68>
Marsyas can be used interactively:
http://marsyas.info/assets/docs/manual/marsyas-user/msl.html#msl
By Andrés Cabrera mantaraya36@gmail.com
For course MAT 240E at UCSB
This ipython notebook is licensed under the CC-BY-NC-SA license: http://creativecommons.org/licenses/by-nc-sa/4.0/