-
Notifications
You must be signed in to change notification settings - Fork 4
/
ChangeLog.txt
160 lines (143 loc) · 10.5 KB
/
ChangeLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
This is a development build of the ARA Library 2.3.
=== PRELIMINARY - DO NOT USE FOR SHIPPING PRODUCTS! ===
Changes since previous releases:
- initial draft of generic ARA IPC library providing a proxy host and a proxy plug-in,
based on heavily refactored IPC Example from earlier SDK releases
- ChannelArrangement helper class refactored as editable ChannelFormat, which now maintains
a channel count too and copies the channel arrangement data instead of referencing it
As a result, DocumentController::doUpdateChannelArrangement() has been removed since
the arrangement is now always available, just like sample rate etc.
- added API to notify the host when the private, opaque document state changes (to trigger saving it)
- added ARA_VALIDATE_API_THREAD to enable conveniently raising kARAAssertInvalidThread
- added optional document controller thread validation to ARAPlug
- required minimum CMake version increased from 3.4 to 3.19 (same as VST3)
=== ARA SDK 2.2 release (aka 2.2.001) (2022/11/07) ===
- added surround support for audio sources
- added API to determine whether an audio modification actually modifies the underlying audio source
- implementation of assertion macros changed to be consistent void expressions
Code like "if (ARA_SOME_ASSERT (someCall ()))" breaks when disabling asserts,
so this change makes it impossible to write it.
- minor tweaks for full compatibility with recent C++ compilers (e.g. std::iterator, warnings, etc.)
=== ARA SDK 2.1 release (aka 2.1.001) (2022/01/06) ===
- finalized ARM support for Apple Silicon
- enabled ARA audio file chunk authoring directly in the host
=== ARA SDK 2.0 release (aka 2.0.001) (2021/05/03) ===
- added matching object destruction customization function for all object creation functions
This allows to use custom memory management, or to reuse already existing internal objects that
can implement the interface for which an object is created.
- implemented reference counting for the document controller class in ARAPlug to ease dealing with
destruction order between document controller and plug-in instances
While the document is deleted immediately when the host destroys the controller, the controller
itself will now be kept alive until all plug-in instances bound to it have been destroyed.
- changed default implementations of content getters for audio modifications and playback regions to
require explicit override by user code: DocumentControllerDelegate::doIsAudioModificationContentAvailable (),
doGetAudioModificationContentGrade (), doIsPlaybackRegionContentAvailable () and doGetPlaybackRegionContentGrade ()
Forwarding these getters from modification to source is only appropriate for content that is not affected by the
audio modification edit state, and and forwarding from the region to the modification is affected by the
modification-to-playback transformation, both of which are opaque to the ARAPlug layer and therefore need to
be implemented in derived classes. The previous behavior caused hard-to-find bugs in edge cases.
Plug-Ins vendors that have relied on the previous behavior must update their code accordingly -
running the test host will trigger all relevant code paths to validate the changed code.
- refactored StoreObjectsFilter c'tor to make it usable without a DocumentController*
- various minor documentation cleanups/improvements
ARA SDK 2.0 draft 14 (aka 1.9.14) (2021/02/26)
- applied Apache License 2.0
- added support for license management if using ARA plug-ins without UI as analysis or time-stretch engine
- refactored plug-in entry to allow multiple DocumentController subclasses in one binary (e.g. WaveShell)
by formalizing it into new PlugInEntry class
Instead of providing DocumentController::doCreateDocumentController () and DocumentController::doCreateFactoryConfig (),
client code now creates a static PlugInEntry instance by using the template function PlugInEntry::getPlugInEntry<> ().
Plug-Ins vendors must update their usage of DocumentController accordingly!
- refactored PlugInExtension so that it can be used as direct instance variable for companion API classes,
which avoids dynamic allocation and simplifies user code
Plug-Ins vendors must update their usage of PlugInExtension accordingly!
- debug message prefix changed from a compile-time define to a runtime setup to facilitate multiple
targets using the same compiled library (see also ARA_SETUP_DEBUG_MESSAGE_PREFIX)
- bugfix in ContentReader template prevents crash in plug-ins if host does not provide content reading
- ContentReaderEventIterator now returns const reference to its cache instead of value copy
- fixed potential rounding issue in PlaybackRegion::getDurationInAudioModification/PlaybackSamples ()
- rounding utilities renamed
- fixed several compiler warnings that were not enabled by default
- added initial CMake support, still work-in-progress
ARA SDK 2.0 draft 13 (aka 1.9.13) (2020/08/12)
- fixed SizedStructPtr::implements<> () when using certain versions of clang
- renamed macro ARA_MEMBER_PTR_ARGS to ARA_STRUCT_MEMBER
- renamed template InterfaceWrapper to InterfaceInstance
- consistent order of template parameters in all content reading related templates (contentType first)
- removed ARA_PROVIDES_FUNCTION and SizedStructPtr::provides<> () since the current API does not use optional struct members
- changed factory access in DocumentController implementation to use internal API instead of host-facing API
- grouped document controller plug-in implementation customization methods into separate delegation base class
- added will/didNotifyModelUpdates () hooks
ARA SDK 2.0 draft 12 (aka 1.9.12) (2020/06/12)
- re-introduced updated version of processing algorithm selection draft
- completed implementation of pitch interpretation classes
- fixed accidental handling in PitchInterpreter::getNoteNameForCircleOfFifthIndex()
- when notifying changes from the plug-in, analysis progress is now sent before content updates
- content reader now optionally validate data (used to be done in the content logger before)
ARA SDK 2.0 draft 11 (aka 1.9.11) (2020/04/02)
- improved logging functions for content reading
ARA SDK 2.0 draft 10 (aka 1.9.10) (2020/03/13)
- content reader wrappers changed to return copies instead of references to avoid stale pointers
- fixed invalid ARAFactory pointer members by properly managing the FactoryConfig instance lifetime
- fixed scale interval comparison in KeySignatureInterpreter
ARA SDK 2.0 draft 9 (aka 1.9.9) (2019/12/06)
- adopted current revision of partial persistency draft
- added experimental Linux support (tested on Ubuntu 18.04 w/ GCC 8.3.0 and clang 7.0)
- dropped support for VisualStudio 2013 due to its heavily limited C++11 support
- added support for thread-safe analysis progress reporting
- added support for content update notifications
- fromRef() and fromHostRef() allow for optional immediate up-casting to derived classes
- changed construction of interface wrapper classes to require an actual interface instance
- improved partial persistency filters to allow for proper update notifications and error handling
- fixed ModelUpdateControllerDispatcher to properly hook up notifyPlaybackRegionContentChanged ()
- consistent rounding from continuous time to integer sample positions
- improved support for noexcept
- improved const correctness
- cleaner implementation of std::vector utilities
- stricter C++11 coding style
- removed all uses of std::unique_ptr from the library, restricting its use to the example code
- added support for deactivation for undo history to ARAPlug
- abstracted factory configuration in ARAPlug
- added some data validation to content logging
- fixes for Xcode 8 namespace issues when using std::malloc()/std::free()
- updated to be compatible with Xcode 11.2.1
ARA SDK 2.0 draft 8 (aka 1.9.8) (2019/06/28)
- replaced ARA_NOEXCEPT with regular noexcept, using different workaround for Visual Studio 2013
- fixes for optional ARA 1 support
- consistently renamed host-implemented classes used by plug-in so class names start with Host...
- improved C++ details such as use of constexpr, explicit constructors, noexcept declarations, etc.
- bugfix in ViewSelection::getEffectivePlaybackRegions () when no time range has been set
- providing extended html version of the ARA_API docs that additionally includes the Doxygen docs
for the ARA_Library code
ARA SDK 2.0 draft 7 (aka 1.9.7) (2019/03/04)
- SizedStruct now imposes proper alignment restrictions
- fixed bug in host dispatch that caused calls to isAudioSourceContentAvailable () to accidentally
call getAudioSourceContentGrade () and vice versa
- fixed bug in ARAPlug in doGetAudioModificationContentGrade () which accidentally internally
called doGetAudioSourceContentGrade ()
- fixed bug in ARAPlug in requestAudioSourceContentAnalysisWithAlgorithm () which accidentally
dropped algorithmIndex
- host dispatch code updated to correctly reflect the fact that new ARA 2 partial persistency
requires kARAAPIGeneration_2_0_Final, i.e. kARAAPIGeneration_2_0_Draft is not sufficient
- unifyed API for creating or cloning audio modifications in ARAPlug
- cleaner state handling for begin/endEditing ()
- updated mapping code between API refs and internal objects to be variadic so that a single
object can be used as multiple different refs
- added helpers for up-casting std::vector<T*> or std::vector<unique_ptr<T>>
- getters in the ARAPlug classes templated to allow for convenient up-casting to derived classes
- unified ARA::Host/PlugIn::ContentReader in new ARA::ContentReader and moved the associated code
into a new header ARAContentReader.h
Note that this change means that host code using the previous implementation may need minor updates.
- improved the unified content reader class with more convenient construction, and
added full stl compatible iterator support
- added generic tool for logging content information in ARAContentLogger.h
- added ContentUpdateScopes as convenient wrapper for ARAContentUpdateFlags
- added optimized timeline conversion classes to map between seconds, quarters, beats etc.
- drafted preliminary code to convert note names, ARAContentChord and ARAContentKeySignature to text
- added convenience conversions between various selection types to ViewSelection
- added support for C++ noexcept
- made code compile without warnings when unused parameter warnings are enabled
- properly supporting and using Xcode and Visual Studio static analyzers
ARA SDK 2.0 draft 6 (aka 1.9.6) (2018/9/19)
This is the public release of kARAAPIGeneration_2_0_Draft.
For changes compared earlier versions, see Version.txt in that release of the SDK.