1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Whitespace corrections

This commit is contained in:
Tom Poole 2018-02-20 09:51:05 +00:00
parent 824840e8b4
commit 964638f6d1

View file

@ -6,31 +6,36 @@ Develop
Change
------
JUCE's MPE classes have been updated to reflect the official specification recently approved
by the MIDI Manufacturers Association (MMA).
JUCE's MPE classes have been updated to reflect the official specification
recently approved by the MIDI Manufacturers Association (MMA).
Possible Issues
---------------
The most significant changes have occured in the MPEZoneLayout classes and programs
using the higher level MPE classes such as MPEInstrument, MPESynthesiser, MPESynthesiserBase and
MPESynthesiserVoice should be unaffected.
The most significant changes have occured in the MPEZoneLayout classes and
programs using the higher level MPE classes such as MPEInstrument,
MPESynthesiser, MPESynthesiserBase and MPESynthesiserVoice should be
unaffected.
Previously, any MIDI channel from 1 - 15 could be selected to be the master channel of an MPE zone,
with a specified number of member channels ascending from the master channel + 1. However, in the
new specification this has been simplified so that a device only has a lower and/or an upper zone,
where the lower zone has master channel 1 and assigns new member channels ascending from channel 2
and the upper zone has master channel 16 and assigns new member channels descending from channel 15.
Previously, any MIDI channel from 1 - 15 could be selected to be the master
channel of an MPE zone, with a specified number of member channels ascending
from the master channel + 1. However, in the new specification this has been
simplified so that a device only has a lower and/or an upper zone, where the
lower zone has master channel 1 and assigns new member channels ascending from
channel 2 and the upper zone has master channel 16 and assigns new member
channels descending from channel 15.
Workaround
----------
Use the MPEZoneLayout::setLowerZone() and MPEZoneLayout::setUpperZone() methods to set zone layouts.
Use the MPEZoneLayout::setLowerZone() and MPEZoneLayout::setUpperZone() methods
to set zone layouts.
Any UI that allows users to select and set zones on an MPE instrument should also
be updated to reflect the specification changes.
Any UI that allows users to select and set zones on an MPE instrument should
also be updated to reflect the specification changes.
Rationale
---------
The MPE classes in JUCE are out of date and should be updated to reflect the new, official MPE standard.
The MPE classes in JUCE are out of date and should be updated to reflect the
new, official MPE standard.
Version 5.2.1
@ -39,13 +44,15 @@ Version 5.2.1
Change
------
Calling JUCEApplicationBase::quit() on Android will now really quit the app,
rather than just placing it in background. Starting with API level 21 (Android 5.0), the
app will not appear in recent apps list after calling quit(). Prior to API 21, the app will still
appear in recent app lists but when a user chooses the app, a new instance of the app will be started.
rather than just placing it in background. Starting with API level 21 (Android
5.0), the app will not appear in recent apps list after calling quit(). Prior
to API 21, the app will still appear in recent app lists but when a user
chooses the app, a new instance of the app will be started.
Possible Issues
---------------
Any code calling JUCEApplicationBase::quit() to place the app in background will close the app instead.
Any code calling JUCEApplicationBase::quit() to place the app in background
will close the app instead.
Workaround
----------
@ -53,21 +60,24 @@ Use Process::hide().
Rationale
---------
The old behaviour JUCEApplicationBase::quit() was confusing JUCE code, as a new instance of JUCE
app was attempted to be created, while the older instance was still running in background. This
would result in assertions when starting a second instance.
The old behaviour JUCEApplicationBase::quit() was confusing JUCE code, as a new
instance of JUCE app was attempted to be created, while the older instance was
still running in background. This would result in assertions when starting a
second instance.
Change
------
Calling JUCEApplicationBase::quit() on Android will now really quit the app,
rather than just placing it in background. Starting with API level 21 (Android 5.0), the
app will not appear in recent apps list after calling quit(). Prior to API 21, the app will still
appear in recent app lists but when a user chooses the app, a new instance of the app will be started.
rather than just placing it in background. Starting with API level 21 (Android
5.0), the app will not appear in recent apps list after calling quit(). Prior
to API 21, the app will still appear in recent app lists but when a user
chooses the app, a new instance of the app will be started.
Possible Issues
---------------
Any code calling JUCEApplicationBase::quit() to place the app in background will close the app instead.
Any code calling JUCEApplicationBase::quit() to place the app in background
will close the app instead.
Workaround
----------
@ -75,9 +85,10 @@ Use Process::hide().
Rationale
---------
The old behaviour JUCEApplicationBase::quit() was confusing JUCE code, as a new instance of JUCE
app was attempted to be created, while the older instance was still running in background. This
would result in assertions when starting a second instance.
The old behaviour JUCEApplicationBase::quit() was confusing JUCE code, as a new
instance of JUCE app was attempted to be created, while the older instance was
still running in background. This would result in assertions when starting a
second instance.
Change
@ -86,42 +97,45 @@ On Windows, release builds will now link to the dynamic C++ runtime by default
Possible Issues
---------------
If you are creating a new .jucer project, then your plug-in will now link to the dynamic
C++ runtime by default, which means that you MUST ensure that the C++ runtime libraries
exist on your customer's computers.
If you are creating a new .jucer project, then your plug-in will now link to
the dynamic C++ runtime by default, which means that you MUST ensure that the
C++ runtime libraries exist on your customer's computers.
Workaround
----------
If you are only targeting Windows 10, then the C++ runtime is now part of the system core
components and will always exist on the computers of your customers (just like kernel332.dll,
for example). If you are targeting Windows versions between Vista and Windows 10, then you
should build your plug-in with the latest updated version of VS2015 or later, which ensures
that it's linked to the universal runtime. Universal runtime is part of the system's core
libraries on Windows 10 and on Windows versions Vista to 8.1, it will be available on your
customer's computers via Windows Update. Unfortunately, if your customer has just installed
Windows 8.1 to Vista on a fresh computer, then there is a chance that the update mechanism
for the universal runtime hasn't triggered yet and your plug-in may still fail. Your installer
should prompt the user to install all the Windows updates in this case or you can deploy the
universal runtime as a redistributable with your installer. If you are targeting earlier
versions of Windows then you should always include the runtime as a redistributable with your
plug-in's installer. Alternatively, you can change the runtime linking to static (however,
see 'Rationale' section).
If you are only targeting Windows 10, then the C++ runtime is now part of the
system core components and will always exist on the computers of your customers
(just like kernel332.dll, for example). If you are targeting Windows versions
between Vista and Windows 10, then you should build your plug-in with the
latest updated version of VS2015 or later, which ensures that it's linked to
the universal runtime. Universal runtime is part of the system's core libraries
on Windows 10 and on Windows versions Vista to 8.1, it will be available on
your customer's computers via Windows Update. Unfortunately, if your customer
has just installed Windows 8.1 to Vista on a fresh computer, then there is a
chance that the update mechanism for the universal runtime hasn't triggered yet
and your plug-in may still fail. Your installer should prompt the user to
install all the Windows updates in this case or you can deploy the universal
runtime as a redistributable with your installer. If you are targeting earlier
versions of Windows then you should always include the runtime as a
redistributable with your plug-in's installer. Alternatively, you can change
the runtime linking to static (however, see 'Rationale' section).
Rationale
---------
In a recent update to Windows 10, Microsoft has limited the number of fiber local storage
(FLS) slots per process. Effectively, this limits how many plug-ins with static runtime
linkage can be loaded into a DAW. In the worst case, this limits the total number of plug-ins
to a maximum of 64 plug-ins. There is no workaround for DAW vendors and the only solution is
to push plug-in vendors to use the dynamic runtime. To help with this, JUCE has decided to make
In a recent update to Windows 10, Microsoft has limited the number of fiber
local storage (FLS) slots per process. Effectively, this limits how many
plug-ins with static runtime linkage can be loaded into a DAW. In the worst
case, this limits the total number of plug-ins to a maximum of 64 plug-ins.
There is no workaround for DAW vendors and the only solution is to push plug-in
vendors to use the dynamic runtime. To help with this, JUCE has decided to make
dynamic runtime linkage the default in JUCE.
Change
------
AudioProcessorGraph interface has changed in a number of ways - Node objects
are now reference counted, there are different accessor methods to iterate them,
and misc other small improvements to the API
are now reference counted, there are different accessor methods to iterate
them, and misc other small improvements to the API
Possible Issues
---------------