Mercurial > hg > constant-q-cpp
changeset 85:5d1f276f82e5
Inverse now produces a (wrong) output
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 30 Apr 2014 13:32:48 +0100 |
parents | 753b6be2a38d |
children | 7664a93c06da |
files | yeti/experiment.yeti yeti/icqt.yeti |
diffstat | 2 files changed, 27 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/yeti/experiment.yeti Wed Apr 30 08:38:40 2014 +0100 +++ b/yeti/experiment.yeti Wed Apr 30 13:32:48 2014 +0100 @@ -27,6 +27,11 @@ eprintln "calculated icq..."; +outfile = "test-output.wav"; +written = af.write icq outfile; + +eprintln "wrote \(written) to \(outfile)"; + //for cq.cqSpectrogram do mm: // for (mat.asColumns mm) (println . strJoin "," . vec.list); //done;
--- a/yeti/icqt.yeti Wed Apr 30 08:38:40 2014 +0100 +++ b/yeti/icqt.yeti Wed Apr 30 13:32:48 2014 +0100 @@ -32,8 +32,12 @@ cqt = load cqt; cm = load may.matrix.complex; +framer = load may.stream.framer; +win = load may.signal.window; mm = load may.mathmisc; vec = load may.vector; +resamp = load may.stream.resample; +manip = load may.stream.manipulate; icqt cq = (kdata = cq.kernel; @@ -111,12 +115,28 @@ spectra = map do l: map do col: - cm.product kernel (cm.newComplexColumnVector col); + res = cm.transposed (cm.product kernel (cm.newComplexColumnVector col)); + cm.columnSlice res 0 (kdata.fftSize / 2 + 1) done l; done octaveColumnLists; - eprintln "calculated spectra, now to ifft, overlap-add..." + eprintln "calculated spectra, now to ifft, overlap-add..."; + + rates = map do oct: cq.sampleRate / (mm.pow 2 oct) done [0..cq.octaves-1]; + resynthesised = + map2 do frames rate: + framer.complexStreamed rate kdata.fftSize + [ FrequencyDomain true, Window win.boxcar, Hop kdata.fftHop ] + frames; + done spectra rates; + + eprintln "have streams:"; + for resynthesised eprintln; + + resampled = map (resamp.resampledTo cq.sampleRate) resynthesised; + + manip.sum resampled; ); {icqt}