# 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.)