Commit Graph

49 Commits

Author SHA1 Message Date
Chris Cannam
5f93a90902 Merge from branch midside3 2023-03-20 10:08:20 +00:00
Chris Cannam
2dcb27d3dd Toward properly testing reset 2023-03-20 10:08:01 +00:00
Chris Cannam
e2611485d8 Use mid-side processing in channels-together mode in R3; for a more stable stereo image, ensure transient bins are reset in mid whenever they are in side 2023-03-17 13:19:18 +00:00
Chris Cannam
d3830870c0 Experiments with mid-side in R3 - in this code always used when channels=2 2023-03-15 18:01:21 +00:00
Chris Cannam
4d5460c3e8 Reporting fix 2023-03-08 14:44:52 +00:00
Chris Cannam
4b4c50b479 Tests for handling of final flag 2023-02-21 10:28:57 +00:00
Chris Cannam
1368ba87ee Fix latency calculations in resample-before modes. This affects realtime use in the non-recommended realtime pitch modes (i.e. those other than HighConsistency) 2023-02-20 15:26:12 +00:00
Chris Cannam
afd1b1f86c Ensure we consume when called with final=true and no samples - this was the default behaviour in R2 and also initially in R3 but changed when resample-before modes were added 2023-02-20 15:25:27 +00:00
Chris Cannam
cc3e265b26 Update copyright dates 2023-01-10 11:10:06 +00:00
Chris Cannam
1bd266cdb6 Defend against NaN/Inf and negative ratios 2022-09-30 10:36:29 +01:00
Chris Cannam
de56cd114a Update the resampler logic to follow that of R2 more - ignore the pitch hq/hs setting in offline mode entirely. The alternative is too tricky to handle elegantly in the command line tool, which I think means too complicated 2022-09-29 11:19:21 +01:00
Chris Cannam
9e423cdd8c Handle non-ideal sample rates in R3; document sample rate parameter 2022-09-26 16:02:13 +01:00
Chris Cannam
92362bdba0 Resample in chunks as well, to avoid overrunning resample buffer 2022-09-02 15:08:29 +01:00
Chris Cannam
021de9d51c Add resample-before mode 2022-09-02 14:49:34 +01:00
Chris Cannam
4336d47a02 With longer process sizes we can end up with insufficient space in the inbuf, but enough in the outbuf following the previous retrieve call for a consume to be possible before writing to the inbuf 2022-09-01 10:41:25 +01:00
Chris Cannam
e58c6018c5 This appears benign and should be slightly quicker 2022-08-18 15:24:24 +01:00
Chris Cannam
6ecc973d41 Keep a structure with recommended limits for inhop/outhop in current configuration; skip readahead entirely when inhop is greater than a certain limit - allowing us to reduce start delay further in short-window mode 2022-08-05 14:58:12 +01:00
Chris Cannam
3eae190a85 This is not actually usually a serious problem, unlike the <1 case which can be genuinely troublesome 2022-08-04 16:31:23 +01:00
Chris Cannam
7833e1bff1 Avoid kick analysis in single-window mode; comment update 2022-08-04 12:08:15 +01:00
Chris Cannam
5b26e90a58 Fix to windowing offsets 2022-08-04 11:19:13 +01:00
Chris Cannam
fe9e86bc3c Per-channel window source buffer, & connect it up 2022-08-04 10:31:36 +01:00
Chris Cannam
d1386b0a0c Provide a separate window source buffer to simplify single/multi window logic 2022-08-04 10:02:09 +01:00
Chris Cannam
2fa0e1162e Toward properly expressing the window sizes in Guide when in single-window mode, so as to separate the time-domain frame length from the longest FFT within R3Stretcher and allow us to use a shorter time-domain frame. Not working correctly in single-window mode yet. 2022-08-03 14:16:17 +01:00
Chris Cannam
9fff2836c6 Avoid RatioMostlyFixed in RealTime mode, it can lead to unpleasant surprises 2022-08-02 16:22:24 +01:00
Chris Cannam
d0cca91e30 Impose a limit here 2022-07-14 13:52:04 +01:00
Chris Cannam
e018458736 Make this fully single-windowed rather than just short-windowed 2022-07-14 13:44:22 +01:00
Chris Cannam
02928a3c86 Experimentally (re-)introduce short window mode 2022-07-14 11:55:21 +01:00
Chris Cannam
dc74c993cf Add profile points; switch to microseconds 2022-07-14 10:02:39 +01:00
Chris Cannam
dca4c96834 Wire up setExpectedInputDuration 2022-07-07 10:54:23 +01:00
Chris Cannam
263e0cbf70 Ensure output accumulator is properly drained at finish. We rely on the calculated output count (in offline mode) to truncate properly. 2022-07-07 10:35:01 +01:00
Chris Cannam
a66d2a5140 Fix consumed counter for key-frame mapping 2022-07-07 09:43:17 +01:00
Chris Cannam
567e8636cd Enable PROCESS_SAMPLE_TYPE for R3 as well, switching from double to process_t throughout 2022-07-06 10:40:10 +01:00
Chris Cannam
6e941fa2d3 Update the OptionPitch* options so that they do the expected thing for the R3 engine as well - this speeds up realtime mode when not dynamically pitch-shifting 2022-07-06 10:22:50 +01:00
Chris Cannam
72654b04ea Introduce getPreferredStartPad(), deprecate getLatency() and replace with getStartDelay(); document and test both 2022-07-05 17:53:36 +01:00
Chris Cannam
687e3958a7 Connect up the ChannelsTogether option in R3 as well, to extend the channel lock range upward 2022-07-04 10:52:50 +01:00
Chris Cannam
54b10f155c Padding and key-frame fixes 2022-06-29 16:51:18 +01:00
Chris Cannam
56c60d2420 Fix target duration in offline mode 2022-06-29 14:44:21 +01:00
Chris Cannam
2940bde16f Since we're adding more padding than a half-frame, we have to remove a scaled proportion of it 2022-06-27 16:37:52 +01:00
Chris Cannam
5e726e79aa Toward further tests 2022-06-24 18:05:32 +01:00
Chris Cannam
b9e6ebb6e3 Implement setMaxProcessSize in R3 2022-06-24 14:01:11 +01:00
Chris Cannam
9c04885d27 Read correct sample count out from mixdown buffer, when draining and having read less than one outhop at input 2022-06-24 13:25:36 +01:00
Chris Cannam
2478d54c05 We actually need to fill with the whole size (matching our reported latency) 2022-06-24 11:51:25 +01:00
Chris Cannam
d65755427f In offline mode, create the resampler only if needed (i.e. if the pitch ratio is still 1.0 at the point when process is first called); and use plain 2048-sample fft with unity stretch 2022-06-24 10:51:40 +01:00
Chris Cannam
b318fb4e8b Wire through debug level changes; tidy 2022-06-22 13:42:58 +01:00
Chris Cannam
5137b19407 Wire up Log throughout 2022-06-22 11:33:36 +01:00
Chris Cannam
e8b63bd10d These can just be overloads for log, which at least avoids us using log2 as a method name here 2022-06-22 09:10:02 +01:00
Chris Cannam
7434abe664 More on logging 2022-06-21 17:03:24 +01:00
Chris Cannam
35653f3a86 Start reworking log output 2022-06-21 16:06:16 +01:00
Chris Cannam
e546767a6d Rename/rejig so as to have just a single Impl and then R2 and R3 stretcher classes 2022-06-21 10:25:08 +01:00