Since 'data' is an integer value clipped between +/-8192 and 'nrpn_scale' is a char value, this calculation could be done with integers and then return the fluid_real_t value.
Addresses #455.
* cleanup unneeded compiler variations (now builds in 7 min rather than 13 min)
* Windows:
* use VS2017 for vcpkg, VS2015 for manual build
* Linux:
* install alsa, jack, pulse, portaudio, ladspa, libsndfile for all builds
* MacOSX:
* use AppleClang
* reorder macosx build in between linux build, as macosx usually takes longer to build, allowing to make better use of build time (via pipelining)
* switch to XCode10, enabling TravisCI to support CoreAudio and CoreMidi
Instead of saving the name of the driver, it would be worth to save to pointer to the selected definition instead.
In this way, the function for deleting the driver does not need to search its name by parsing all the list, but it just needs to call the pointer into the saved definition (less code). This fix can be applied to MIDI drivers too.
I also moved the FLUID_FREE(allnames) inside the "if(allnames != NULL)" block, nothing bad should happen even by keeping that instruction outside, but actually there is no need to call the free if allnames is NULL.
In my opionion, it should be possible to simplify the code by installing the drivers with a for() cycle instead of doing tons of #ifdef...#endif.
The size of the binary code is basically the same as before, but the source lines are much less. I think that it could be done also for MIDI input drivers.
Actually, the function roundi() already returns an "int" type value, so in my opinion there is no need to use a floating point value for saturating the values in the range -32768/+32767. The generated assembly code looks more efficient after that.