... note the swap of target_link_libraries lines in src/CMakeLists.txt,
needed to build at least on macOS, becuase FFT.h must be looked up first in
lib-math, not in lib-src/twolame
Also making a dependency cycle of SampleFormat and Dither! But we will tolerate
that within one small library.
... It mentions some wxWidgets types in its interface, but these are in the
acceptable utility subset of wxBase that we still consider GUI toolkit-neutral.
... in many places where the function call will later need to be between
modules (or libraries, or the executable) and the annotation will be a necessity
to keep the linkage working on Windows.
That's all that this sweeping commit does.
This bug was caused by dither being applied to all float output,
and dither clips to +1/-1 to avoid high values, especially NaNs,
polluting audio downstream.
Dither was applied because of an incorrect fix for Bug 1572.
The 1572 fix assumed SF_FORMAT_PCM_24 was a (1 << N)
value, rather than from an enumeration. Hence a check
involving it requires a mask, which it now has.
These now all have help buttons to page Error:_Unable_to_export
And they have an error code such as OGG:355 so that (later) on that page
we can describe them better - if they ever happen.
Aside from the breakage I added to it during the AUP3 conversion,
there was several other issues discovered in regards to how the
export paths were being handled.
In addition, I've extracted the wxTextCtrl wrapper from the
TimerRecordDialog intto widgets/wxTextCtrlWrapper.h and made
it the default for ShuttleGui::AddTextBox(). This way readonly
text controls are always included in the tab order.
!!! THERE WILL NO DOUBT BE BUGS !!!
This is a big one and there's still several things to
complete. Just want to get this in the wild to start
receiving feedback.
One big thing right now is that it will NOT load pre-aup3
files. An importer is on the way for that.
... Require the declarations to be in .h files, to be sure graph.pl detects the
dependencies.
Only one more #include was needed in Nyquist.cpp. This doesn't reveal any
more hidden cycles.
... Requires some more wx header inclusions, a renaming of CopyFile (to avoid
colliding with a certain macro changing it to CopyFileW), and an explicit
deletion of a copy constructor and assignment (to avoid generation of
std::vector members for an incomplete type)