C++ Real-Time Audio Processing with Constant-Q Transform

Job ID: 38440538

Budget: $30 – $250 USD

The task is to create a Visual Studio Solution with a C++ project using PortAudio. Then implement an existing github project into the VS Solution. There will not be much coding involved in this task but you will absolutely need an understanding of C++ in Visual Studio to do it. It is a task that I would do myself if I didn't find it to be such a headache (since my experience is with C# and my knowledge of C++ projects is limited).

The project will take in audio from the microphone then pass the data to a constant-Q transform then display a live frequency spectrogram graphically (the result of the CQT). The audio should be sent to an output also.

The GUI should simply be a drop-down to select input device and another to select output device, as well as the spectrogram graphic.

You are welcome to use the various existing implementations of this in C++ such as:

real-time CQT:
https://github.com/jmerkt/rt-cqt

Projects implementing it:
https://github.com/jmerkt/cqt-analyzer
https://github.com/jmerkt/harmonic-reverb

Simple Portaudio installation:
https://github.com/Cindytb/HelloVisualStudio

I have the above PortAudio project already running in Visual Studio 2019, although the FFT library did not work in my case.

Low latency is important. Choose the lower latency sliding CQT instead of the FFT if possible.

Obviously, I will want to be able to alter variables like hop size, bins per octave, sample rate etc. I also need to be able to access the float buffers directly. I may want to code my own re-sampler or something by directly changing values in the float arrays (or double arrays if they are doubles).

The finished solution will need to run on VS 2019 and VS 2022 – or two solutions (one for each)

Bear in mind that this C++ project will eventually be merged with another VS Solution, which is a WPF .NET solution written in C#.

This task is basically just lumping existing code together into a VS Solution and I expect bids to be around the low end of the "simple project" range. If I had experience of dealing with audio in C++, I would think it would take me a couple of hours.