Mercurial > hg > constant-q-cpp
changeset 16:310435497b76
Print out results (to go to file to load into e.g. SV)
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 30 Oct 2013 09:06:52 +0000 |
parents | 7f9a9af75d91 |
children | b54bd1d0dc1e |
files | yeti/cqt.yeti yeti/cqtkernel.yeti |
diffstat | 2 files changed, 26 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/yeti/cqt.yeti Tue Oct 29 16:55:55 2013 +0000 +++ b/yeti/cqt.yeti Wed Oct 30 09:06:52 2013 +0000 @@ -1,5 +1,5 @@ -module cqt; +program cqt; cqtkernel = load cqtkernel; resample = load may.stream.resample; @@ -20,26 +20,26 @@ minFreq = 40; binsPerOctave = 24; -println "Here"; +eprintln "Here"; octaves = ceil (log2 (maxFreq / minFreq)); -println "Here: about to calculate stuff with \(octaves)"; +eprintln "Here: about to calculate stuff with \(octaves)"; actualMinFreq = (maxFreq / (pow 2 octaves)) * (pow 2 (1/binsPerOctave)); - println "sampleRate = \(sampleRate), maxFreq = \(maxFreq), minFreq = \(minFreq), actualMinFreq = \(actualMinFreq), octaves = \(octaves), binsPerOctave = \(binsPerOctave)"; + eprintln "sampleRate = \(sampleRate), maxFreq = \(maxFreq), minFreq = \(minFreq), actualMinFreq = \(actualMinFreq), octaves = \(octaves), binsPerOctave = \(binsPerOctave)"; kdata = cqtkernel.makeKernel { sampleRate, maxFreq, binsPerOctave }; - println "atomsPerFrame = \(kdata.atomsPerFrame)"; + eprintln "atomsPerFrame = \(kdata.atomsPerFrame)"; streams = manipulate.duplicated octaves str; //!!! can't be right! kernel = cm.transposed (cm.conjugateTransposed kdata.kernel); - println "have kernel"; + eprintln "have kernel"; fftFunc = fft.forward kdata.fftSize; @@ -98,7 +98,7 @@ done octlist done cqblocks; -//println "lengths per oct: \(map length cqblocks)"; +//eprintln "lengths per oct: \(map length cqblocks)"; // Slice each octave's blocks into a list of columns with zeros // interspersed. This doesn't look very elegant (?) @@ -106,8 +106,8 @@ cqblocks = map2 do octlist octave: concat (map do m: concat (map do col: -// col :: map \(cplx.zeros kdata.binsPerOctave) [1..pow 2 octave - 1] - map \col [0..pow 2 octave - 1] + col :: map \(cplx.zeros kdata.binsPerOctave) [1..pow 2 octave - 1] +// map \col [0..pow 2 octave - 1] done (cm.asColumns m)) done octlist) done cqblocks [0..octaves-1]; @@ -126,7 +126,7 @@ pileOf cqblocks []; -//println "lengths per oct: \(map length cqblocks)"; +//eprintln "lengths per oct: \(map length cqblocks)"; //cqblocks; @@ -134,9 +134,19 @@ testStream = manipulate.withDuration 96000 (syn.sinusoid 48000 500); -println "have test stream"; +eprintln "have test stream"; -cqt testStream; +c = cqt testStream; +thing = take 50 (drop 200 c); +m = cm.newComplexMatrix (ColumnMajor ()) thing; +mm = cm.magnitudes m; +for (mat.asColumns mm) (println . strJoin "," . vec.list); +() + + + + +
--- a/yeti/cqtkernel.yeti Tue Oct 29 16:55:55 2013 +0000 +++ b/yeti/cqtkernel.yeti Wed Oct 30 09:06:52 2013 +0000 @@ -28,8 +28,8 @@ fftSize = nextPowerOfTwo (firstCentre + ceil (maxNK/2)); - println "sampleRate = \(sampleRate), maxFreq = \(maxFreq), binsPerOctave = \(binsPerOctave), q = \(q), atomHopFactor = \(atomHopFactor), thresh = \(thresh)"; - println "minFreq = \(minFreq), bigQ = \(bigQ), maxNK = \(maxNK), minNK = \(minNK), atomHop = \(atomHop), firstCentre = \(firstCentre), fftSize = \(fftSize)"; + eprintln "sampleRate = \(sampleRate), maxFreq = \(maxFreq), binsPerOctave = \(binsPerOctave), q = \(q), atomHopFactor = \(atomHopFactor), thresh = \(thresh)"; + eprintln "minFreq = \(minFreq), bigQ = \(bigQ), maxNK = \(maxNK), minNK = \(minNK), atomHop = \(atomHop), firstCentre = \(firstCentre), fftSize = \(fftSize)"; winNr = floor((fftSize - ceil(maxNK/2) - firstCentre) / atomHop) + 1; @@ -37,7 +37,7 @@ fftHop = (lastCentre + atomHop) - firstCentre; - println "winNr = \(winNr), lastCentre = \(lastCentre), fftHop = \(fftHop)"; + eprintln "winNr = \(winNr), lastCentre = \(lastCentre), fftHop = \(fftHop)"; fftFunc = fft.forward fftSize; @@ -88,7 +88,7 @@ (cm.scaled (1/fftSize) (cm.newComplexMatrix (RowMajor()) (concat kernels))); - println "density = \(cm.density kmat)"; + eprintln "density = \(cm.density kmat)"; // Normalisation