Libraryless. Click here for Pure Java version (6058L/35K).
// This looks at a number of periods of a given frequency starting at a certain time in the audio // and returns an intensity value. // No phase adjustment here, so you have to call this twice to get meaningful (complex) results. srecord noeq SumOfVibrations(IAudioSample sample, int channel, double start, double freq, int periods) { double period, end; double rawSum() { period = sample.sampleRate()/freq; double sum = 0, t = start; for p to periods: { // Subtract an expected trough from an expected neighboring peak and add to overall sum. // Nota bene: Trough and peak have the same area (=length), so this is basically a Haar-like feature! // By the use of which we automatically get around nasty complications like DC offsets in the input data. sum += sample.sampleSum(channel, t, t+period/2) - sample.sampleSum(channel, t+period/2, t+period); t += period; } end = t; ret sum; } // alternate calculation adjusted for duration double sumDividedByDuration() { ret rawSum()/(end-start); } // Not divided by duration - this seems like the best frequency detector at this point. // As in a proper FFT/DCT, we return a complex value to represent phase. // Call abs() to get the desired intensity value. Complex complexSum() { SumOfVibrations sum2 = new(sample, channel, start+period/4, freq, periods); ret Complex(rawSum(), sum2.rawSum()); } double amplitude() { ret abs(complexSum()); } }
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, ekrmjmnbrukm, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1032977 |
Snippet name: | SumOfVibrations |
Eternal ID of this version: | #1032977/7 |
Text MD5: | dcc0bac5a491590dc3fc4323ce550c68 |
Transpilation MD5: | e6b52075ae2c28843451ce88770657b5 |
Author: | stefan |
Category: | javax / audio analysis |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-10-11 07:05:47 |
Source code size: | 1556 bytes / 38 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 180 / 290 |
Version history: | 6 change(s) |
Referenced in: | #1032979 - SumOfVibrations #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) |