>> Well all the plugins in ams.lv2 are coded in c++ and are compiled with the >> c++11 standard. >> But when ported the FFT Vocoder, it only compiles when using the c99 >> standard.
> C and C++ complex types are not compatible for C++, not even if > they have the same binary representation as they will have for > all modern C++ compilers. > You can probably fix some of these errors (at least the first > one) by including <complex.h> (not <complex>) before <fftw3.h>. > This will make fftw use the C native complex type instead of > its own. This will allow float to complex assignment for > example. > If you really want a 'pure' C++ version you will need to > reinterpret_cast whenever you use a function that expects > or returns a C++ complex. It won't make your code any more > readable. > IMHO the C++ complex type (a template class trying to hide > its implementation) is completely useless and a real PITA, > and a good example of the pedantic attitude that is typical > of the C++ crowd. > Nobody with even just a minimal knowledge of scientific > computing would want to hide the implementation of complex > types - almost all classical algorithms (e.g. the FFT) > depend on it being cartesian. What would you advise? As far as I can see I have 2 options: - Port the code to the c++11 standard - but you seem to think that's a bad idea - Compile this plugin with C99 - that's the solution I have in the git at the moment but I get the warning "cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [enabled by default]" and call me pedantic but I don't like warnings! Would you know how this is handled in AMS (being c++ as well)? I did check the code but I can't figure it out and I would like to stay as close as possible to the actual Alsa Modular Code so it's easier when futur modifications are applied to the code. > A second source of problems with the vocoder is the mixing > of floats and doubles. There is no good reason to use a > double FFT here. I actually did notice that, but again I don't want to "correct" it in ams-lv2 because my aim here is to port "as-is". I made the mistake of adapting the code when I ported the first set of plugins but realised that was a mistake for maintenance when syncing with changes in ams _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev