# Muhammad Hafiz Wan Rosli # Media Arts & Technology # Music Information Retrieval # MAT240E: Homework03 - Audio Feature Extraction I #import numpy import essentia import essentia.standard import essentia.streaming import os %pylab inline import matplotlib as mpl mpl.rcParams['figure.figsize'] = (16,4) ratm = [] evilEmpire = [] battleOfLA = [] renegades = [] ratm_path = './Music/iTunes/iTunes Media/Music/Rage Against The Machine/Rage Against the Machine' evilEmpire_path = './Music/iTunes/iTunes Media/Music/Rage Against The Machine/Evil Empire' renegades_path = './Music/iTunes/iTunes Media/Music/Rage Against The Machine/Renegades' battleOfLA_path = './Music/iTunes/iTunes Media/Music/Rage Against The Machine/The Battle of Los Angeles' for root, dirs, files in os.walk(ratm_path): tempMono = [] for name in files: loader = essentia.standard.AudioLoader(filename = os.path.join(root, name)) ratm.append(loader()) ratmInd = arange(len(ratm)) ratmRMS = [] for everyFile in ratm: tempMono.append(sum(everyFile[0]/2, axis=1)) for everyFileMono in tempMono: N = float(len(everyFileMono)) ms = sum(everyFileMono**2)/N rms = sqrt(ms) ratmRMS.append(rms) #----- for root, dirs, files in os.walk(evilEmpire_path): tempMono = [] for name in files: loader = essentia.standard.AudioLoader(filename = os.path.join(root, name)) evilEmpire.append(loader()) evilEmpireInd = arange(len(evilEmpire)) evilEmpireRMS = [] for everyFile in evilEmpire: tempMono.append(sum(everyFile[0]/2, axis=1)) for everyFileMono in tempMono: N = float(len(everyFileMono)) ms = sum(everyFileMono**2)/N rms = sqrt(ms) evilEmpireRMS.append(rms) #----- for root, dirs, files in os.walk(battleOfLA_path): tempMono = [] for name in files: loader = essentia.standard.AudioLoader(filename = os.path.join(root, name)) battleOfLA.append(loader()) battleOfLAInd = arange(len(battleOfLA)) battleOfLARMS = [] for everyFile in battleOfLA: tempMono.append(sum(everyFile[0]/2, axis=1)) for everyFileMono in tempMono: N = float(len(everyFileMono)) ms = sum(everyFileMono**2)/N rms = sqrt(ms) battleOfLARMS.append(rms) #----- for root, dirs, files in os.walk(renegades_path): tempMono = [] for name in files: loader = essentia.standard.AudioLoader(filename = os.path.join(root, name)) renegades.append(loader()) renegadesInd = arange(len(renegades)) renegadesRMS = [] for everyFile in renegades: tempMono.append(sum(everyFile[0]/2, axis=1)) for everyFileMono in tempMono: N = float(len(everyFileMono)) ms = sum(everyFileMono**2)/N rms = sqrt(ms) renegadesRMS.append(rms) ax = plt.subplot(111) width = 0.2 w = 0.2 figure_title = "RMS comparison of Rage Against the Machine albums" plt.text(0.3, 1.2, figure_title, horizontalalignment='center', fontsize=20, transform = ax.transAxes) xlabel('Tracks') ylabel('RMS') grid() ax.bar(ratmInd, sorted(ratmRMS),width,color = 'k') ax.bar(evilEmpireInd-w, sorted(evilEmpireRMS),width, color = 'r') ax.bar(battleOfLAInd-(2*w), sorted(battleOfLARMS),width,color = 'g') ax.bar(renegadesInd-(3*w), sorted(renegadesRMS),width, color = 'b') xticks(renegadesInd+width-(2*w), renegadesInd ); ax.legend (('Rage Against the Machine', 'Evil Empire', 'Battle of Los Angeles', 'Renegades of Funk'),bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=4, mode="expand", borderaxespad=0.)