Recent Posts

Pages: 1 [2] 3 4 ... 10
It's true that there has never been a 64-bit Windows build of the QM Vamp Plugins. Making one is a priority for us once SV v3.0 is out.

There are various reasons why few Vamp plugins are available in 64-bit builds for Windows.

The proximate reason is that none of the most widely-used Vamp hosts (Sonic Visualiser, Sonic Annotator, Audacity) exists in a 64-bit Windows version. Since 32-bit hosts can't load 64-bit plugins, there's no pressing reason to produce 64-bit plugins. This will change with Sonic Visualiser v3.0, which for the first time will have a 64-bit Windows build, as well as an adapter that allows it to load 32-bit plugins (out-of-process). So SV v3.0 can continue to use the 32-bit Windows plugins, but also provides more of an incentive to produce 64-bit ones.

In a way this can be attributed to Microsoft's success at providing excellent 32-bit compatibility in 64-bit Windows. On both Linux and OSX we have already had to face the issue of requiring all existing plugins to be rebuilt in 64-bit versions because the underlying platform standard changed. This has never been forced on anyone in the Windows world.

Finally there are various practical reasons, such as that many of the 32-bit Windows plugin builds have been produced using the MinGW compiler which until recently was not readily available in a stable 64-bit version. (I think until fairly recently the 64-bit Visual C++ compiler wasn't included in the free version of Visual Studio either?) So it's not just a question of using the same native platform compiler on the newer platform and getting a new build for the new architecture, as it has been on both Linux and OSX.

The QM plugin set is relatively tricky to rebuild as well, because of its use of LAPACK and BLAS.

Anyway, that's the explanation -- the short answer is that a 64-bit version is "planned soon".

Host Forum: Sonic Visualiser / Re: Help test the first Sonic Visualiser v3.0 beta
« Last post by cannam on January 17, 2017, 09:33:25 »
There's a second beta up there now. You can see what's changed here:

Files in the same place:

I'm working on a freeware light control program called xLights.  Last year one of our developers used your plugin host sdk to give our program features to analyze audio for the purpose of creating timing marks aligned with beats or bars or the other types of plugins you provide.  Prior to that our users always used Audacity to create timing marks and then we had the capability to import the text file exported from Audacity.

I didn't do that initial coding but I'm converting our application to 64-bit.  I got everything running but a user noticed the qm vamp plugins weren't showing up as an option for creating timing tracks.  I inspected the DLL header with dumpbin and see it's 32 bit so I assume that's the reason.  I've searched a lot and can't find a 64-bit version of the DLL for Windows anywhere.  Has it really never been created?  Our program is multi-platform so we already have all this stuff working in 64-bit on MacOS and Linux.  I thought I could just build it myself but the source code appears to list several .lib files in the build directory so I was anticipating problems with those being 32-bit.

Host Forum: Sonic Visualiser / Help test the first Sonic Visualiser v3.0 beta
« Last post by cannam on January 11, 2017, 10:48:24 »
Hello all -- we have a new (first) beta-release of what will be Sonic Visualiser v3.0, now available for download. I'd be grateful if some intrepid people would like to try it out and report what they find.

I wrote a post with more info here:

And you can download binary packages (Windows and Mac so far, Linux I'm working on at the mo) plus source from the page at

Plugin Development / Re: Help to get exact bpm count and beatgrid
« Last post by cannam on September 30, 2016, 17:12:35 »
And if you use the vamp-simple-host with the vamp-example-plugins:fixedtempo plugin, does that give you the same 51.4 result as you had with your code?

I can't see anything obviously wrong with your code snippet, assuming that the audio is single channel throughout.

The QM tempo tracker works slightly differently -- it emits a new tempo every time its sense of the underlying tempo changes. This means in theory it works for tracks which vary in tempo as well, but it can mean you sometimes get a series of very close estimates which would be more useful if they had been merged together. To get a single tempo per track, one might typically pick the estimate that spans the greatest time range within the results.

Plugin Development / Re: Help to get exact bpm count and beatgrid
« Last post by djjoy on September 29, 2016, 10:06:18 »
Some help or comments with this question?

Best Regards,

DJ Joy
Plugin Development / Re: Help to get exact bpm count and beatgrid
« Last post by djjoy on September 24, 2016, 08:12:18 »
Hi again,
I have many hours testing and I have no goods results.

I try with qm-tempotrack and I get something like this:
Using block size = 1024, step size = 512
Plugin accepts 1 -> 1 channel(s)
Sound file has 1 (will mix/augment if necessary)
Output is: "tempo"
Note: nonZeroCount was 61771, is now 61771
 0.011609977: 99.384 99.38 bpm
 1.497687074: 93.9631 93.96 bpm
 4.469841269: 92.2852 92.29 bpm
 7.441995464: 93.9631 93.96 bpm
 8.928072562: 92.2852 92.29 bpm
 13.386303854: 95.7031 95.70 bpm
 14.872380952: 89.1029 89.10 bpm
 17.844535147: 90.6661 90.67 bpm
 19.330612244: 95.7031 95.70 bpm
 20.816689342: 92.2852 92.29 bpm
 22.302766439: 99.384 99.38 bpm
 25.274920634: 97.5088 97.51 bpm
 26.760997732: 95.7031 95.70 bpm
 28.247074829: 90.6661 90.67 bpm
 31.219229024: 86.1328 86.13 bpm
 32.705306122: 99.384 99.38 bpm
 35.677460317: 93.9631 93.96 bpm
 38.649614512: 92.2852 92.29 bpm
 40.135691609: 97.5088 97.51 bpm
 44.593922902: 117.454 117.45 bpm
 46.079999999: 132.512 132.51 bpm
 47.566077097: 129.199 129.20 bpm
 53.510385487: 132.512 132.51 bpm
 56.482539682: 139.675 139.67 bpm
 60.940770974: 135.999 136.00 bpm
 66.885079364: 143.555 143.55 bpm

Is this correct?
If the original song has a 93.232bpm (testing in VirtualDJ and Tracktor)... I have to process the received data to get this bpm?
I have to change some parameters ?

Waiting for your reply

Best Regards,

Plugin Development / Re: Help to get exact bpm count and beatgrid
« Last post by cannam on September 21, 2016, 18:03:05 »
Hello! Before I read on very far, can I check -- have you tried saving out this audio into a file and running the same plugin using vamp-simple-host, and if so, can you confirm whether it produced the results you expect (i.e. the right ones) or not?

The fixedtempo plugin is not the best tempo estimator we have, and I expect it's not as good as whatever is in traktor. Something like the QM Vamp Plugins tempo estimator will generally work better. But for all its flaws, it probably should not return a result like 51.4 bpm for something that is actually at 93.

Plugin Development / Help to get exact bpm count and beatgrid
« Last post by djjoy on September 21, 2016, 17:56:10 »
Hello everybody,
I'm newbie in vamp and also in c++.
I have a DJ application that uses bass.dll, but the bpm counter of bass.dll is not very precise, and I want proccess the song throught vapm plugins to get the exact bpm.

If I use fixedtempo:0 with output = 0 (tempo), modifing your vamp-simple-host example to use with bass:
I get this:
0.002902494, 59.998911565: 51.3587 51.4 bpm
when the real bpm ( in traktor and virtual dj ) is 93.232

I use bass decode to send data to process:
BASS_Init(-1,44100,BASS_DEVICE_MONO,0,NULL);  //only one channel
stream = BASS_StreamCreateFile(FALSE,filename,0,0, BASS_STREAM_DECODE | BASS_SAMPLE_FLOAT);  //open the song in decode float samples mode

//loop to fill data in the plugin

    // Here we iterate over the frames, avoiding asking the numframes in case it's streaming input.
    do {

        int count;

        if ((blockSize==stepSize) || (currentStep==0)) {
            // read a full fresh block
         count = BASS_ChannelGetData(stream, filebuf, blockSize );
            if (count  < 0)
                cerr << "ERROR: sf_readf_float failed: "  << endl;
            if (count != blockSize) --finalStepsRemaining;
        } else {
            //  otherwise shunt the existing data down and read the remainder.
            memmove(filebuf, filebuf + (stepSize * channels), overlapSize * channels * sizeof(float));
         count = BASS_ChannelGetData(stream, filebuf + (overlapSize * channels ), stepSize );
            if (count < 0) {
                cerr << "ERROR: sf_readf_float failed: " <<  endl;
            if (count != stepSize) --finalStepsRemaining;
            count += overlapSize;

        for (int c = 0; c < channels; ++c) {
            int j = 0;
            while (j < count) {
                plugbuf[c][j] = filebuf[j * info.chans + c];
            while (j < blockSize) {
                plugbuf[c][j] = 0.0f;

        rt = RealTime::frame2RealTime(currentStep * stepSize, info.freq);

            (RealTime::realTime2Frame(rt + adjustment, info.freq),
             info.freq, outputNo, plugin->process(plugbuf, rt),
             out, useFrames);
      int frames;
      frames = BASS_ChannelGetLength(stream, BASS_POS_BYTE);
        if (frames > 0){
            int pp = progress;
            progress = (int)((float(currentStep * stepSize) / frames) * 100.f + 0.5f);
            if (progress != pp && out) {
                cerr << "\r" << progress << "%";


    } while (finalStepsRemaining > 0);

Can you helpme about this? What's wrong?

Best Regards,

DJ Joy

Plugin and Host Announcements / Re: We want your feedback!
« Last post by Chris H on September 01, 2016, 09:15:38 »
Hi everyone,

I've put together a more formal survey covering the questions listed above.  If you want to help guide the development of the next release of Sonic Visualiser, we would be grateful if you would share your views with us by filling it in:

This survey will be accepting answers until the end of September 2016.

Many thanks

Pages: 1 [2] 3 4 ... 10