Tracktion / tracktion_engine

Tracktion Engine module
Other
1.19k stars 149 forks source link

Time stretching with soundtouch not working on cli applications or shared libraries #61

Closed anupam-git closed 2 years ago

anupam-git commented 3 years ago

Hello,

I am trying to use soundtouch timestretching functionality using tracktion. The GUI example provided by tracktion_engine works very well.

But the application I am trying to use is not a GUI application. And when trying to implement timestretching / pitch change from a shared library or a CLI application, it doesn't seem to work at all.

For reference I created a repository with both the above behaviour : https://github.com/anupam-git/test-tracktion

Here in this repo I implemented a GUI Application with pip. On building and running the GUI application, a JUCE file chooser should appear. If you select the provided c4.wav file, it should shift the pitch 12 semitones up and speed should be double the original.

I implemented the same functionality in a cli application. Juce+Tracktion is compiled as a static library and an executable is linked to the static library. On building and running the cli application by passing a wav file as it's first argument, it should play the wav file.

The wav file is expected to play at double speed with 12 semitones higher pitch but the wav plays at original speed with original pitch. Changing pitch and speed doesn't seem to have any effect.

My original application is a Python application which is consuming the juce/tracktion APIs via a shared library. I made a cli tool as an example to not to complicate things. The shared library I have for my application is built in the same way as the cli application.

It will be very helpful if anyone can point me in any direction on why the time stretching and pitch shifting is not working when juce+tracktion is compiled as a static library.

imiskolee commented 2 years ago

you should know Tracktion and JUCE both are working on async programming model, based on a message queue for multi-thread.

anupam-git commented 2 years ago

Thanks for the reply. Forgot to update, managed to get tracktion working by running a juce event loop in a thread separately.