These two visualization components, SceneKit and Core Graphics based,
only use the FFT data. So now make the request drop the PCM data.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
The Visualization Manager PCM/FFT copy function was already observing
these parameters for null input and only returning output to the ones
which were not null. This just makes it clear that they are both
optional parameters. This is useful for future visualization adventures,
allowing PCM copy without invoking the FFT processing, or requesting FFT
without also having to keep the PCM.
This is mostly only a compile time change, and has no noticeable effect
on the current runtime behavior, as the only consumers of the Visualizer
data currently request both PCM and FFT.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This affects User Defaults, but only has any effect on ChunkLists which
are being used for conversion, and only if they're processing DSD source
material. Thus, the observer should only be added on the one stream that
is converting DSD, and should definitely be removed when the object is
deallocated.
This fixes a serious crash bug that mostly appears to only affect Intel
Macs, and has no major side effects on Apple Silicon that I can tell.
It's a good thing I still own an Intel Mac or two to test on, even if
they are both trapped on older releases of macOS.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Apparently I somehow didn't notice this situation because I still had
Rubber Band enabled, and existing users kept it enabled ever since I
introduced it.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Move this commonly used string decoding helper to the CogAudio framework
and import it in every plugin that uses it.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Apparently, stringWithUTF8String: just returns nil when the encoding is
not UTF-8, rather than throwing an exception.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Xcode really wants to add focusRingType="none" to everything now upon
opening with the editor, for some reason.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Now it handles multiple attached pictures and tries to pick out the one
which may be the front cover picture, or otherwise picks the first one.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Operation blocks cannot expect their out of scope variables to be
present when the block executes, so design the block operation to pull
inputs from a queue array one at a time, like the rest of the blocks do.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Clearly, NSUserDefaults bindings were not really meant to be used in
practice at all, as they do nothing but crash the app.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Change hotkey storage system, hopefully this will fix the stability
issues that have been plaguing it for a while now.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
MASShortcutView is apparently buggy on older macOS versions. So everyone
there gets hard coded shortcuts and nothing else.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
The converter doesn't just require an output format call, it also
requires this input format change callback to actually signal it to
reopen the converter process with a new format setup.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Output format mostly requires stopping and restarting the output device,
and this also prevents us from using the latency function properly,
which apparently always returns 0 for output devices anyway. These
changes also prevent the output callback from hanging when resets occur.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
It turns out that initializing NSUserDefaultsController like this is a
really bad idea, especially on older versions of macOS. This is probably
also why the equalizer was crashing for people on first activation.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Properly support translating the System Default Device name for sound
output devices. Pending a Spanish translation, but in its current state,
it's no different from where it was before this change.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Fix default output device logging, and also the preferences if no
default device happens to be set.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Fixes visualization latency under virtual machines, at least. Not sure
which local or native systems would be reporting high latency here, but
this should fix them as well.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Move the DSPs to the output node, so they don't get closed and reopened
across each file. Also restructure the output handler to buffer a little
on its own, to account for track switch activity.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>