-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathecho.cpp
48 lines (39 loc) · 1.43 KB
/
echo.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "Algo.h"
#include "AudioDevice.h"
#include <algorithm>
#include <cstdlib>
#include <iostream>
namespace consts {
static const uint32_t recordLengthMsec = 5000;
} // namespace consts
int main(int, char**)
try {
audio::DeviceCapture<float> capture;
auto recording = capture.record(consts::recordLengthMsec);
audio::DevicePlayback<float> playback(recording.metadata);
std::cout << "forward ";
playback.play(recording);
std::cout << "complete backward ";
auto completeBackward = recording;
for(auto&& samples : completeBackward.storage) {
std::reverse(std::begin(samples), std::end(samples));
}
std::reverse(std::begin(completeBackward.storage), std::end(completeBackward.storage));
playback.play(completeBackward);
std::cout << "sample-wise backward (smoothed) ";
auto samplewiseBackward = recording;
for(auto&& samples : samplewiseBackward.storage) {
std::reverse(std::begin(samples), std::end(samples));
}
samplewiseBackward = audio::smooth(samplewiseBackward, 20);
playback.play(samplewiseBackward);
std::cout << "group-wise backward (smoothed) ";
auto&& groupwiseBackward = recording;
std::reverse(std::begin(groupwiseBackward.storage), std::end(groupwiseBackward.storage));
groupwiseBackward = audio::smooth(groupwiseBackward, 20);
playback.play(groupwiseBackward);
return EXIT_SUCCESS;
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
}