tcStretch

Happy to announce tcStretch is ready for public consumption.

tcStretch is a Windows VST 2.4 plug-in for time stretching, pitch shifting, and blurring. Time stretch can be up to 1 million times slower. Pitch shift is plus or minus one octave. Blurring blends nearby spectral material to make the output less static.

Playback is sensitive to transients in the source material. Playback rate and blur amount are automatically adjusted according to the transient contour of the material being stretched. Playing transients at a faster rate than non-transients tends to make the output sound less obviously stretched. Playing transients more slowly than non-transients emphasizes the stretchiness [good when playing in reverse mode with highly transient material]. Adding blur brings in some subtle (or not so subtle) randomness which helps to keep the output less static.

This is a beta release, let me know if you have issues or suggestions.

tcStretch Screenshot

You can download the latest version here:  tcStretch_05e.zip

(Previous versions are here: tcStretch_05c.zip  tcStretch_05d.zip)

Zip includes Windows x64 DLL (64 bit), Windows x86 DLL (32 bit), and Manual.

Version 0.1 included Win32 and Win64 versions + bugfix
Version 0.2 supports Drag-and-Drop for loading files to stretch (may or may not work for you depending on your DAW).
Version 0.3 has (hopefully) improved Drag and Drop support, sends output from mono source samples to both left and right channels, and defaults to meters showing.
Vesion 0.3b has a fix for the ‘stuck sound’ reported by some users.
Version 0.3c restores sample files properly on reloading saved projects.
Version 0.4 brings lots of changes: important bugfixes, Wander controls, Transport controls, Direction Controls, Jump controls, Level control, and Octave Harmony controls. The GUI needs some rework to prune the clutter and settle the overall look and feel, but I wanted to get the new features some exposure first.
Version 0.4a has updates for the transport controls and an update to the playback engine for increased clarity during non-stretched playback.
Version 0.4b has updates to correctly read WAV files using 32bit or 64bit sample encoding.
Version 0.5 adds scrolling and zooming of the waveform, has reduced memory footprint, adds a wander enable button to enable/disable wandering, and a bugfix to accept WAV/AIFF files with odd sized chunks – some files that failed to load under previous versions will load correctly in this version.
Version 0.5a fixes a bug in the 0.5 version 32-bit display code.
Version 0.5b adds tooltips, a bypass indicator, bug fixes to restore volume envelope and region selection, and misc internal improvements and bug fixes.
Version 0.5c has fix to allow Jump buttons to be automated and adds detailed info to DLL properties dialog (right click in Windows Explorer)
Version 0.5d has improved support for Preset saving/loading from DAW. Not perfect support, but it should be better than previous versions.
Version 0.5e has bugfixes for region handles, bugfixes for restoring the plugin state from saved projects, bugfixes for restoring the plugin state from presets saved via DAW, and a Zoom limiter that stops zooming in at the point where the display of a single analysis is 32 pixels wide.

Have fun. 🙂

