# How can I change the BPM without affecting the insertWaveClip?

**URL:** <https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492>\
**Category:** Tracktion Engine\
**Created:** [September 12, 2026, 6:50am UTC](https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492 "2026-09-12T06:50:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![AWins](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@AWins](https://forum.juce.com/u/AWins)\
**Post date:** [September 12, 2026, 6:50am UTC](https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492/1 "2026-09-12T06:50:59Z")

</div>

How can I keep the original audio without affecting stretching or pitch?

this all code in Constructor:

```auto
tempoSlider.setRange (30.0, 200.0, 0.1);
tempoSlider.setValue (edit.tempoSequence.getTempo (0)->getBpm());
tempoSlider.onValueChange = [this]
{ edit.tempoSequence.getTempo (0)->setBpm (tempoSlider.getValue()); };

//=========================================

float beatWidth = 30;

File file ("D:/Samples Pack/Kick.wav");

if (file.existsAsFile())
{
    te::AudioFile audioFile (engine, file);
    double lengthWave = audioFile.getLength();

    if (auto track = EngineHelpers::getOrInsertAudioTrackAt (edit, 0)) {
        auto& ts = edit.tempoSequence;
        bpmPerSeconds = bpmWClip / 60;

        te::BeatRange beatRange (
            te::BeatPosition::fromBeats (0),
            te::BeatPosition::fromBeats (beatWidth * bpmPerSeconds * lengthWave));
        ClipPosition position = createClipPosition (ts, beatRange);

        wClip = insertWaveClip (*track, {}, file, position, DeleteExistingClips::no);
        wClip->setLength (wClip->getSourceLength(), false);

        if (wClip != nullptr)
        {
            //=========================================
            
            wClip->setAutoTempo (false);
            wClip->setAutoPitch (false);
            wClip->setUsesProxy (false);
            wClip->setTimeStretchMode (te::TimeStretcher::defaultMode);

        }

    }

    DBG ("File exist!");
}

```

---

<div class="post-metadata">

**Author:** ![dave96](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/dave96/32/8487_2.png) [@dave96](https://forum.juce.com/u/dave96)\
**Post date:** [September 14, 2026, 12:53pm UTC](https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492/2 "2026-09-14T12:53:51Z")

</div>

I think you want

```auto
            wClip->setTimeStretchMode (te::TimeStretcher::disabled);

```

---

<div class="post-metadata">

**Author:** ![AWins](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@AWins](https://forum.juce.com/u/AWins)\
**Post date:** [September 15, 2026, 10:49am UTC](https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492/3 "2026-09-15T10:49:41Z")

</div>

I tried it and it’s still the same. I want it to be like in FLS.

---

<div class="post-metadata">

**Author:** ![dave96](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/dave96/32/8487_2.png) [@dave96](https://forum.juce.com/u/dave96)\
**Post date:** [September 15, 2026, 4:42pm UTC](https://forum.juce.com/t/how-can-i-change-the-bpm-without-affecting-the-insertwaveclip/69492/4 "2026-09-15T16:42:04Z")

</div>

That is time-stretching as you’re changing the tempo and keeping the same pitch.

What you’re talking about (I think) is that the transport is staying at the same time position when you want it to stay at the same beat position when you change the tempo right?
