Is it possible to integrate soundtouch.js into WIX? I hope so! I want to create the html elements in the WIX editor and change the soundtouch-js code to WIX-Velo. Can anyone help me with this? I would be very happy!
I have the latest version. I am using the files from the tar release (https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz) I did more tests and here are the result. Initial data : 120 BPM Guitar starting at 7,894034 bar Converting to following BPM, the Guitar start is offset as follow : Tempo (bpm) Event (bar) Delta 60 7,8188 -0,0752 75 7,8521 -0,0419 90 7,8414 -0,0526 105 7,8588 -0,0353 120 7,8940 0,0000 135 7,8880 -0,0060 150 7,8801 -0,0139 165 7,9195 0,0254 180 7,9086 0,0146 Maybe, I am...
Hello. Given that you leave a message here, please verify that you have the latest version of SoundTouch available nowadays in here: https://codeberg.org/soundtouch/soundtouch
I try to use Soundtouch to change the tempo of a recording without introducing a time offset. As a matter of fact, I noticed that the output is always shift left (sounds starts before what is expected). For example, if a recording is at tempo 120 Bpm and the sounds starts at sample 1000, I would expect that the sound would start at sample 2000 if I change the tempo to 60 Bpm but it´s not the case, the sound starts before that. Is it possible to avoid that? If not, is it possible to know the exact...
Hello everyone. I use Visual studio 2022 and juce framewok to develop sound processing applications in C++. I've downloaded Sountouch dll library: https://www.surina.net/soundtouch/soundtouch_dll-2.1.1.zip I added the directory which contains .lib files to additional library directories in linker settings. Also I located the dll file in the same directory with my application exe. The header file is included too in my code. I get unresolved external error for soundtouch functions. I couldn't realize...
Hi, I would like to use SoundTouch to add strech and pitch function to a dedicate software to help musician to repeat? All the code was designed with visual studio 2019 (migrate to VS 2022) now. many thanks for your help Marc
anyone?
I just wanted to say 'thank you very, very much', because after hours of work and trying a lot of audio libraries for several purposes Soundtouch was the only one that just worked out of the box! I'm on Windows 10 for this project (I love linux though), using Android Studio 3.5.2. The ReadMe for Windows says you need to download the NDK and install it with Cygwin, but in Android Studio, you can do it like this (do mind, I haven't tested it on other/fresh computers, I'm just eager to share the unexpected...
i'll offer $200 to someone who can help with this
i THINK i've done everything right but this doesn't SOUND right. i have these settings: float samples st.setSetting(SETTING_USE_QUICKSEEK, false); st.setSetting(SETTING_USE_AA_FILTER, true); but i get warble. here's some sound samples: original (perfect), apple's TimePitch AU (perfect key changing), and SoundTouch (warbly key changing)
Hi. I process file "sinus_pcm-signed_16bit.wav" (further as "Input file") with default parameters (-tempo=0 -pitch=0 -rate=0) using SoundStretch 2.1.1 for Windows [15-Nov-2018]. SoundStrecth creates file "sinus_pcm-signed_16bit_tempo0_pitch0" (further as "Output file"). Output file should not differ from Input file because default parameters were used. But as i can see it is not. For example: Input file consists of parts of the same data (sinus with different frequencies). Size of every part is 529200...
The settings were correct, but I did find the issue. Since I'm using JUCE, it doesn't seem to allow me to add paths and/or link libraries through Xcode, I have to do it through JUCE's Projucer in order for it to be implemented in the project in Xcode. Now it compiles properly.
Hello, The "Undefined symbols" error by the linker suggests that C++ compiler uses the .h files but linker can't find object files compiled from the corresponding .cpp files. Accordingly verify that the .cpp files are surely included in your project, that they surely get compiled, and that linker path settings are correct so that linker can find the required obj files.
Hello, The "Undefined symbols" error by the linker suggests that C++ compiler uses the .h files but linker can't find object files compiled from the corresponding .cpp files. Accordingly verify that the .cpp files are surely included in your project, that they surely get compiled, and that linker path settings are correct so that linker can find the required obj files.
Hello, The "Undefined symbols" error by the linker suggests that C++ compiler uses the .h files but linker can't find object files compiled from the corresponding .cpp files. Accordingly verify that the .cpp files are surely included in your project, that they surely get compiled, and that linker path settings are correct so that linker can find the required obj files.
Hello, The "Undefined symbols" error by the linker suggest that C++ compiler uses the .h files but linker can't find object files compiled from the corresponding .cpp files. Accordingly verify that the .cpp files are surely included in your project, that they surely get compiled, and that linker path settings are correct so that linker can find the required obj files.
Hello, I'm currently on macOS High Sierra 10.13.6, and using Xcode 9.4.1. I'm also using JUCE for this. I seem to not entirely understand how to implement SoundTouch into my own project. I have all the source files that I need from SoundTouch in my project folder and I did #include "SoundTouch.h" into one of my .h files in my project where it will be used. All I did was declare a SoundTouch member in one of my classes and when I build it, it gives me an Apple Mach-O Linker error: "Undefined symbols...
How to change tempo of sound file using SoundTouch C++ API? soundstretch in.ogg out.ogg -tempo=30 I have to perform above given command line utility with c++ program.
Hi, Could you tell me how to use soundTouch API if I want only to do resampling ? I mean: convert from 48Khz to 8Khz or 8Khz to 48Khz I guess that setRate with SETTING_USE_AA_FILTER. Thanks, Alex Sent from Mail for Windows 10
Hi, I found this code: https://gitlab.com/soundtouch/soundtouch/blob/master/source/SoundStretch/main.cpp It is implementation of the WSOLA in cpp that read input from file and write changed audio to output file. I want to change openFiles function so that, reading the audio from microphone and play with delay after on real time. What changes do I need to do ? Thanks, Alex
Hi, I found this code: https://gitlab.com/soundtouch/soundtouch/blob/master/source/SoundStretch/main.cpp It is implantation of the WSOLA in cpp that read input from file and write changed audio to output file. I want to change openFiles function so that, reading the audio from microphone and play with delay after on real time. What changes do I need to do ? Thanks, Alex
Hi, I want to understand how I need to implement WSOLA on RealTime ? What buffer size should be ? What frame size ? I have not a signal known in advance. I see in the current code that there is reading from file and writing to file. I want to record from microphone and play it on RealTime with delay. Can you help me ? Thanks, Alex
Hi, How can I run it from Android Studio ? When am I opening the Android-lib from Android Studio , the run button is disable.
The scripts looks valid and it works on my Linux PC!
Hello, first of all, thank you for soundstretch which is working perfectly. However, I have some problems processing various files. I am on linux and I tried to use the script you offer in the FAQ. In order to modify the pitch, I entered in a script (that I used inside the folder where are the files .wav): 1 2 3 4 5 6 7 8#!/bin/bash pitch=-2 for f in *.wav; do fname=$(basename $f) ext="${fname##*.}" base="${fname%.*}" ./soundstretch $f $base$pitch.$ext -pitch=$pitch done but it did not work. Did...
soundstretch.exe is a command-line application. See the README file for usage instructions.
Hello! I cannot install the exe file correctly to my win7 system. exe file has no icon and when i try to run a cmd screen seen for one second then nothing further. i tried 2.0 and 1.9.2 releases both
Meanwhile, I switched to the beat detection of aubio - a really great tool to analyze audio. But soundtouch is still my one and only tool to change tempo and pitch. No other brings results like your customized WSOLA algorithm. Nice to hear, that you moved to git. Unfortunately, Sourceforge is not what it was some year ago.
Added a note that SoundTouch source codes moved to git repository
Detailed LGPL license terms are here: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html In case the LGPL license sounds too restricting, a commercial license alternative is available. Contact me by email if you wish to get more information of license alternatives.
Yes: I committed BPM algorithm improvements just a moment ago. I have not thoroughly tested these with different music types yet, but these work much better than before. I have moved the source codes from svn to git, the new git repository is here: https://gitlab.com/soundtouch/soundtouch
Hello Olli. Some news about the new BPM algorithm ? ;-) Fre;D
Hi Olli, I have written a commercial application that uses your SoundTouch library. In LGPL terms, I think the P/Invoke approach I used counts as "a work that uses the library". Unfortunately LGPL instructions on what I need to do is not exactly clear. How visible does the LGPL need to be? For example, would it be acceptable for me to only include files named SoundTouch.dll and SoundTouch.license in my zip files? Under LGPL, do I display your copyright and license alongside mine in the executable's...
This is a reply to an older post. The current BPM routine doesn't give good enough BPM estimate in some cases, I have some BPM algorithm improvements in my desk drawer, will need to integrate those to SoundTouch release.
Check these: How does your code know how many input samples it gets? If it has different amount of input samples than it expects, it surely stutters Casting between types. Your code has quite many castings between data type and it's difficult to say from the source code if they are correct.
This is a reply to an old post. The current BPM routine doesn't do good enough, I have improvements in my desk drawer, will need to integrate those to SoundTouch release.
SoundTouch works by chopping sound into shortish sequences, and mixing these back together. Due to this approach the sound may get echoing wah-wah artifact particularly when slowing down the tempo a lot, or increasing the pitch a lot. If artifact is present even at small tempo/pitch adjustments, then it's about something else, like incorrect samplerate, or other processing parameters. Surveying Martin's parameter set above, setting the SETTINGS_AA_FILTER_LENGTH parameter to 1 seems peculiar: The...
I got the issues covered by using float buffer now the issue is stutter. I will look for another solution for this.
Hi I am using SoundTouch with QT to do some pitch shifting. And currently using SOUNDTOUCH_INTEGER_SAMPLES instead of the float samples. Please see the code below const unsigned char *ptr = reinterpret_cast<const unsigned char*>(data.data()); SAMPLETYPE sampleBuffer[BUFF_SIZE]; int nSamples = BUFF_SIZE / nChannels; for(int i=0; i<BUFF_SIZE; i++){ sampleBuffer[i] = reinterpret_cast<SAMPLETYPE>(ptr); ptr+=sampleSize; } soundTouch.putSamples(&sampleBuffer[0], nSamples); do { SAMPLETYPE outputSamples[BUFF_SIZE*2];...
I have the same problem. In my case it's more like a stuttering. I configured soundTouch like this setSettings(SETTINGS_USE_AA_FILTER, 1); setSettings(SETTINGS_AA_FILTER_LENGHT, 1); setSettings(SETTINGS_USE_QUICKSEEK, 0); setSettings(SETTINGS_SEQUENCE_MS, 40); setSettings(SETTINGS_SEEKWINDOW_MS, 15); setSettings(SETTINGS_OVERLAP_MS, 8); and I doubled the sample rate and halved the pitch
Hello Olli. please notice that you don't need to feed all data in a single large buffer, you can also call the bpm->putSamples several times in sequence with time feeding a smaller block of samples to the bpm algorithm. OK but there is something I am not sure. Does bpm_getBpm() freed the previous data added by bpm-putSamples ? This because I do not see a bpm_clear. Or must the instance be deleted by bpm_destroyInstance' before to do a new BPM search (and so recreate a new bpm_createInstance())? I...
Hello Olli. please notice that you don't need to feed all data in a single large buffer, you can also call the bpm->putSamples several times in sequence with time feeding a smaller block of samples to the bpm algorithm. OK but there is something I am not sure. Does bpm_getBpm() freed the previous data added by bpm-putSamples ? This because I do not see a bpm_clear. Or must the instance be deleted by bpm_destroyInstance' before to do a new BPM search (and so recreate a new bpm_createInstance() ? I...
SoundTouchDLL: adapt gcc compilation settings for x86/x64/arm platforms
Hello Olli. Could be possible to dream about a Music decoder? With this the final goal would be to decode the notes used in a buffer. I know that it is utopic, but could it be possible to begin with the begining and have a kind of GetFrequency(the_buffer). to retreive the main frequency of a buffer (for example a string of a guitar.to tune it). Maybe SounTouch uses some dsp and window to retreive the frequency and could create a new GetFrequency() method. I realize that it could be doable for a single...
Hello Olli. Could be possible to dream about a Music decoder? With this the final goal would be to decode the notes used in a buffer. I know that it is utopic, but could it be possible to begin with the begining and have a kind of GetFrequency(the buffer). to retreive the main frequency of a buffer (for example a string of a guitar.to tune it). Maybe SounTouch uses some dsp and window to retreive the frequency and could create a new GetFrequency() method. I realize that it could be doable for a single...
Could it be possible to add also GetBPM() method ? https://sourceforge.net/p/soundtouch/discussion/747307/thread/3de7b7d2/
Hello Olli. Your SoundTouch library is one of my favorite. Lot of years ago I was super-impressed by the Bass audio library because of his BassFX plugin. That BassFX could make stretching (= changing the tempo of a song, keeping the original tuning). The dream of every musician (in my vinyl time, you may change the tempo but the tuning changed too --> must detune the guitar --> the hell ). Later I noted that all the code that BassFX used for stretching was your SoundTouch code. I am really happy...
Re-hello Olli. Ok, I get it. On all the songs that I tested, with a buffer of minimum 1 mega (1048576) x channels of samples I get excellent result. Many thanks. Fre;D PS: The Pascal header of SoundTouchDLL library for Unix and Windows OS was updated with last bpm methods. https://github.com/fredvs/uos/blob/master/src/uos_soundtouch.pas
Hello Olli. Ha, ok, excellent news. ;-) Huh..., about Visual Studio,.... ok I will try to install it via Linux-wine. (I do not have a Windows OS installed). Or, maybe, I will wait for release 2.0.1.... Many thanks Olli. Fre;D
I'll release 2.0.1 once will have time to finalize & test it. In the mean time, you can download free Visual Studio Community edition for compiling the .dll library.
Added BPM functions to Pascal interface of SoundTouch DLL
Hello Fred, yes, sufficient amount of data is the key. 65536 samples correspond to bit less than 1½ seconds of musi and it's difficult to estimate beat for such short a song clip. 1M samples means already about 24 seconds of music, making it easier for beat detection. please notice that you don't need to feed all data in a single large buffer, you can also call the bpm->putSamples several times in sequence with time feeding a smaller block of samples to the bpm algorithm. I'll grab your pascal e...
Hello Fred, yes, sufficient amount of data is the key. 65536 samples correspond to bit less than 1½ seconds of music. it's bit difficult to estimate beat for such short a song. 1M samples means already about 24 seconds of music, making it easier for beat detection. please notice that you don't need to feed all data in a single large buffer, you can also call the bpm->putSamples several times in sequence with time feeding a smaller block of samples to the bpm algorithm. I'll grab your pascal edit...
Hello Olli. Could it be possible to udate the Windows-binaries SoundTouchDLL libraries with last BPM exported methods? I have to confess that I fail to compile it for Windows. ;-( And the binaries provided with http://www.surina.net/soundtouch/soundtouch_dll-2.0.0.zip was my best solution. Many thanks. Fre;D
Re-hello Olli. Ok, I get it. On all the songs that I tested, with a buffer of minimum 1 mega (1048576) x channels of samples I get excellent result. Many thanks. Fre;D PS: The Pascal header of SoundTouchDLL library for Unix and Windows OS was updated with last bmp methods. https://github.com/fredvs/uos/blob/master/src/uos_soundtouch.pas
Re-hello Olli. Ok, I get it. On all the songs that I tested, with a buffer of minimum 1 mega (1048576) x channels of samples I get excellent result. Many thanks. Fre;D PS: The Pascal header of SoundTouchDLL library was updated with last bmp methods. https://github.com/fredvs/uos/blob/master/src/uos_soundtouch.pas
Hello Olli. OK, compiled SoundTouchDLL.so with exported methods: bpm_createInstance, bpm_destroyInstance, bpm_getBpm, bpm_putSamples, bpm_putSamples_i16. I did: theinstance = bpm_createInstance(2, 44100) and used the same parameters for bpm_putSamples() that used (sucessfully) for soundtouch_putSamples() (to do a stretching). But I get always bpm_getBpm() = 0. Is a minimum of samples needed ? I did try with 65536 * channels but still ---> bpm_getBpm(theinstance) = 0. Or maybe I am missing something...
PERFECT. ;-) Many thanks. Fre;D
Added.
Added BPMDetect functions to SoundTouchDll API
Hello. Could it be possible to add/export GetBPM(() method in library SoundTouchDLL ? Thanks. Fre;D
Re-hello. I did download last trunk version. And in soundtouch-code-260-trunk/source/SoundTouchDLL there is make-gnu-dll.sh. .... Ok, I dare. I did # ./make-gnu-dll.sh and... Magic ----> SoundTouchDll.so is there with the missing methods. ;-) Perfect and many thanks Olli Other thing... Could it be possible to add also GetBPM() method ? Fre;D
Hello. Thanks for answer (and sorry for the delay). These functions are in SoundTouchDLL.cpp Huh, I did follow advice from configure-file-README.txt ----> "Starting from SoundTouch 1.6.0, the "configure" file is removed from the source code package due to autoconf/automake version conflicts. Instead, generate the "configure" file using local tools by invoking "./bootstrap" script, then configure & compile as usual." After 'make', /soundtouch/source/SoundTouch/.libs/libSoundTouch.so.1.0.0. is created....
GNU compilation of SoundTouchDll that has easy function importing interfaces for java, mono etc
These functions are in SoundTouchDLL.cpp. I wonder which earlier specific soundtouch version are you referring to?
Hello. In previous soundtouch versions, in the compiled library there was those exported methods: nm -D libSoundTouch-old.so ... 0000000000007743 T soundtouch_clear 0000000000007365 T soundtouch_createInstance 00000000000073f2 T soundtouch_destroyInstance 00000000000076bc T soundtouch_flush 00000000000077cf T soundtouch_getSetting 0000000000007454 T soundtouch_getVersionId 00000000000073fc T soundtouch_getVersionString 0000000000007407 T soundtouch_getVersionString2 000000000000792a T soundtouch_isEmpty...
Refactored C# interface & example
Disable anti-alias filter if SOUNDTOUCH_PREVENT_CLICK_AT_RATE_CROSSOVER is defined
RunParameters.cpp:270: bad type ?
Ha! Good catch. Added there & to handle the exception by reference (unless the compiler optimizes unused constant away anyway)
Added & to catch() clause to handle exception as reference
RunParameters.cpp:270: bad type ?
Added sanity checks against illegal input audio stream parameters e.g. wildly excessive samplerate
Compiling the x64 SoundTouch static library in VC2015
Thanks for clarifying! I have switched to using SOUNDTOUCH_FLOAT_SAMPLES. SOUNDTOUCH_INTEGER_SAMPLES also works for x64, but only when using the SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS preprocessor directive. PS: Please feel free to close the ticket. I don't have the option myself, probably due to permissions. Thanks.
Thanks for clarifying! I have switched to using SOUNDTOUCH_FLOAT_SAMPLES. SOUNDTOUCH_INTEGER_SAMPLES also works for x64, but only when using the SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS preprocessor directive.
Create tag for SoundTouch 2.0.0
Fixed Windows build script to support visual studio 14
Version SoundTouch 2.0
Disable MMX integer optimizations in X64 compilation
Hello Mihai, MMX integer instructions have been retired from the X64-64bit processor mode instruction set. SoundTouch currently resolves this issue by disabling MMX integer optimizations in X64 compilation by unsetting the #define SOUNDTOUCH_ALLOW_MMX in file STTypes.h MMX support was originally introduced to SoundTouch library to reduce CPU load in very slow X86 processors such as Pentium MMX or Pentium 2. SoundTouch has also SSE floating point optimizations that do work in X64 mode, so unless there's...
Updated documentation
Added C# example application that processes mp3 files with SoundTouch
Compiling the x64 SoundTouch static library in VC2015
Hello. I need to stretch a series of synth notes (very simple piano sounds) from...
Fixed a bug introduced in r245 that caused smal...
Thx!
Hello, I wrote a simple test. It uses our wmf & ffmpeg based engine to decode an...
Wrong parameter type in DLL
Thanks for the comments. To avoid mess with incompatible DLL variations, I addressed...
Hmm, you are right, using Integer sample data with OpenMP indeed had this potential...
Added int16/short sample version of putSamples(...
Modify 'maxnorm' value insider critical section...
Wrong parameter type in DLL
Hello. I'm not an expert in parallel computing, but IMHO there may be an issue in...
Thx!
Hello. The sample clips online were produced with older software version and since...
Adjusted algorithm parameters for reducing reve...