72 thoughts on “tcStretch

  1. Pingback: tcStretch is now available | tonecarver

  2. New version (0.1) is available that includes the 32-bit version of the plugin and contains a bugfix to prevent a crash when the start region marker is greater then the end region marker.

  3. Version 0.2 is up with support for Drag-and-Drop. You can drop files onto the GUI or use the Load button to browse for them. Treat this as an experimental feature for now, let me know if this does not work for you.

  4. Thanks for this! Amazing, as usual. Great job!
    Drag and drop doesn’t work in FL Studio 11.1.
    Suggestion: The ability to scrub through the sample position. Maybe even have it automate-able or option of of LFO.

    • I had another user report this too and it is a bit puzzling. Which version of tcStretch are you using? Could you try the latest version (0.3) and see if that makes any difference?

  5. Version 0.4 is up:
    – important bugfixes
    – Wander controls (see manual for explanation)
    – Transport controls
    – Direction Controls
    – Jump controls
    – Level control
    – Pitch Shift improvements and Octave Harmony controls.

    ** Parameters changed in this version so may may not be backward compatible with any saved projects you have. Better to finish up those projects before installing this version **

  6. Hi – plugin is looking great and I’m excited to try it, but I’m not able to get it to work in Reaper. It instantiates, and can load (some) WAV files, and play them, but it applies no apparent processing to them. UI stuff all appears to work (meaning, sliders move, buttons toggle, meters indicate, play cursor moves, etc) but nothing ever changes in the sound, the region markers are ignored (always plays from the start). The “level” knob works, but literally nothing else changes anything in the output regardless of how the plugin is manipulated.

    This is 0.4a, on Reaper 4.75, on Windows 8/64. I tried 64 and 32bit versions of the plugin; everything the same in both.

    Also, in Reaper it seems that the track containing the plugin needs to have “record” enabled — I have a feeling that is a Reaper optimization thing and not the plugin’s fault, but I mention it in case.

    The plugin also crashed Reaper a few times when opening media files it didn’t seem to like (WAVs).

    I’d be happy to provide more info if desired, but I’ll be on a trip for a week starting tomorrow AM, and possibly offline, possibly not.

    Thanks for the awesome work!

    • Sorry, got it — that’s just a preview button, as clearly explained in the manual. 🙂 I think I thought the real play button wasn’t working because I didn’t have “record” enabled on the reaper track.

      The crashing remains though. One possible pattern is that a working file was 24/44.1 and a crashing file was 24/96 (in the context of a 24/44.1 session.)

  7. Hi, this is a great piece of software. Do you plan to include a Render button, so one can instantly save one’s stretch result as a WAV file, as you can for example do it in Paulstretch ? That would be awesome.

      • Yeah the Daw’s a way to do it, but it’s quite a lot of work in some Daws. Thanks for considering it 🙂

  8. Version 0.5 is now up:
    – new: scrolling and zooming of the waveform
    – new: wander enable button to enable/disable wandering
    – improved: reduced memory footprint
    – bugfix: accepts WAV/AIFF files with odd sized chunks

  9. Thanks for the awesome continued development!

    I’m still having a lot of trouble loading most WAV files… I’d guess 95% of them don’t work. I wonder if something about the way Reaper renders WAVs has something to do with triggering the bug? (Most of the files I’m attempting to load I rendered myself.) I can provide examples if you’d like.

    I tried in 32bit windows and in 64bit windows (with 64bit plugin), with 16bit depth files and 24, with 44.1k and 96k, etc. I tried rendering from Reaper with and without BWF chunk. These are standard (afaik), and uncompressed, PCM WAV files.

    It doesn’t crash anymore when trying to load a file it can’t read, it just does nothing.

    I’d like to use this for some silent film live scoring that I’ll be doing (do you take donations anywhere?) but at this point it’s kind of a non-starter because I can’t get anything to load. 🙂

    Thanks for any ideas,
    -c

    • Which version of the plugin are you using? How long (duration in seconds) are the files? Can you send me a file or two that is not loading so I can investigate the loading failures?

      • (BTW this was my mistake — I forgot my own point about record needing to be enabled on the track in reaper — and the dev is helping figure out what’s up with that…)

  10. Version 0.5b is now up:
    – tooltips
    – a bypass indicator to indicate when the plugin is offline
    – bug fixes to restore volume envelope and region selection
    – misc internal improvements and bug fixes

  11. Just fantastic! I play live in a covers band using VST’s, and I was looking for a media player with pitch-independent tempo slowing, so I could practice the songs. This fits the bill great. The ONLY option that it is missing is a right-click midi-learn, so for instance I could start/stop playback when hitting a button on my controller. Great work. Maybe you could work a deal with Brad from Cantable Software to earn a royality on his sales if he puts your code for tempo-slowing inside his existing media player on his DAW designed for live play??! (BTW, 0.5b does not drag and drop load in Cantabile either).

  12. that’s really an amazing plugin, thanks a lot for sharing it !
    I only have one suggestion, it could be useful in my opinion to have a basic adsr env for the pause button. the playback rate can be use as a freeze fonction, and the pause button like a flexible pause fonction.there is actually no sampler ( and this one is a lot more than a sampler !) that can do this except Crossfade Loop Synth from Expert Sleepers.
    You are really doing an amazing work, and this is actually one of the most creative vst I know

  13. I still run into the plugin not saving it’s settings in Bitwig Studio 1.1.6 64 Bit with the 32 Bit version of tcStretch 05c on Windows 8.1 x64. Not sure why, it sometimes seems to work, but in other cases I get the empty defaults each time I load the project and lose everything I did.
    In the one case where the settings were saved, I had trouble with the volume curve in the waveform – it looked different from what I had saved. So it seems there is still something fishy in the parameter saving?

    Otherwise I totally love tcStretch 🙂

    Thanks,

    Tom

    • Yes, I have had some reports about problems with parameter save/recall. Not sure what is going on there since it seems to work well on some systems and not well on others. I’ll post updates here if I find a fix or workaround for the problem.

      • Hello. I use audacity and sound forge and when I try to use this plugin in either program, it doesn’t seem to do anything. I select a chunk of audio, a pretty short section in sound forge for instance, go to effects, click on tc stretch and when I hit the preview button, I just get silence. I am also blind so I use a screen reader so I wonder what I might be doing wrong? thanks for the help and info.

      • Are you loading a wav or aiff file into tcStretch? tcStretch only plays from the file that was loaded into it – it does not operate on any audio directly fed into it. In most hosts you can drag the file onto tcStretch to load it, or you can click the load button to browse for the file. After loading the file the preview button should play the file that was loaded.

  14. I really love it too, some really useful controls, some great idea, an amazing sound quality and a very low cpu use. congratulations, really !
    Damien

  15. Interesting tool, packed with potential – thanks.
    In the name of constructive feedback:
    1. Allow numeric meter value input as well as sliders/knobs
    2. Allow Octave Mixer harmony offset values to be variable (rather than set at a full octave (+/-12))
    3. Consider being able draw a line graph over the spectrograph to set a variable pitch profile

  16. Hi Tonecarver,

    I just discovered your plugins. Great stuff! I have a question about tcStrecth. It’s a great tool but saving the settings with my Cubase 5 Projects doesn’t work. I know there are issues with some DAW’s but can you provide us an update on this? I’m referring to a status update, not necessarily a software update although the latter would be great ofcourse. Thanks.

    BTW: I also tried saving tcStrecth presets but also to no avail.

    • tcStretch relies on the host DAW for saving its settings. I don’t have Cubase so I am not able to give any advice or do any debugging (unless maybe they offer a trial version? I can check into that). Have you tried asking on the Cubase forums? Folks there would be much more knowledgable about Cubase than myself and may have some tip or tweak to make settings saving work.

      • I also have problems with some settings not being saved correctly in Bitwig Studio (for instance the position of the envelope points in the waveform and sometimes the used audio file is not restored).. Since I don’t have these problems with your other plugins, I guess there is something wrong with tcStretch.
        There is a demo of Bitwig that can’t save projects, but you can save presets which also show those problems. It’s a bit hard to track down and not totally consistent…

  17. New version is avalable, 0.5d, that has improved support for saving/loading presets via DAW. It is not ~complete~ support but it should be a lot better about saving/restoring state than previous versions. If those of you who have reported problems in this area (Boqurant, Tom, others?) could give this version a try and let me know how it is working for you I would appreciate it! 🙂

    New version (0.5d) is here: https://www.dropbox.com/s/nuljm8jgayzdc40/tcStretch_05d.zip?dl=0

    • Hi Bill,

      Thanks for the very swift update! Here’s my feedback: I have some great news and some not so good news 😉

      – GREAT: the settings are now saved with my Cubase Project. Great. Thanks a lot again. I can start using it. Can’t thank you enough for this.

      – Not so good 1: I’m not sure if this is a known or maybe a new bug: the moment I click on the waveform, all sound stops. I’m not able to re-enable it in any way and saving the project in this state and reopening does not re-enable the sound so if I accidentally save a project in this state, I’d have a problem….

      – Not so good 2: In case of this bug I COULD save the current settings as a preset BUT that still is not working in Cubase. I have to admit I seldom save VST presets so that is not on my wish list but it’s exactly those special cases (where I have to copy settings for a second instance e.g. or when a bug like this) occurs where saving comes in handy…

      – Not so good 3: Not sure if the following is a bug but this makes using regions a lot less practical: when playing a region (synced), the playhead doesn’t start at the start of the region. That means that every time I restart my project (or rewind), the playhead starts where it previously stopped which means my project sounds different each time I play it because it’s not really in sync. This is not a real problem (I can edit my wav before loading it in tcStretch) but it defeats the purpose of the region capabilities. Correct me if I’m wrong.

      Keep up the terrific work!

      • EDIT: Just been fiddling again with it and now I’m not able to reproduce the “Clicking on waveform stops all sound” problem so that’s a weird one. I did however had this problem about four times in a row before. Maybe the kind of bug that only occurrs if….and when…. (you know what I mean as a programmer). I’ll keep you informed about it.

  18. EDIT 2: The user presets DO work but I have to name them “user preset x” (1<x<6). I guess that's how it's meant to be. Sorry for that. I'm satisfied 😉

    Regarding the syncing: this has little to do with the regions (well, in a way it has) so I have to correct myself a bit. The one thing that's bothering me is the fact I have to place the Play head at the start of the sample or at the start of a region when restarting a project. When rewinding a bit, the syncing is lost also but that is a problem I also have with other sample players. Freezing the track is an option here.

    • I think I’ve found a way to force a real sync when starting my project: by using automation through the PosBegin parameter. Very nice you also incorporated the parameters for automation BTW!

      • Yeah, I also started to use that parameter for restarting, but so far found it unreliable in Bitwig. I didn’t dig deeper to find out why it only works sometimes here yet.
        I still think this area could be improved with an (optional?) automatic reset.
        I’ll check out the new version now.

  19. A quick question Bill: have you thought about an update where the plugin can be played/triggered from the MIDI keyboard or is that too difficult? If so, be prepared for another micro donation 😉

    • I have some work started towards MIDI-learn for the controls, but that is not ready yet. If you are talking about using the note value to set the pitch then that could be done, although the range would be somewhat limited. I’ll keep it in mind for the future. Thanks! 🙂

      • Well, what I actually meant was really playing the sample with the MIDI keyboard like you would play samples in e.g. Kontakt but I guess, because this is a time stretching plugin there’s a catch or is this already possible (have I overlooked something maybe?)

      • Nope, not playable with MIDI keyboard (unless I’m really dense) BUT I just thought to myself: why not automate the pitch (graphically in Cubase) just like I automate the PosBegin for syncing?! Works great! I can even make nice pitch bends like this and microtonal stuff. Love it!

        I seldom use Paulstretch (it sounds very…Paulstretch… and it’s standalone only) but this is sooo much better, more user friendly and much more flexible. Let’s open up that donation page again 🙂

  20. New version, 0.5e, is available:
    – bugfix for smoother region handles
    – bugfix for restoring plugin state from preset saved via DAW
    – bugfix for restoring plugin state from saved project
    – zoom limiter that stops zooming in when a single analysis frame is displayed 32-pixels wide

  21. Great tool, thx:)
    Drag n drop works perfectly. (Cubase8 / mediabay->tcstretch) – wonderful:) (v0.5e)
    Suggestion(if i may): in sample waveform window-> click on any position on the waveform and playback resumes from there.
    Thank you very much for this goodie:)

Leave a reply to tonecarver Cancel reply