changeset 168:19ca3aaf7807

Give spectrogram a step duration
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 27 Mar 2017 18:17:27 +0100
parents d8f2eb7ac0c5
children a0b13b82cd72
files src/app/spectrogram/Spectrogram.ts
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/spectrogram/Spectrogram.ts	Fri Mar 24 16:01:28 2017 +0000
+++ b/src/app/spectrogram/Spectrogram.ts	Mon Mar 27 18:17:27 2017 +0100
@@ -9,6 +9,7 @@
 class SpectrogramEntity extends Waves.utils.MatrixEntity {
 
   private samples: Float32Array;
+  private sampleRate: number;
   private framing: Framing;
   private fft: RealFft;
   private real: Float32Array;
@@ -16,9 +17,10 @@
   private columnHeight: number;
   private window: Float32Array;
 
-  constructor(samples: Float32Array, options: Framing & Object) {
+  constructor(samples: Float32Array, options: Framing & Object, sampleRate: number) {
     super();
     this.samples = samples;
+    this.sampleRate = sampleRate;
     this.framing = options;
     this.real = new Float32Array(this.framing.blockSize);
     this.nCols = Math.floor(this.samples.length / this.framing.stepSize); //!!! not correct
@@ -39,6 +41,10 @@
     return this.columnHeight;
   }
 
+  getStepDuration(): number {
+    return this.framing.stepSize / this.sampleRate;
+  }
+  
   getColumn(n: number): Float32Array {
 
     const startSample = n * this.framing.stepSize;
@@ -110,7 +116,8 @@
     
     super('entity',
 	  new SpectrogramEntity(getSamples(buffer, mergedOptions.channel),
-				mergedOptions),
+				mergedOptions,
+				buffer.sampleRate),
 	  mergedOptions);
 
     this.configureShape(Waves.shapes.Matrix, {}, mergedOptions);