64 Commits

Author SHA1 Message Date
90d6c686eb Add reflected pre-roll to .outputSeek() 2025-08-11 16:37:44 +01:00
2724daacaf .flush() processes new output (zero-valued input) for longer lengths 2025-08-11 14:54:32 +01:00
Geraint
3e71aec5f7 Use .outputSeek() for .exact() 2025-08-10 21:15:04 +01:00
Geraint
c3fcda8563 Add .outputSeek() for playing back samples 2025-08-10 20:15:45 +01:00
Geraint
12de19e05d Formant metric based on peaks/dips 2025-08-10 20:15:45 +01:00
cb5a8eab7e Zero .exact() output when it's too short 2025-08-05 08:00:13 +01:00
Geraint
222093b4cc Bugfix in web release 2025-06-27 02:09:03 +01:00
Geraint
c5987267e6 Add .exact() method to process entire buffers, including folding extra output back in 2025-06-14 09:41:05 +01:00
Oleksii Amplee
c78aacf638 Fix MSVC build error C2397 (narrowing conversion)
signalsmith-stretch.h(407,29): error C2397: conversion from 'int' to 'size_t' requires a narrowing conversion

MSBuild version 17.13.15+18b3035f6 for .NET Framework
2025-05-01 10:00:31 +01:00
Geraint
7c13c1dbbd Web: update docs, make tonalityHz controllable, not config 2025-04-19 09:34:54 +01:00
Geraint
94a41f9436 Rebuild web release, bump version (1.3.0) 2025-04-18 21:29:45 +01:00
Geraint
b84e9cf5e9 Refactor, split formants into 3 computation steps 2025-04-18 21:03:15 +01:00
Geraint
004a52b30d Formant shifts include tonality limit 2025-04-18 19:48:59 +01:00
97594ea3eb Add .setFormantBase() method (specified relative to sample-rate) 2025-04-16 15:21:24 +01:00
26a3a75deb Make formants a bit more blunt 2025-04-16 15:19:47 +01:00
70e4b9c4c9 Formant shift based on (rough1) freq estimation 2025-04-16 15:18:43 +01:00
Geraint
54423c34db Release v1.2.0 2025-04-16 11:57:23 +01:00
a654087551 Optional split computation, behind a configuration switch 2025-02-27 16:31:44 +00:00
8c3852cae3 Refactor chunked computation to be neater, fix some int warnings 2025-02-27 16:31:44 +00:00
1ad2839a04 Various speedups 2025-02-27 16:31:44 +00:00
Geraint
4c627c7568 Add empty final step (which is when we plan the next block) 2025-02-27 16:30:54 +00:00
46d866e9fe Split .processSpectrum() into more steps 2025-02-27 16:30:54 +00:00
2c671f01aa Compute next block in smaller steps 2025-02-27 16:30:54 +00:00
Geraint
7238c4c5a4 Use stft.finishOutput() in stretch.flush() to avoid errors 2025-02-27 16:27:07 +00:00
6d52f2e861 Add CMakeLists.txt, remove DSP library dependency/copy 2025-02-27 16:27:07 +00:00
d34b33da28 Fix time-stretching bug (never recomputed previous block) 2025-02-27 16:27:07 +00:00
94553a3789 Move input time after seeking 2025-02-27 16:27:07 +00:00
37f855cc7f It sounds OK, but doesn't null with the previous one 2025-02-27 16:27:07 +00:00
1eeba87b13 v1.1.1
* Fix bug with `.reset()` after silent input (thanks Steve!)
2025-01-29 16:42:53 +00:00
44c8f865af v1.1.0 2025-01-29 15:57:09 +00:00
bc8a7fd65e Calculate interval-step twists on-the-fly 2025-01-29 14:51:45 +00:00
Geraint
79b287ee0e Calculate vertical twists only when needed 2025-01-29 14:51:45 +00:00
Geraint
e5057a9f54 Don't need a separate prevOutput, since we use it straight away 2025-01-29 14:51:45 +00:00
Geraint
218bd0f16c Do phase-centre rotation in the time domain 2025-01-29 14:51:45 +00:00
Syl Morrison
9bffc80ec8 CMake for example command-line util 2025-01-29 14:51:45 +00:00
c867188d8e Initial web release 2024-10-22 12:24:55 +01:00
Geraint
a9d78f0331 Add .flush() for getting the final bits of output without any input 2024-02-19 10:20:40 +00:00
Geraint
ebaf93d494 Add .seek() method to setup/move input position
Also update DSP library to v1.6.0 (for `STFT::nextInvalid()`)
2024-02-16 12:11:58 +00:00
Geraint
e0231d5267 Fix inverted arguments for real distribution 2023-05-10 18:40:50 +01:00
Geraint
3c8c05b633 Tidying up 2023-05-07 23:50:33 +01:00
Geraint
8395e46da7 Skip the peak-finding if we're not pitch-shifting 2023-05-07 22:58:16 +01:00
Geraint
d1bc2e358d Fix some warnings, support random seed 2023-05-06 23:03:18 +01:00
Geraint
37db3a75a4 Even smoother phase-randomisation when stretching past 2x 2023-05-01 23:10:54 +01:00
Geraint
a9112f4f35 Move some methods up so it reads better 2023-05-01 07:49:08 +01:00
Geraint
605091c29e Randomise time-stretch slightly when it goes past 2x 2023-05-01 07:47:18 +01:00
Geraint
fddcdb628f De-emphasise phase-vocoder prediction when amplitude changes up or down 2022-12-18 17:07:16 +00:00
Geraint
7ca6c8d13c Restore up-front vertical phase-twist calculations and prediction weighting 2022-12-18 02:32:29 +00:00
Geraint
f72fa99cfa Bugfix: if the prediction is too weak, scale the fallback properly.
This was a problem when doing large pitch-shifts, because the pitch-map ends up folding back on itself, causing sections of the spectrum to have 0 energy.  This was fine for the max-energy channel, but dependent channels would then have a zero prediction, and would quote their input without energy-scaling.
2022-12-18 00:20:09 +00:00
Geraint
ec3c6a253f Refactor (nest some conditions, remove unused variables) 2022-12-17 23:30:39 +00:00
Geraint
3ffe6704ce Correct energy for preliminary (phase-vocoder) output. 2022-12-17 23:08:45 +00:00