Git Product home page Git Product logo

reaper's Issues

std::vector "Out of Bounds" memory violation in ResampleAndReturnResults (Undefined behavior)

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

reference document?

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.

Voiceless fricatives

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!

taking a long time

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?

any sample input file for testing

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

malloc() memory corruption error

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 ***

======= Backtrace: =========

/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

EpochTracker's destructor not freeing memory

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.