snd = Import["http://nalab.mind.meiji.ac.jp/~mk/fourier/piano-do-mi-so.wav"] {left, right} = snd[[1, 1]]; sr = snd[[1, 2]] take[tbl_, t1_, t2_] := Take[tbl, {Floor[t1*sr], Floor[t2*sr]}] take1[tbl_, t_] := Take[tbl, {Floor[t*sr], Floor[t*sr] + sr - 1}] g = ListPlot[tbl = take1[left, 1.0], PlotRange -> All] ListPlay[tbl] ListPlay[tbl, SampleRate -> sr] ListPlay[tbl, SampleRate -> sr/2] ListPlay[tbl, SampleRate -> 2*sr] ListPlay[tbl, SampleRate -> Floor[sr*1.5]] c = Fourier[tbl, FourierParameters -> {-1, -1}]; g = ListPlot[Abs[c], Joined -> True, PlotRange -> All] cutoff[f_] := Join[Table[1, {n, f + 1}], Table[0, {n, sr - 2*f - 1}], Table[1, {n, f}]]; 440.0*2^(-{9, 5, 2}/12) c2 = c*cutoff[500]; g3 = ListPlot[Abs[c2], Joined -> True, PlotRange -> All] tbl2 = Re[InverseFourier[c2, FourierParameters -> {-1, -1}]]; ListPlay[tbl2, SampleRate -> sr] do = Re[InverseFourier[c*cutoff[300], FourierParameters -> {-1, -1}]]; domi = Re[InverseFourier[c*cutoff[360], FourierParameters -> {-1, -1}]]; domiso = Re[InverseFourier[c*cutoff[450], FourierParameters -> {-1, -1}]]; domiso2 = Re[InverseFourier[c*cutoff[900], FourierParameters -> {-1, -1}]]; original = Re[InverseFourier[c, FourierParameters -> {-1, -1}]]; ListPlay[do, SampleRate -> sr] ListPlay[domi, SampleRate -> sr] ListPlay[domiso, SampleRate -> sr] ListPlay[domiso2, SampleRate -> sr] ListPlay[original, SampleRate -> sr] |