Closed anupam-git closed 2 years ago
you should know Tracktion and JUCE both are working on async programming model, based on a message queue for multi-thread.
Thanks for the reply. Forgot to update, managed to get tracktion working by running a juce event loop in a thread separately.
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 providedc4.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.