Skip to content

Commit bd20fe4

Browse files
authored
Merge pull request #56 from brokkoli71/benchmarks
Benchmarks
2 parents d11291c + 2b8199d commit bd20fe4

26 files changed

Lines changed: 1028 additions & 105 deletions

‎.gitignore‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ tests/testoutput
44
!tests/testoutput/.gitkeep
55
cmake-build-debug
66
cmake-build-release
7-
cmake-build-relwithdebinfo
7+
cmake-build-relwithdebinfo
8+
out

‎CMakeLists.txt‎

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ endif ()
4343

4444
target_link_libraries(pytotune_core PUBLIC OpenMP::OpenMP_CXX PRIVATE hwy)
4545

46+
option(PYTOTUNE_USE_HWY "Enable Highway SIMD in YIN pitch detector" ON)
47+
target_compile_definitions(pytotune_core PUBLIC $<$<BOOL:${PYTOTUNE_USE_HWY}>:USE_HWY=1>)
48+
49+
option(PYTOTUNE_USE_PREDEFINED_TWIDDLES "Use predefined twiddle factors in FFT" ON)
50+
target_compile_definitions(pytotune_core PUBLIC $<$<BOOL:${PYTOTUNE_USE_PREDEFINED_TWIDDLES}>:USE_PREDEFINED_TWIDDLES=1>)
51+
52+
option(PYTOTUNE_REIMPLEMENTED_WINDOWING "Use reimplemented windowing in pitch shifter" ON)
53+
target_compile_definitions(pytotune_core PUBLIC $<$<BOOL:${PYTOTUNE_REIMPLEMENTED_WINDOWING}>:REIMPLEMENTED_WINDOWING=1>)
54+
4655
# GoogleTest
4756
include(FetchContent)
4857
FetchContent_Declare(
@@ -102,4 +111,10 @@ target_link_libraries(pytotune_tests PRIVATE pytotune_core gtest_main)
102111

103112
enable_testing()
104113
include(GoogleTest)
105-
gtest_discover_tests(pytotune_tests)
114+
gtest_discover_tests(pytotune_tests)
115+
116+
if (LINUX)
117+
add_executable(pytotune_benchmarks
118+
benchmarks/benchmark.cpp)
119+
target_link_libraries(pytotune_benchmarks PRIVATE pytotune_core)
120+
endif ()

‎benchmarks/benchmark.cpp‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#include <iostream>
2+
3+
#include "perfevent/PerfEvent.hpp"
4+
#include "pytotune/algorithms/pitch_correction_pipeline.h"
5+
6+
constexpr auto pitchRange = p2t::VoiceRanges::HUMAN;
7+
constexpr int windowSize = 4096;
8+
constexpr int stride = 1024;
9+
10+
const std::string wavPath = "../tests/data/benchmarking/e-minor-singing-10x.wav";
11+
12+
#if USE_HWY
13+
constexpr std::string_view HWY_TAG = "_hwy=on";
14+
#else
15+
constexpr std::string_view HWY_TAG = "_hwy=off";
16+
#endif
17+
18+
#if USE_PREDEFINED_TWIDDLES
19+
constexpr std::string_view TWIDDLES_TAG = "tw=on";
20+
#else
21+
constexpr std::string_view TWIDDLES_TAG = "tw=off";
22+
#endif
23+
24+
#ifdef REIMPLEMENTED_WINDOWING
25+
constexpr std::string_view WINDOWING_TAG = "_win=on";
26+
#else
27+
constexpr std::string_view WINDOWING_TAG = "_win=off";
28+
#endif
29+
30+
PerfEvent e;
31+
32+
int main(int argc, char *argv[]) {
33+
if (argc > 2 && std::string(argv[2]) == "false") {
34+
e.printHeader = false;
35+
}
36+
if (argc <= 1) {
37+
std::cerr << "Please specify a benchmark to run: 'detection' or 'correction'" << std::endl;
38+
return 1;
39+
}
40+
41+
std::string tag = std::string(argv[1]);
42+
p2t::Windowing windowing(windowSize, stride);
43+
44+
if (tag == "detection") {
45+
auto wav = p2t::WavFile::load(wavPath);
46+
p2t::PitchCorrectionPipeline pipeline;
47+
48+
for (int decimation : {1, 2, 4, 8}) {
49+
const std::string ompTag = (std::getenv("OMP_NUM_THREADS") && std::string(std::getenv("OMP_NUM_THREADS")) ==
50+
"1")
51+
? "_omp=off"
52+
: "_omp=on";
53+
PerfEventBlock b(e, 1000000, "d" + std::to_string(decimation) + std::string(HWY_TAG) + ompTag);
54+
if (decimation > 1) e.printHeader = false;
55+
pipeline.detectPitch(wav, windowing, pitchRange, 0.05f, decimation);
56+
}
57+
} else if (tag == "correction") {
58+
auto wav = p2t::WavFile::load(wavPath);
59+
const auto scale = p2t::Scale::fromName("E minor");
60+
p2t::PitchCorrectionPipeline pipeline;
61+
62+
// Run detection outside the benchmarked block
63+
const auto pitches = pipeline.detectPitch(wav, windowing, pitchRange);
64+
const auto factors = scale.getPitchCorrectionFactors(pitches.data);
65+
66+
PerfEventBlock b(e, 1000000, std::string(TWIDDLES_TAG) + std::string(WINDOWING_TAG));
67+
pipeline.shiftPitch(wav, windowing, factors);
68+
} else {
69+
std::cerr << "Unknown benchmark: " << tag << ". Please specify 'detection' or 'correction'" << std::endl;
70+
return 1;
71+
}
72+
return 0;
73+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
2+
RESULTS="$SCRIPT_DIR/results_pitch_correction.csv"
3+
4+
pushd ../cmake-build-relwithdebinfo
5+
6+
> "$RESULTS" # truncate
7+
8+
print_header=true
9+
for twiddles in ON OFF; do
10+
for windowing in ON OFF; do
11+
cmake . -DPYTOTUNE_USE_PREDEFINED_TWIDDLES=$twiddles -DPYTOTUNE_REIMPLEMENTED_WINDOWING=$windowing -Wno-dev > /dev/null 2>&1
12+
cmake --build . --target pytotune_benchmarks -j 10 > /dev/null 2>&1
13+
14+
./pytotune_benchmarks correction $( [ "$print_header" = "false" ] && echo false ) | tee -a "$RESULTS"
15+
# echo "" >> "$RESULTS"
16+
print_header=false
17+
done
18+
done
19+
20+
popd
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
2+
RESULTS="$SCRIPT_DIR/results_pitch_detection.csv"
3+
4+
pushd ../cmake-build-relwithdebinfo
5+
6+
> "$RESULTS" # truncate
7+
8+
print_header=true
9+
for hwy in ON OFF; do
10+
cmake . -DPYTOTUNE_USE_HWY=$hwy -Wno-dev > /dev/null 2>&1
11+
cmake --build . --target pytotune_benchmarks -j 10 > /dev/null 2>&1
12+
13+
for omp in ON OFF; do
14+
omp_threads=$( [ "$omp" = "OFF" ] && echo 1 || echo "" )
15+
OMP_NUM_THREADS=${omp_threads:-$(nproc)} ./pytotune_benchmarks detection $( [ "$print_header" = "false" ] && echo false ) | tee -a "$RESULTS"
16+
# echo "" >> "$RESULTS"
17+
print_header=false
18+
done
19+
done
20+
21+
popd

‎benchmarks/cache_line_report.csv‎

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
Source File Source Line INST_RETIRED.ANY CPU_CLK_UNHALTED.THREAD CPU_CLK_UNHALTED.THREAD_P MEM_INST_RETIRED.ALL_LOADS MEM_LOAD_RETIRED.L1_MISS MEM_LOAD_RETIRED.L3_MISS
2+
[Unknown source file] [Unknown] 43377500000 16315000000 16486662567 6547611701 12559137 0
3+
pitch_shifter.cpp 250 192500000 10000000 41863233 83726592 8372758 0
4+
fft.cpp 91 4962500000 1055000000 962854359 1046582400 4186379 0
5+
move.h 236 397500000 87500000 83726466 0 4186379 0
6+
pitch_shifter.cpp 292 245000000 2500000 0 20931648 4186379 0
7+
move.h 235 205000000 115000000 251179398 230248128 4186379 0
8+
pitch_shifter.cpp 307 112500000 7500000 0 0 4186379 0
9+
wav_file.cpp 105 20000000 5000000 0 0 4186379 0
10+
yin_pitch_detector.cpp 251 12732500000 4880000000 5118658786 532742188 0 0
11+
fft.cpp 80 5622500000 1620000000 1616939621 0 0 0
12+
yin_pitch_detector.cpp 82 5420000000 2755000000 2557715939 0 0 0
13+
fft.cpp 37 5077500000 1732500000 1674529320 0 0 0
14+
fft.cpp 95 4855000000 1320000000 1548939621 0 0 0
15+
fft.cpp 38 4827500000 15000000 75863233 0 0 0
16+
fft.cpp 99 4585000000 1237500000 1046580825 1151240640 0 0
17+
yin_pitch_detector.cpp 251 3942500000 3480000000 3678271719 0 0 0
18+
yin_pitch_detector.cpp 250 3035000000 1130000000 1661717338 0 0 0
19+
fft.cpp 95 2567500000 1037500000 1122444058 0 0 0
20+
fft.cpp 38 2490000000 10000000 0 0 0 0
21+
fft.cpp 96 2452500000 190000000 75863233 0 0 0
22+
fft.cpp 37 2420000000 12500000 34000000 0 0 0
23+
fft.cpp 38 2367500000 5000000 68000000 0 0 0
24+
yin_pitch_detector.cpp 81 2355000000 827500000 796426900 65946138 0 0
25+
fft.cpp 95 2332500000 227500000 209316165 0 0 0
26+
yin_pitch_detector.cpp 82 2320000000 3330000000 2489715942 0 0 0
27+
fft.cpp 39 2312500000 1872500000 1590802854 0 0 0
28+
yin_pitch_detector.cpp 80 1587500000 720000000 826206752 0 0 0
29+
fft.cpp 103 1267500000 825000000 954991126 0 0 0
30+
fft.cpp 80 1237500000 20000000 0 0 0 0
31+
fft.cpp 103 1227500000 35000000 0 0 0 0
32+
fft.cpp 99 1180000000 107500000 75863233 0 0 0
33+
cmath 412 860000000 222500000 167452932 0 0 0
34+
fft.cpp 76 810000000 202500000 209316165 62794944 0 0
35+
fft.cpp 73 802500000 200000000 251179398 209316480 0 0
36+
yin_pitch_detector.cpp 81 787500000 70000000 38796296 497258192 0 0
37+
yin_pitch_detector.cpp 232 610000000 227500000 76048717 0 0 0
38+
fft.cpp 45 570000000 142500000 293042631 0 0 0
39+
fft.cpp 76 525000000 230000000 243316165 104658240 0 0
40+
pitch_shifter.cpp 292 485000000 480000000 586085262 293043072 0 0
41+
fft.cpp 47 412500000 187500000 167452932 0 0 0
42+
fft.cpp 36 390000000 152500000 83726466 0 0 0
43+
fft.cpp 80 382500000 165000000 251179398 104658240 0 0
44+
pitch_shifter.cpp 226 340000000 132500000 167452932 0 0 0
45+
pitch_shifter.cpp 290 340000000 102500000 83726466 0 0 0
46+
yin_pitch_detector.cpp 235 340000000 112500000 70600000 0 0 0
47+
pitch_shifter.cpp 263 302500000 127500000 293042631 20931648 0 0
48+
pitch_shifter.cpp 196 272500000 162500000 167452932 0 0 0
49+
pitch_shifter.cpp 307 262500000 67500000 41863233 0 0 0
50+
pitch_shifter.cpp 232 252500000 152500000 125589699 0 0 0
51+
pitch_shifter.cpp 197 252500000 105000000 125589699 0 0 0
52+
fft.cpp 49 227500000 77500000 41863233 0 0 0
53+
pitch_shifter.cpp 291 225000000 70000000 41863233 41863296 0 0
54+
windowing.h 20 225000000 102500000 125589699 0 0 0
55+
yin_pitch_detector.cpp 230 225000000 50000000 41212121 20931648 0 0
56+
move.h 237 210000000 125000000 41863233 0 0 0
57+
yin_pitch_detector.cpp 253 210000000 72500000 74363233 0 0 0
58+
fft.cpp 37 207500000 0 0 0 0 0
59+
pitch_shifter.cpp 197 205000000 0 0 0 0 0
60+
pitch_shifter.cpp 214 197500000 92500000 41863233 0 0 0
61+
fft.cpp 45 187500000 5000000 0 0 0 0
62+
fft.cpp 48 182500000 5000000 0 0 0 0
63+
pitch_shifter.cpp 291 182500000 0 0 0 0 0
64+
pitch_shifter.cpp 279 180000000 15000000 0 20931648 0 0
65+
fft.cpp 27 177500000 0 0 0 0 0
66+
pitch_shifter.cpp 279 177500000 1140000000 1130307291 146521536 0 0
67+
pitch_shifter.cpp 238 175000000 2500000 0 83726592 0 0
68+
stl_algobase.h 263 172500000 22500000 38796296 0 0 0
69+
pitch_shifter.cpp 272 167500000 477500000 544222029 0 0 0
70+
cmath 412 165000000 7500000 0 0 0 0
71+
pitch_shifter.cpp 257 165000000 37500000 41863233 0 0 0
72+
pitch_shifter.cpp 235 165000000 292500000 293042631 41863296 0 0
73+
pitch_shifter.cpp 213 165000000 60000000 0 0 0 0
74+
pitch_shifter.cpp 248 165000000 22500000 0 0 0 0
75+
pitch_shifter.cpp 247 150000000 40000000 125589699 0 0 0
76+
pitch_shifter.cpp 221 142500000 82500000 41863233 0 0 0
77+
pitch_shifter.cpp 207 132500000 40000000 0 83726592 0 0
78+
pitch_shifter.cpp 197 132500000 72500000 41863233 230248128 0 0
79+
pitch_shifter.cpp 210 127500000 52500000 83726466 0 0 0
80+
pitch_shifter.cpp 213 127500000 70000000 376769097 0 0 0
81+
pitch_shifter.cpp 292 127500000 0 0 0 0 0
82+
yin_pitch_detector.cpp 233 127500000 27500000 0 0 0 0
83+
pitch_correction_pipeline.cpp 12 125000000 100000000 0 0 0 0
84+
pitch_shifter.cpp 263 122500000 0 0 0 0 0
85+
pitch_shifter.cpp 197 122500000 2500000 0 0 0 0
86+
pitch_shifter.cpp 279 122500000 277500000 418632330 0 0 0
87+
pitch_shifter.cpp 291 117500000 72500000 125589699 20931648 0 0
88+
pitch_shifter.cpp 229 117500000 120000000 125589699 0 0 0
89+
pitch_shifter.cpp 198 117500000 0 0 20931648 0 0
90+
pitch_shifter.cpp 188 115000000 25000000 41863233 20931648 0 0
91+
pitch_shifter.cpp 221 112500000 0 0 62794944 0 0
92+
pitch_shifter.cpp 213 112500000 57500000 83726466 0 0 0
93+
pitch_shifter.cpp 214 110000000 37500000 41863233 0 0 0
94+
pitch_shifter.cpp 224 107500000 77500000 159589699 104658240 0 0
95+
pitch_shifter.cpp 263 105000000 0 0 62794944 0 0
96+
fft.cpp 49 102500000 0 0 0 0 0
97+
pitch_shifter.cpp 291 102500000 0 0 0 0 0
98+
pitch_shifter.cpp 249 100000000 0 0 0 0 0
99+
pitch_shifter.cpp 235 97500000 365000000 125589699 41863296 0 0
100+
pitch_shifter.cpp 199 97500000 0 0 0 0 0
101+
yin_pitch_detector.cpp 277 97500000 7500000 0 0 0 0
102+
pitch_shifter.cpp 275 95000000 147500000 293042631 125589888 0 0
103+
pitch_shifter.cpp 197 95000000 97500000 117726466 0 0 0
104+
pitch_shifter.cpp 292 92500000 2500000 0 0 0 0
105+
pitch_shifter.cpp 291 92500000 105000000 0 523291200 0 0
106+
stl_vector.h 746 92500000 62500000 0 0 0 0
107+
fft.cpp 48 90000000 5000000 0 0 0 0
108+
pitch_shifter.cpp 229 90000000 30000000 41863233 0 0 0
109+
pitch_shifter.cpp 291 87500000 0 0 0 0 0
110+
pitch_shifter.cpp 213 87500000 0 0 0 0 0
111+
pitch_shifter.cpp 217 87500000 2500000 0 62794944 0 0
112+
pitch_shifter.cpp 292 85000000 102500000 209316165 0 0 0
113+
pitch_shifter.cpp 292 82500000 35000000 0 0 0 0
114+
pitch_shifter.cpp 221 80000000 55000000 0 0 0 0
115+
pitch_shifter.cpp 198 77500000 7500000 0 0 0 0
116+
std_abs.h 82 77500000 2500000 0 0 0 0
117+
fft.cpp 49 75000000 5000000 0 0 0 0
118+
pitch_shifter.cpp 198 75000000 37500000 83726466 146521536 0 0
119+
stl_vector.h 1264 75000000 0 0 0 0 0
120+
pitch_shifter.cpp 269 72500000 117500000 41863233 0 0 0
121+
pitch_shifter.cpp 187 70000000 50000000 41863233 62794944 0 0
122+
pitch_shifter.cpp 224 70000000 37500000 0 0 0 0
123+
yin_pitch_detector.cpp 228 70000000 10000000 41142857 0 0 0
124+
wav_file.cpp 104 67500000 10000000 0 0 0 0
125+
pitch_shifter.cpp 235 60000000 0 0 41863296 0 0
126+
pitch_shifter.cpp 251 57500000 0 0 0 0 0
127+
yin_pitch_detector.cpp 230 57500000 10000000 62948716 0 0 0
128+
pitch_shifter.cpp 185 55000000 0 0 0 0 0
129+
pitch_shifter.cpp 235 55000000 117500000 125589699 0 0 0
130+
pitch_shifter.cpp 248 55000000 0 0 0 0 0
131+
pitch_shifter.cpp 251 55000000 30000000 83726466 20931648 0 0
132+
pitch_shifter.cpp 279 55000000 0 0 20931648 0 0
133+
pitch_shifter.cpp 272 52500000 2500000 0 41863296 0 0
134+
pitch_shifter.cpp 213 52500000 0 0 0 0 0
135+
pitch_shifter.cpp 279 50000000 40000000 0 0 0 0
136+
pitch_shifter.cpp 269 50000000 0 0 0 0 0
137+
pitch_shifter.cpp 218 50000000 60000000 0 0 0 0
138+
pitch_shifter.cpp 229 47500000 25000000 41863233 62794944 0 0
139+
pitch_shifter.cpp 232 47500000 270000000 334905864 62794944 0 0
140+
pitch_shifter.cpp 187 45000000 0 0 0 0 0
141+
pitch_shifter.cpp 188 45000000 0 0 0 0 0
142+
pitch_shifter.cpp 192 45000000 27500000 0 0 0 0
143+
pitch_shifter.cpp 269 45000000 52500000 0 0 0 0
144+
pitch_shifter.cpp 269 45000000 162500000 167452932 104658240 0 0
145+
pitch_shifter.cpp 250 45000000 57500000 41863233 0 0 0
146+
yin_pitch_detector.cpp 41 45000000 22500000 0 0 0 0
147+
pitch_shifter.cpp 232 42500000 155000000 167452932 0 0 0
148+
stl_vector.h 1119 42500000 17500000 0 0 0 0
149+
pitch_shifter.cpp 209 40000000 2500000 0 0 0 0
150+
pitch_shifter.cpp 251 37500000 2500000 0 0 0 0
151+
pitch_shifter.cpp 224 37500000 5000000 0 0 0 0
152+
pitch_shifter.cpp 269 37500000 0 0 0 0 0
153+
wav_file.cpp 105 37500000 0 0 0 0 0
154+
pitch_shifter.cpp 213 35000000 0 0 0 0 0
155+
wav_file.cpp 191 35000000 12500000 0 0 0 0
156+
wav_file.cpp 92 30000000 5000000 0 0 0 0
157+
pitch_shifter.cpp 192 25000000 0 0 0 0 0
158+
wav_file.cpp 104 25000000 17500000 0 0 0 0
159+
yin_pitch_detector.cpp 40 25000000 17500000 0 0 0 0
160+
pitch_shifter.cpp 189 20000000 10000000 0 0 0 0
161+
pitch_shifter.cpp 188 20000000 2500000 0 20931648 0 0
162+
stl_vector.h 1120 20000000 2500000 0 20931648 0 0
163+
yin_pitch_detector.cpp 298 20000000 5000000 0 0 0 0
164+
stl_vector.h 1119 17500000 2500000 0 0 0 0
165+
pitch_shifter.cpp 187 12500000 0 0 0 0 0
166+
stl_vector.h 1401 12500000 2500000 0 0 0 0
167+
wav_file.cpp 191 12500000 12500000 0 0 0 0
168+
yin_pitch_detector.cpp 41 12500000 32500000 0 0 0 0
169+
yin_pitch_detector.cpp 283 12500000 7500000 0 0 0 0
170+
yin_pitch_detector.cpp 299 12500000 25000000 0 0 0 0
171+
wav_file.cpp 92 7500000 2500000 0 0 0 0
172+
wav_file.cpp 91 7500000 5000000 0 0 0 0
173+
yin_pitch_detector.cpp 113 5000000 0 0 0 0 0
174+
yin_pitch_detector.cpp 298 5000000 0 0 0 0 0
175+
fft.cpp 59 2500000 0 0 0 0 0
176+
fft.cpp 59 2500000 2500000 0 0 0 0
177+
fft.cpp 56 2500000 0 0 0 0 0
178+
fft.cpp 29 2500000 0 0 0 0 0
179+
predefined_ops.h 45 2500000 0 0 0 0 0
180+
wav_file.cpp 92 2500000 20000000 0 20931648 0 0
181+
wav_file.cpp 191 2500000 0 0 0 0 0
182+
wav_file.cpp 190 2500000 0 0 0 0 0
183+
yin_pitch_detector.cpp 100 2500000 0 0 0 0 0
184+
yin_pitch_detector.cpp 57 2500000 0 0 0 0 0
185+
yin_pitch_detector.cpp 93 2500000 0 0 0 0 0
186+
yin_pitch_detector.cpp 150 2500000 0 0 0 0 0
187+
yin_pitch_detector.cpp 59 2500000 5000000 0 0 0 0
188+
yin_pitch_detector.cpp 92 2500000 0 0 0 0 0
189+
yin_pitch_detector.cpp 58 2500000 0 0 0 0 0
190+
fft.cpp 59 0 0 0 0 0 0
191+
fft.cpp 59 0 0 0 0 0 0
192+
fft.cpp 55 0 0 0 0 0 0
193+
fft.cpp 55 0 0 0 0 0 0
194+
fft.cpp 117 0 0 0 0 0 0
195+
pitch_shifter.cpp 204 0 0 0 0 0 0
196+
pitch_shifter.cpp 246 0 2500000 0 0 0 0
197+
pitch_shifter.cpp 245 0 2500000 0 0 0 0
198+
pitch_shifter.cpp 287 0 0 0 0 0 0
199+
pitch_shifter.cpp 197 0 0 0 0 0 0
200+
pitch_shifter.cpp 291 0 2500000 0 0 0 0
201+
scale.cpp 47 0 0 0 0 0 0
202+
stl_algo.h 4841 0 0 0 0 0 0
203+
stl_vector.h 1427 0 0 0 0 0 0
204+
stl_vector.h 1122 0 0 0 0 0 0
205+
stl_vector.h 1264 0 2500000 0 0 0 0
206+
stl_vector.h 805 0 2500000 0 0 0 0
207+
stl_vector.h 1264 0 0 0 0 0 0
208+
yin_pitch_detector.cpp 93 0 2500000 0 0 0 0
209+
yin_pitch_detector.cpp 91 0 2500000 0 0 0 0
210+
yin_pitch_detector.cpp 53 0 5000000 0 0 0 0
211+
yin_pitch_detector.cpp 93 0 2500000 0 0 0 0
212+
yin_pitch_detector.cpp 134 0 0 0 0 0 0
213+
yin_pitch_detector.cpp 102 0 2500000 0 0 0 0
214+
yin_pitch_detector.cpp 100 0 0 0 0 0 0
215+
yin_pitch_detector.cpp 85 0 0 0 0 0 0
216+
yin_pitch_detector.cpp 112 0 2500000 0 0 0 0
217+
yin_pitch_detector.cpp 93 0 2500000 0 0 0 0
218+
yin_pitch_detector.cpp 53 0 0 0 0 0 0
219+
ector.cpp 53 0 0 0 0 0 0

0 commit comments

Comments
 (0)