Timestretching/Pitchshifting
- 
 @MikeB There is a Simple Pitch Shift in the Faust Libraries, is called Transpose I think. 
- 
 Alright, I think the timestretching is ready for testing so anyone that wants to check it out should pull the feature/time_stretchingbranch.https://github.com/christophhart/HISE/tree/feature_timestretch There's a simple core.stretch_playernode that can pitch / stretch a single audio file and the sampler module has a timestretching parameter that can be set to different modes.It's highly experimental and you might experience glitches with different samplerates / buffer sizes, but feel free to play around and let me know how it works / sounds for you. 
- 
 @Christoph-Hart Yippeee! Will give this a go very soon. Did you manage to optimize the FFT stuff? 
- 
 @d-healey yes I swapped the fft with the juce wrapper which uses IPP / vdsp / FFTW. However the performance on my Windows system was already pretty good (about 2% per voice). I‘m curious how the sound quality holds up against the alternatives - in my tests it‘s pretty good. 
- 
 I'm getting some errors, I'll post some below. They are all in the same file, pixman-arm-neon-asm.h. In file included from ../../../../../HISE/hi_sampler/sampler/components/SamplerSettings.cpp:20, from ../../../../../HISE/hi_sampler/hi_sampler.cpp:56, from ../../JuceLibraryCode/include_hi_sampler.cpp:9: ../../../../../HISE/hi_rlottie/src/vector/pixman/pixman-arm-neon-asm.h:214:27: error: stray ‘#’ in program 214 | mov TMP1, VX, asr #16 | ^ ../../../../../HISE/hi_rlottie/src/vector/pixman/pixman-arm-neon-asm.h:218:42: error: stray ‘#’ in program 218 | add TMP1, mem_operand, TMP1, asl #1 | ^ ../../../../../HISE/hi_rlottie/src/vector/pixman/pixman-arm-neon-asm.h:219:27: error: stray ‘#’ in programHuh actually it's really weird because that file hasn't changed since you added it...Oh I get it, it's something to do with the include in SamplerSettings, but I don't know what... 
- 
 Meh I commented out the line and it compiled just fine. I'm using FFTW, the time stretching sounds really good. With a guitar loop I'm getting a little bit of what I'd call a bassy humming sound when it's stretched but with a percussive loop there are no issues. Here's some of the loops I'm testing with - https://e.pcloud.link/publink/show?code=XZji1BZ3qTkeAWhYWkoVhYP2yNmVpaFRtIy The bug where HISE's internal BPM is off by 10 is still there. When the project is compiled though it's fine. Is it possible to go down to 25%? I know it won't be as "pleasant" but can be useful for more sound design stuff. 
- 
 @d-healey haha, I'm using a new tool within VisualStudio (Resharper C++) and I think I've pressed a wrong shortcut and it inserted this completely idiotic include statement. I also got the compilation errors but I thought it was a glitch so I removed the file locally... I can't reproduce the BPM issue - is this Linux only? And yes the timestretching algorithm can cope with extreme ratios (and it even starts to randomize the phase outside of the 0.5...2.0 range to get a PaulStretch-like sound. I've just added this limitation arbitrarily so I don't have to deal with buffers that get too big... 
- 
 @Christoph-Hart Yeah it could be a Linux thing, I haven't tested on other systems. 
- 
 @Christoph-Hart Very cool! Where can we poke around to lower the limit? And is there a way to reach the stretch ratio of the Sampler module via scripting ? 
- 
 And is there a way to reach the stretch ratio of the Sampler module via scripting ? Sure: Sampler.setTimestretchRatio(newRatio);
- 
 I've updated the docs to include a chapter about how it works: https://docs.hise.audio/hise-modules/sound-generators/list/streamingsampler.html#timestretching 
- 
 @Lindon Need to update your VI thread :) 
- 
 @Christoph-Hart Much appreciated Christoph!  
- 
 @Christoph-Hart Nice! Is getTimestretchOptions() not implemented yet? 
- 
 
- 
 Thank you Christoph Hart for this feature. My project was stuck, but now the problem is solved! Don't you think @d-healey that it would be interesting to offer a tutorial on your YouTube channel to explain how to properly implement time stretching? It could help more than one person. 
 Thanks,
 Remi Dufeu
- 
 @d-healey Pulled the branch yesterday and everything else is there but I'm getting function not found both with getSampler and getChildSynth 
- 
 @audiolyf Maybe you pulled before Christoph added it? 
- 
 
- 
 @ABYSS_CO said in Timestretching/Pitchshifting: Don't you think @d-healey that it would be interesting to offer a tutorial on your YouTube channel to explain how to properly implement time stretching? Definitely, once it's a little more mature.