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}