google / reaper Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Line 31 in a3926d3
when the file does not have any signal (all zeros) the number of resid_peaks is 0 which causes an index out of bound error in EpochTracker::BacktrackAndSaveOutput() line 1029
Hello, How do I set the frame shift parameter? thx
Stream is opened
REAPER/epoch_tracker/epoch_tracker.cc
Line 1194 in ba483dc
opened file never closed
REAPER/epoch_tracker/epoch_tracker.cc
Line 1206 in ba483dc
Hey there. Thanks for your great API.
We're in the middle of integrating REAPER into our software, and it seems awesome. However, we noticed a lot of seemingly random crashes, related to either allocation or deallocation, when running a lot of iterations of ResampleAndReturnResults. Looking through it, I stumbled across
float last_time = (output_[0].resid_index / sample_rate_) + endpoint_padding_;
int32_t n_frames = RoundUp(last_time / resample_interval);
[...]
for (int32_t i = limit; i >= 0; --i) {
int32_t frame = RoundUp(output_[i].resid_index / (sample_rate_ * resample_interval));
[...]
}
Let's just do some math here.
Let's assume:
output[0].resid_index = 37976
sampleRate = 44100
resample_interval = 0.02
Yields:
lastTime = 0,8611
n_frames = 44
In the for loop, if i == 0,
frame = 37976 / 882 = 43,05 (round up ->) = 44
That's an out-of-bounds for the f0 vector that's only allocated 43, trying to access 44 (counting from zero). I suspect this to be the reason for the "random" crashes later on. What would the expected behavior be? Should it rather just be:
int32_t frame = RoundUp(output_[i].resid_index / (sample_rate_ * resample_interval)) -1;
?
All the best,
Sebastian
thank you for your share. Can you share reference document for REAPER. I read code but can not understand something and why you do that.
The whole computation is time cost, sometimes I only need the v/uv info. What's the fastest way?
Hi there, I’ve come across some cases where REAPER identifies GCIs during voiceless fricatives. Do you have any suggestions about what may be happening here. I can share the wav file. Thanks!
This algorithm sounds very interesting and I would like to compare it against some other methods for extracting vocal pitch. I am running reaper -i file.wav -f file_pitch.f0 -x 200 -m 50 -d debug_output.txt -e .01
and it is taking a very long time (20 min+) on a modern mac for a ~1 minute file. Is it supposed to take this long?
I am getting this error message on a test wav file, not sure what format is the program expecting. A working sample wav file would help.
Attempt to load multi channel audioFailed to load waveform
Hello, Thanks for developing REAPER.
Because I had no previous experience with C/C++, it took me quite a few hours to figure out how to compile REAPER. So I wrote up this step by step tutorial. I hope it can help some people.
Download here: https://osf.io/bz5wk/download
Hi reaper,
I was running parallel reaper processes as worker processes spawned by python's multiprocessing Pool to speed up generation of .f0 files from multiple single-channel .wav files. In each worker process, I call
os.system("reaper -i FILENAME.wav -f FILENAME.f0 -e 0.02 -a")
which executes the reaper command processing that filename in a subshell (Obviously I made sure that no two reaper workers access the same FILENAME).
All of a sudden, I got an unexpected malloc error below.
(FYI I am running Ubuntu 16.04 LTS, but have confirmed this error persists on Mac OSX as well...)
Residual symmetry: P:837.185303 N:803.405762 MEAN:-0.159036
Inverting signal
*** Error in `reaper': malloc(): memory corruption: 0x0000000006212a70 ***
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7ff4097747e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8213e)[0x7ff40977f13e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7ff409781184]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(_Znwm+0x18)[0x7ff40a073e78]
reaper(_Z12MakeF0OutputR12EpochTrackerfPP5Track+0x82)[0x415fcf]
reaper(_Z18ComputeEpochsAndF0R12EpochTrackerffPP5TrackS3_S3_+0x119)[0x416361]
reaper(main+0x4c1)[0x416879]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ff40971d830]
reaper(_start+0x29)[0x415ce9]
======= Memory map: ========
00400000-0043c000 r-xp 00000000 08:01 794191 /usr/bin/reaper
0063b000-0063c000 r--p 0003b000 08:01 794191 /usr/bin/reaper
0063c000-0063d000 rw-p 0003c000 08:01 794191 /usr/bin/reaper
01686000-06230000 rw-p 00000000 00:00 0 [heap]
7ff404000000-7ff404021000 rw-p 00000000 00:00 0
7ff404021000-7ff408000000 ---p 00000000 00:00 0
7ff40945b000-7ff40961c000 rw-p 00000000 00:00 0
7ff4096fd000-7ff4098bd000 r-xp 00000000 08:01 394095 /lib/x86_64-linux-gnu/libc-2.23.so
7ff4098bd000-7ff409abd000 ---p 001c0000 08:01 394095 /lib/x86_64-linux-gnu/libc-2.23.so
7ff409abd000-7ff409ac1000 r--p 001c0000 08:01 394095 /lib/x86_64-linux-gnu/libc-2.23.so
7ff409ac1000-7ff409ac3000 rw-p 001c4000 08:01 394095 /lib/x86_64-linux-gnu/libc-2.23.so
7ff409ac3000-7ff409ac7000 rw-p 00000000 00:00 0
7ff409ac7000-7ff409add000 r-xp 00000000 08:01 394116 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff409add000-7ff409cdc000 ---p 00016000 08:01 394116 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff409cdc000-7ff409cdd000 rw-p 00015000 08:01 394116 /lib/x86_64-linux-gnu/libgcc_s.so.1
7ff409cdd000-7ff409de5000 r-xp 00000000 08:01 394127 /lib/x86_64-linux-gnu/libm-2.23.so
7ff409de5000-7ff409fe4000 ---p 00108000 08:01 394127 /lib/x86_64-linux-gnu/libm-2.23.so
7ff409fe4000-7ff409fe5000 r--p 00107000 08:01 394127 /lib/x86_64-linux-gnu/libm-2.23.so
7ff409fe5000-7ff409fe6000 rw-p 00108000 08:01 394127 /lib/x86_64-linux-gnu/libm-2.23.so
7ff409fe6000-7ff40a158000 r-xp 00000000 08:01 394983 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff40a158000-7ff40a358000 ---p 00172000 08:01 394983 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff40a358000-7ff40a362000 r--p 00172000 08:01 394983 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff40a362000-7ff40a364000 rw-p 0017c000 08:01 394983 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7ff40a364000-7ff40a368000 rw-p 00000000 00:00 0
7ff40a368000-7ff40a38e000 r-xp 00000000 08:01 394075 /lib/x86_64-linux-gnu/ld-2.23.so
7ff40a3e6000-7ff40a4b1000 rw-p 00000000 00:00 0
7ff40a517000-7ff40a582000 rw-p 00000000 00:00 0
7ff40a58a000-7ff40a58d000 rw-p 00000000 00:00 0
7ff40a58d000-7ff40a58e000 r--p 00025000 08:01 394075 /lib/x86_64-linux-gnu/ld-2.23.so
7ff40a58e000-7ff40a58f000 rw-p 00026000 08:01 394075 /lib/x86_64-linux-gnu/ld-2.23.so
7ff40a58f000-7ff40a590000 rw-p 00000000 00:00 0
7ffd8caad000-7ffd8cace000 rw-p 00000000 00:00 0 [stack]
7ffd8cbee000-7ffd8cbf0000 r--p 00000000 00:00 0 [vvar]
7ffd8cbf0000-7ffd8cbf2000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted
Could there be something I'm doing wrong? Or could Reaper be thread-unsafe? I just recently started using REAPER, and would really like to use this simple and powerful command-line tool frequently in the future.
Thank you for reading my issue :)
Best,
Wilson
I am trying to wrap reaper as a c extension for a python program however I noticed that there is a memory leak when calling a modified version of epoch_tracker_main.cc
I am not too familiar with C++ but the destructor for EpochTracker is empty
so I've added a call to CleanUp() method inside the destructor and and the leak seems to disappear.
EpochTracker::~EpochTracker(void) {
CleanUp();
}
I was wondering if this makes sense as I am unfamiliar with c++ conventions
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.