Forum
    • Categories
    • Register
    • Login

    Timestretch Artifacts

    Scheduled Pinned Locked Moved General Questions
    5 Posts 3 Posters 26 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dannycouture
      last edited by

      Hey, I'm building a guitar rhythm loop based plugin and I cannot seem to get the timestretching to sound good. Even with 1-2% stretch it sounds smeared and in some cases at 0% it still sounds smeared with TempoSynced mode activated.

      I tried setting NumQuarters (16 for a 4 bar loop at 140 BPM) and SourceBPM via getTimestretchOptions/setTimestretchOptions and it doesn't seem to make any audible difference.

      My setup:

      HISE 4.1.0 (commit a29ff452)
      4 bar loop at 140 BPM, 4 bars
      TempoSynced mode
      NumQuarters = 16, SourceBPM = 140
      Tested at both 44.1k and 48k sample rates — same artifacts at both

      Here is my current script:
      javascriptonInit
      {
      const var Sampler1 = Synth.getSampler("RTM_1_140");
      const var obj = Sampler1.getTimestretchOptions();
      obj.SourceBPM = 140;
      obj.NumQuarters = 16;
      Sampler1.setTimestretchOptions(obj);
      }

      A few specific questions:

      Is the smearing at 0% stretch a known issue or am I doing something wrong in my setup?

      Are there any TimestretchOptions properties beyond what's documented that might help for rhythmic/percussive material like guitar chugs and rhythm loops?

      Is there a recommended approach for loop players specifically, or is the sampler module not the right tool for this use case?

      Has anyone successfully integrated Elastique or Rubber Band v3 into HISE and is there any existing code or PR for this?

      I really just need clean stretch of about 10 BPM up and down from the source tempo. Any help appreciated, thanks!

      David HealeyD 1 Reply Last reply Reply Quote 0
      • David HealeyD
        David Healey @dannycouture
        last edited by David Healey

        @dannycouture Are you using the latest develop branch that incorporates this PR?

        Edit: I just saw you included the commit hash, so you should have those changes. It allows you to set the BPM directly without messing around with Num Quarters.

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - Public HISE tutorials
        My Patreon - HISE tutorials

        D 1 Reply Last reply Reply Quote 0
        • D
          dannycouture @David Healey
          last edited by

          @David-Healey thanks!
          Okay so num quarters is out of the picture now.

          My question is how does HISE know what the BPM of the sample inside the sampler is? I know how to set the internal BPM for testing:

          Engine.setHostBpm(120.0);

          But do I need to tell HISE what the actual .wav BPM is, and if so where is that set?

          Also, are there any settings to optimize to reduce artifacts? Even at a 5 BPM difference it sounds really smeared, and my recordings are high quality. I know HISE uses Signalsmith for timestretching, and on their demo it sounds clean compared to what I'm getting in HISE so I'm thinking it's a settings issue on my end.

          David HealeyD 1 Reply Last reply Reply Quote 0
          • David HealeyD
            David Healey @dannycouture
            last edited by

            @dannycouture Yes with that PR you still set the time stretch options, but instead of using NumQuarters, you use SourceBPM and set it to the BPM of your samples. The only settings I'm aware of are those available through the time stretch options.

            Free HISE Bootcamp Full Course for beginners.
            YouTube Channel - Public HISE tutorials
            My Patreon - HISE tutorials

            Christoph HartC 1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart @David Healey
              last edited by

              You can try to use the signalsmith CLI tool (or whatever they ship as a binary) to check your exact audio material. AFAIK I've not changed the internals of that engine too much instead of just wiring in IPP / VDSP and a few other small performance additions.

              You can't expect parity with the sound quality of Elastique though. Rubberband sounds worse in my experience than signalsmith - v2 as well as v3.

              There is also another timestretch library on the block - Bungee which has a pro version that claims to be on par with Elastique et al, so maybe that would be a contender.

              1 Reply Last reply Reply Quote 1
              • First post
                Last post

              9

              Online

              2.3k

              Users

              13.7k

              Topics

              119.1k

              Posts