Also featuring a very efficient buffer-based system for transporting sample-exact control data
Also interpolation for automations
The native Amplifier is a reference implementation for taking advantage of sample-exact data and is currently
the only one that does so, it can be used to test things out, and as documentation/example for implementing the
same elsewhere
Since we now provide the wavetables as pre-generated files, there's no delay caused by their initialization
so we can move it to the startup of the software. I thought engine.cpp is the best place for this, it makes
conceptually more sense than main.cpp IMO.
This way each instrument that wants to use them in the future won't have to call the initialization function
separately, making things a bit easier.
- Envelope length is now temposyncable and has higher maximum
- Distortion is divided to start/end knobs for a simple distortion envelope
- Everything backwards compatible
q_sort is an inline function which recurses upon itself. Some compilers such as MSVC limit this which can be overridden with a parameter. Since I could find no such parameter for clang, this #IFDEF allows the sifter plugin to compile successfully.
If this approach has negative side effects, it should only affect apple. If there's a better approach to this, please reject the pull request and submit your own.
Instead of relying on naming the init functions _init() and _fini()
declare them as constructors/destructors and use a different name so
there's no double destruction
Closes#668.
When loading some presets the PADnoteParameters spectrum size is 524288
or even bigger resulting in a stack allocation of 2 MB or more.
This results in a stack overflow on Win32 and thus crashes LMMS. Fix this
by allocating the spectrum on the heap instead.
Closes#543.
The detuning scale was incorrectly calculated: instead of measuring in cents as it claims to, it was actually
in 1/100th octaves, so I fixed it so that I set the units to actual cents (1/100 seminote). Then I set the
range to +/-1200 cents and added compat code so that old values get multiplied by 12, to maintain backwards compat.