1 | // This looks at a number of periods of a given frequency starting at a certain time in the audio |
2 | // and returns an intensity value. |
3 | // No phase adjustment here, so you have to call this twice to get meaningful (complex) results. |
4 | srecord noeq SumOfVibrations(IAudioSample sample, int channel, double start, double freq, int periods) {
|
5 | double period, end; |
6 | |
7 | double rawSum() {
|
8 | period = sample.sampleRate()/freq; |
9 | double sum = 0, t = start; |
10 | for p to periods: {
|
11 | // Subtract an expected trough from an expected neighboring peak and add to overall sum. |
12 | // Nota bene: Trough and peak have the same area (=length), so this is basically a Haar-like feature! |
13 | // By the use of which we automatically get around nasty complications like DC offsets in the input data. |
14 | |
15 | sum += sample.sampleSum(channel, t, t+period/2) |
16 | - sample.sampleSum(channel, t+period/2, t+period); |
17 | |
18 | t += period; |
19 | } |
20 | end = t; |
21 | ret sum; |
22 | } |
23 | |
24 | // alternate calculation adjusted for duration |
25 | double sumDividedByDuration() {
|
26 | ret rawSum()/(end-start); |
27 | } |
28 | } |
Began life as a copy of #1032977
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1032979 |
| Snippet name: | SumOfVibrations |
| Eternal ID of this version: | #1032979/1 |
| Text MD5: | ac47bcb9d7459181a1f1bce61f9be28b |
| 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:03:08 |
| Source code size: | 1124 bytes / 28 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 391 / 418 |
| Referenced in: | [show references] |