@@ -150,7 +150,7 @@ wav-ds
150150
151151(def Nyquist-freq (* 0.5 sample-rate))
152152
153- (defn data ->dft-ds [data]
153+ (defn values ->dft-ds [data]
154154 (let [dft (-> data
155155 double-array
156156 DiscreteFourier.)]
@@ -163,8 +163,40 @@ wav-ds
163163 :phase phase})
164164 (tc/add-column :power #(tcc/sq (:amplitude %)))))))
165165
166+
167+
168+ (def cosine-wave
169+ (-> {:time (-> (range 0
170+ 0.1
171+ (/ 1.0 sample-rate)))}
172+ tc/dataset
173+ (tc/add-column :value #(-> %
174+ :time
175+ (dfn/* (* 2 math/PI 50 ))
176+ (dfn/+ (* 0.25 math/PI))
177+ dfn/cos))))
178+
179+ (-> cosine-wave
180+ (plotly/layer-line {:=x :time
181+ :=y :value }))
182+
183+ (def cosine-wave-dft-ds
184+ (-> cosine-wave
185+ :value
186+ values->dft-ds))
187+
188+ (-> cosine-wave-dft-ds
189+ (tc/head 20 )
190+ (plotly/layer-line {:=x :freq
191+ :=y :power }))
192+
193+ (-> cosine-wave-dft-ds
194+ (tc/head 20 ))
195+
196+
197+
166198(def some-dft-ds
167- (data ->dft-ds
199+ (values ->dft-ds
168200 (some-part 1 1.05 )))
169201
170202(-> some-dft-ds
@@ -270,7 +302,16 @@ wav-ds
270302 :combined
271303 audio)
272304
273- ; ; ## Spectogram (WIP)
305+ (-> (some-part 1 2 )
306+ values->dft-ds
307+ (dft-ds->peaks-ds {:n-peaks 30 })
308+ (peaks-ds->components-ds {:duration 1 })
309+ components-ds->combined-ds
310+ :combined
311+ audio)
312+
313+
314+ ; ; ## Short Time Fourier Transform
274315
275316(import 'com.github.psambit9791.jdsp.windows.Hanning)
276317
@@ -372,11 +413,10 @@ wav-ds
372413; ; ## Playing the spectrogram
373414
374415
375-
376416(-> stft
377417 (->> (map (fn [dft]
378418 (-> dft
379- (dft-ds->peaks-ds {:n-peaks 5 })
419+ (dft-ds->peaks-ds {:n-peaks 10 })
380420 (peaks-ds->components-ds {:duration 0.005 })
381421 components-ds->combined-ds
382422 (tc/select-columns [:combined ]))))
0 commit comments