VST3 CC Improvements
The VST3 wrapper has been taught to understand a wider variety of Vst::Event
types. In particular, it now understands the kLegacyMIDICCOutEvent
type,
meaning that VST3 plugins can send and receive MIDI CC messages, as well as
channel-pressure, pitch-bend, program-change, quarter-frame, and poly-pressure
messages. It also fixes an issue where the kPolyPressureEvent was incorrectly
being converted to a channel pressure MIDI message. Now, kPolyPressureEvents
will be converted to polyphonic aftertouch MIDI messages, and channel pressure
changes can be communicated using the new kLegacyMIDICCOutEvent support.
You don’t need to do anything to take advantage of this change. VST3 plugins
built with JUCE 6 will simply be able to send and receive a broader variety of
juce::MidiMessage types from your plugin’s processBlock.
AudioPluginHost Improvements
The AudioPluginHost app now directly contains the audio plugin examples which
are also distributed with JUCE. Much as the DemoRunner makes it quick to find
out which JUCE widgets are available, the AudioPluginHost now acts as a showcase
for JUCE’s plugin-related functionality.
JUCE 6 also contains a new “MIDI Logger” example plugin, which is useful for
debugging plugin MIDI output.
IPP FFT Support
The JUCE FFT can now use the Intel Performance Primitives FFT functions
internally, giving developers a choice of IPP, MKL, FFTW, and Accelerate
FFT implementations. To use, simply install the IPP library, and then select
your desired kind of linking under the “Use IPP Library” option in the Projucer.
Parameter Attachment Ergonomics Improvements
The AudioProcessorValueTreeState::Attachment classes make it easy to connect GUI
controls to audio parameters. Improvements in JUCE 6 allow GUI/parameter
connections to be made without any use of the AudioProcessorValueTreeState
(APVTS).
A new set of standalone ParameterAttachment classes are provided, including a
SliderParameterAttachment, ButtonParameterAttachment, and
ComboBoxParameterAttachment. These attachments can be constructed using
references to a RangedAudioParameter and a GUI control, and will keep the two
objects in sync for the duration of the attachment’s lifetime.
JUCE 6 also includes a generic ParameterAttachment class which can be used to
implement new attachment kinds for custom GUI controls like XY-pads and EQ
graphs.