Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[Bug]: transport.getPosition() lag when PitchShifter plugin is on the chain

Open
#270 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
15/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp

Research direction

The report gives symptoms only: transport.getPosition() and the timeline playhead jump on pause once a PitchShifter is in the chain, even when the plugin is bypassed. Start by reproducing it in Waveform13 or a minimal app with the plugin added to one track, then read how the transport position is derived and how plugin latency is accounted for in the playback graph. It is done when the playhead tracks smoothly with the PitchShifter added, enabled and bypassed, on both Linux and Windows.

Written by the indexing model from the issue text.

Description

Detailed steps on how to reproduce the bug

Good morning,

if I add a PitchShifter plugin to one track the timeline bar when I hit pause it jump.
This happen also if the plugin is switched off.

This is also visible inside Waveform13.

Thanks
Luca

What is the expected behaviour?

Playhead move fluently all across the timeline.

Unit test to reproduce the error?
/*
    Copy this code in to your application, replacing the test cases in the runTest function.
    Then call runTest() from somewhere in your application.
*/
class TestClassName  : public juce::UnitTest
{
public:
    TestClassName()
        : juce::UnitTest ("TestClass", "tracktion_engine")
    {
    }

    void runTest() override
    {
        // Group tests in to sections with beginTest
        beginTest ("Test section");
        {
            expect (1 == 1);        // Test an expression for true
            expectEquals (1, 1);    // Test two values are equal
            expectNotEquals (1, 1); // Test two values are not equal: FAILS
        }
    }
};

// Creates an instance of the test so you can run it
static TestClassName testClassName;

// Call this from your applications
inline void runTest()
{
    juce::UnitTestRunner runner;
    runner.runTests ({ &testClassName });
}
Operating systems

Linux, Windows

What versions of the operating systems?

Windows 11 - Raspberry OS

Architectures

x86_64, ARM

Stacktrace

Plug-in formats (if applicable)

Standalone

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

The bug is present on the develop branch

Code of Conduct
  • I agree to follow the Code of Conduct
Dominant language
C++
Stars
1.5k
Forks
222
Avg merge
15h 44m
Merged PRs (30d)
33

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Tracktion/tracktion_engine

All issues in Tracktion/tracktion_engine

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.