[xx,fs] = wavread('music.wav');

figure(1);spectrogram(xx, 1024, 512, 1024, fs, 'yaxis')

gain_lo  = 1;
gain_mid = 3;
gain_hi  = 0.3;

M= 300;

f_hi = 880;
f_lo = 220;

% design filters
hh_hi = firpm(M, [0 0.9*f_hi 1.1*f_hi, fs/2]/(fs/2), [0 0 1 1]);
hh_lo = firpm(M, [0 0.9*f_lo 1.1*f_lo, fs/2]/(fs/2), [1 1 0 0]);
hh_mid = firpm(M, [0 0.9*f_lo 1.1*f_lo, 0.9*f_hi 1.1*f_hi, fs/2]/(fs/2), ...
    [0 0 1 1 0 0]);

% apply filters
y_hi = conv(hh_hi, xx);
y_lo = conv(hh_lo, xx);
y_mid = conv(hh_mid, xx);

% scale and recombine
yy = gain_lo*y_lo + gain_mid*y_mid + gain_hi*y_hi;

figure(2);spectrogram(yy, 1024, 512, 1024, fs, 'yaxis')

soundsc(yy, fs)