In [69]:
import numpy as np
import sys
sys.path.append("..")
import ismir
import utils
In [3]:
reload(ismir)
X = utils.read_cPickle("../jku_input/mazurka24-4-poly.wav-audio-ssm.pk")
segments = np.load("../segments.npy")
ismir.plot_segments(1-(X**2), segments)
In [ ]:
## Results for presentation
import pylab as plt
no_data = -20
NF14 = [55.28, 41.86, 41.31, 36.06]
Tom_audio = [23.94, no_data, 56.87, no_data]
NF13 = [41.43, 24.87, 23.18, 28.23]
Tom_sym = [33.7, no_data, 76.5, no_data]
Meredith = [50.2, 68.40, 63.20, 44.20]
metrics = ["Est", "Occ 0.75", "Occ 0.5", "Three-way"]
# Audio Results
figsize = (10,4)
plt.figure(figsize=figsize)
plt.plot(NF14, "o-", label="Proposed")
plt.plot(Tom_audio, "s-", label="Collins Audio 14")
plt.plot(NF13, "d-", label="Nieto 13")
plt.gca().set_ylim((10, 90))
plt.gca().set_xlim((-0.5, 3.5))
plt.xticks(np.arange(4))
plt.ylabel("F-measure")
plt.gca().set_xticklabels(metrics)
plt.legend()
plt.show()
# Audio and Symbolic
plt.figure(figsize=figsize)
plt.plot(NF14, "o-", label="Proposed")
plt.plot(Tom_audio, "s-", label="Collins Audio 14")
plt.plot(NF13, "d-", label="Nieto 13")
plt.plot(Tom_sym, "s--", label="Collins Symbolic 14")
plt.plot(Meredith, "x--", label="Meredith 13")
plt.gca().set_ylim((10, 90))
plt.gca().set_xlim((-0.5, 3.5))
plt.xticks(np.arange(4))
plt.ylabel("F-measure")
plt.gca().set_xticklabels(metrics)
plt.legend()
plt.show()
In [67]:
C = utils.compute_audio_chromagram("../jku_input/mazurka24-4-poly.wav", 0.2)
B = [500, 509, 519, 530, 541, 550]
extent = [0, C.shape[0], C.shape[1] - 0.5, -0.5] # To place beats in between frames
linewidth = 4
plt.figure(figsize=(11,3))
plt.imshow(C.T, interpolation="nearest", aspect="auto", cmap=plt.cm.gray, extent=extent)
plt.xlim((500,550))
for b in B:
plt.axvline(b, color="m", linewidth=linewidth)
plt.yticks(np.arange(12), ("A", "A#", "B", "C", "C#", "D", "D#", "E", "F",
"F#", "G", "G#"))
plt.tight_layout()
plt.savefig("rhythmic-feats1.pdf")
plt.show()
subbeats = []
plt.figure(figsize=(11,3))
plt.imshow(C.T, interpolation="nearest", aspect="auto", cmap=plt.cm.gray, extent=extent)
plt.xlim((500,550))
for b1, b2 in zip(B[:-1], B[1:]):
for b in np.arange(b1, b2, (b2-b1)/4.):
b = int(b)
subbeats.append(b)
plt.axvline(b, color="g", linewidth=linewidth)
for b in B:
plt.axvline(b, color="m", linewidth=linewidth)
plt.yticks(np.arange(12), ("A", "A#", "B", "C", "C#", "D", "D#", "E", "F",
"F#", "G", "G#"))
plt.tight_layout()
plt.savefig("rhythmic-feats2.pdf")
plt.show()
# Aggregate:
for b1, b2 in zip(subbeats[:-1], subbeats[1:]):
C[b1:b2] = np.mean(C[b1:b2], axis=0)
plt.figure(figsize=(11,3))
plt.imshow(C.T, interpolation="nearest", aspect="auto", cmap=plt.cm.gray, extent=extent)
plt.xlim((500,550))
for b in subbeats:
plt.axvline(b, color="g", linewidth=linewidth)
plt.xticks((500, 510, 520, 531, 542), (500, 504, 508, 512, 516))
plt.yticks(np.arange(12), ("A", "A#", "B", "C", "C#", "D", "D#", "E", "F",
"F#", "G", "G#"))
plt.tight_layout()
plt.savefig("rhythmic-feats3.pdf")
plt.show()