To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / _beattracker / getbcfs2.m
History | View | Annotate | Download (1.93 KB)
| 1 |
function [bcf,frame,beats] = getbcfs2(fname,beats); |
|---|---|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
if nargin<2 |
| 6 |
|
| 7 |
[x fs] = wavread(fname); |
| 8 |
x = mean(x,2); |
| 9 |
if fs~=44100 |
| 10 |
x = resample(x,44100,fs); |
| 11 |
end |
| 12 |
p = bt_parms; |
| 13 |
|
| 14 |
df = get_dfs(x(1:4:end),bt_parms(0.01161*4)); |
| 15 |
[beats,timesig] = newtt_mm(df{1},p);
|
| 16 |
beats = beatadjust(beats,df{1});
|
| 17 |
end |
| 18 |
|
| 19 |
|
| 20 |
|
| 21 |
beats = beats(:)'; |
| 22 |
|
| 23 |
|
| 24 |
siz = wavread(fname,'size'); |
| 25 |
[x fs] = wavread(fname); |
| 26 |
x = mean(x,2); |
| 27 |
% if siz(2)>1 |
| 28 |
% x = mean(x')'; |
| 29 |
% end |
| 30 |
|
| 31 |
if fs ~= 44100 |
| 32 |
x = resample(x,44100,fs); |
| 33 |
end |
| 34 |
|
| 35 |
beats = round(beats); |
| 36 |
beats(beats>length(x)) = []; |
| 37 |
beats = sort(beats); |
| 38 |
%beats = beats - 4096; |
| 39 |
%beats(beats<1) = 1; |
| 40 |
|
| 41 |
% |
| 42 |
% spark = sparsekernel(110, 880, 36, 44100/16, 0.054); |
| 43 |
% spark(1025:end,:) = []; |
| 44 |
spark = 1; |
| 45 |
|
| 46 |
for k=1:length(beats)-1 |
| 47 |
% [spec(k,:),mfcc(k,:), cq(k,:),hpcp(k,:),chroma(k,:)] = chromaframe(x(beats(k):beats(k+1)),spark); |
| 48 |
[spec(k,:)] = chromaframe(x(beats(k):beats(k+1)),spark); |
| 49 |
|
| 50 |
end |
| 51 |
|
| 52 |
|
| 53 |
|
| 54 |
for k=1:size(spec,1)-1, |
| 55 |
|
| 56 |
% bcf.spec(k) = dobeatkl(spec(k,:),spec(k+1,:)); |
| 57 |
% bcf.cq(k) = dobeatkl(cq(k,:).^2,cq(k+1,:).^2); |
| 58 |
% bcf.hpcp(k) = dobeatkl(hpcp(k,:).^2,hpcp(k+1,:).^2); |
| 59 |
% bcf.chroma(k) = dobeatkl(chroma(k,:).^2,chroma(k+1,:).^2); |
| 60 |
% bcf.mfcc(k) = dobeatkl(mfcc(k,:).^2,mfcc(k+1,:).^2); |
| 61 |
bcf.spec(k) = dojsdiv2(spec(k,:),spec(k+1,:)); |
| 62 |
% bcf.cq(k) = dojsdiv2(cq(k,:),cq(k+1,:)); |
| 63 |
% bcf.hpcp(k) = dojsdiv2(hpcp(k,:),hpcp(k+1,:)); |
| 64 |
% bcf.chroma(k) = dojsdiv2(chroma(k,:),chroma(k+1,:)); |
| 65 |
% bcf.mfcc(k) = dojsdiv2(mfcc(k,:),mfcc(k+1,:)); |
| 66 |
|
| 67 |
end |
| 68 |
|
| 69 |
|
| 70 |
% bcf.spec=adapt_thresh(bcf.spec,2,1); |
| 71 |
|
| 72 |
frame.spec = spec; |
| 73 |
|
| 74 |
% % my added bit |
| 75 |
% temp = 0*spec; |
| 76 |
% for i=1:length(temp)-1 |
| 77 |
% temp(i)=spec(i)+0.2/spec(i+1); |
| 78 |
% end |
| 79 |
% frame.spec = temp; |
| 80 |
|
| 81 |
|
| 82 |
|
| 83 |
% frame.cq = cq; |
| 84 |
% frame.hpcp = hpcp; |
| 85 |
% frame.chroma = chroma; |
| 86 |
% frame.mfcc = mfcc; |
| 87 |
|
| 88 |
% for i=1:222, [c,n] = meterTracker(wavread(files(i+2).name),44100); kc{i} = round(44100*c.measures); kn{i} = round(44100*n.measures); if~mod(i,10),i,end; clear c; clear n; end
|