Forum
    • Categories
    • Register
    • Login

    Timestretch Artifacts

    Scheduled Pinned Locked Moved General Questions
    17 Posts 4 Posters 486 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 J 2 Replies 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.

              D 1 Reply Last reply Reply Quote 3
              • J
                jeffd @David Healey
                last edited by jeffd

                @David-Healey so we have working tempo synched time stretch with this PR? or i should add..this wasnt working before if i remember correctly

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

                  @jeffd We already did, but now it's a little more user friendly and a glitch has been fixed.

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

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jeffd @David Healey
                    last edited by

                    @David-Healey i think last time i tried it it always crashed.

                    but that was awhile ago.

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

                      @jeffd Yes there was a crashing issue that the PR fixes

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

                      J 1 Reply Last reply Reply Quote 1
                      • J
                        jeffd @David Healey
                        last edited by

                        @David-Healey yeah, thats what happened when i tried it.

                        this is great that its fixed now!

                        1 Reply Last reply Reply Quote 0
                        • D
                          dannycouture @Christoph Hart
                          last edited by dannycouture

                          @David-Healey What unit is SampleStart/SampleEnd displayed in inside the sample editor? Is it raw samples, or something else?

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

                            @dannycouture Yes, samples

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

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

                              @David-Healey

                              ce950e33-4e28-4064-97d2-5f495c8dd537-image.png

                              wav file is 75600 samples (140BPM) confirmed in Audacity, HISE sample editor showing 82286 as SampleEnd. Is HISE adding padding on import? or maybe a bug?

                              EDIT:
                              Thinking this is the issue as to why I am hearing smearing even at 100% stretch. I set the SourceBPM to 140 and engine host to 140 and I still hear smearing like its slowing down 1BPM or so too with Timesync Mode activated.

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

                                @dannycouture Send me the sample

                                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 (C3)_F_140BPM_RTM1 [2026-05-04 102107].wav

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

                                    @dannycouture Showing correctly in HISE for me

                                    4e116306-c615-45b0-bb1a-4799e8930828-image.png

                                    Looks different to the one in your image

                                    9aabda45-4085-4113-b05a-e346b820feda-image.png

                                    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

                                      It was caused by having different sample rates in 2 different samplers. I had to convert all to 41.1khz which is what I started my project at.

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

                                      18

                                      Online

                                      2.4k

                                      Users

                                      13.8k

                                      Topics

                                      119.6k

                                      Posts