Skip to content

Commit 5f20ea4

Browse files
committed
Initial commit, matching ARA SDK preview 1.9.14.008
0 parents  commit 5f20ea4

File tree

444 files changed

+46698
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

444 files changed

+46698
-0
lines changed

.gitignore

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
$RECYCLE.BIN
2+
.fseventsd
3+
.Trashes
4+
.DS_Store
5+
.vscode
6+
.vs
7+
*.ncb
8+
*.suo
9+
*.sdf
10+
*.opensdf
11+
*.pbxuser
12+
*.perspectivev3
13+
*.user
14+
*.xcworkspacedata
15+
*.VC.db*
16+
*.VC.opendb*
17+
*.ipch
18+
version.properties
19+
xcuserdata
20+
ARTIFACTS
21+
build
22+
out

ARA_Library.html

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<head>
2+
<!-- Simply redirect to html/index.html Doxygen output-->
3+
<meta http-equiv='refresh' content='0; URL=html_docs/index.html'>
4+
</head>

ARA_Library.ruleset

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RuleSet Name="VisualStudioWarnings" ToolsVersion="16.0">
3+
<Include Path="cppcorecheckarithmeticrules.ruleset" Action="Default" />
4+
<Include Path="cppcorecheckclassrules.ruleset" Action="Default" />
5+
<Include Path="cppcorecheckconcurrencyrules.ruleset" Action="Default" />
6+
<Include Path="cppcorecheckconstrules.ruleset" Action="Default" />
7+
<Include Path="cppcorecheckdeclrules.ruleset" Action="Default" />
8+
<Include Path="cppcorecheckstlrules.ruleset" Action="Default" />
9+
<Include Path="cppcorecheckstylerules.ruleset" Action="Default" />
10+
<Include Path="nativerecommendedrules.ruleset" Action="Default" />
11+
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
12+
<Rule Id="C26426" Action="None" />
13+
<Rule Id="C26432" Action="None" />
14+
<Rule Id="C26436" Action="None" />
15+
<Rule Id="C26459" Action="None" />
16+
<Rule Id="C26461" Action="None" />
17+
<Rule Id="C26462" Action="None" />
18+
<Rule Id="C26497" Action="None" />
19+
<Rule Id="C28252" Action="None" />
20+
<Rule Id="C28253" Action="None" />
21+
</Rules>
22+
</RuleSet>

CMakeLists.txt

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
# ======================
2+
# ARA Library CMake Integration
3+
#
4+
# Copyright (c) 2020-2021, Celemony Software GmbH, All Rights Reserved.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
# ======================
18+
19+
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
20+
21+
if(ARA_API_DIR)
22+
# normalize path if provided (and if relative path, assume it's relative to the top-level project)
23+
get_filename_component(ARA_API_DIR "${ARA_API_DIR}" ABSOLUTE BASE_DIR "${CMAKE_SOURCE_DIR}")
24+
else()
25+
# if no path provided, assume ARA_API is right next to our ARA_Library directory
26+
get_filename_component(ARA_API_DIR ../ARA_API ABSOLUTE "${CMAKE_CURRENT_SOURCE_DIR}")
27+
endif()
28+
set(ARA_API_DIR "${ARA_API_DIR}" CACHE PATH "directory of the ARA_API project")
29+
30+
include("${ARA_API_DIR}/ARA_API_Helpers.cmake")
31+
include("${ARA_API_DIR}/ARA_Version.cmake")
32+
33+
#set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE STRING "Generate compile commands" FORCE)
34+
35+
# ======================
36+
37+
project(ARA_Library
38+
DESCRIPTION "ARA Audio Random Access: Implementation Library"
39+
#only added in CMake 3.12:
40+
#HOMEPAGE_URL https://www.celemony.com/ara
41+
VERSION ${ARA_MAJOR_VERSION}.${ARA_MINOR_VERSION}.${ARA_PATCH_VERSION}.${ARA_BUILD_VERSION}
42+
LANGUAGES C CXX
43+
)
44+
45+
# ======================
46+
47+
add_subdirectory("${ARA_API_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/ARA_API.build" EXCLUDE_FROM_ALL)
48+
set_target_properties(ARA_API PROPERTIES
49+
XCODE_GENERATE_SCHEME OFF
50+
)
51+
52+
# ======================
53+
54+
function(configure_ARA_Library_target target)
55+
56+
# file grouping
57+
ara_group_target_files(${target})
58+
59+
# language standards
60+
target_compile_features(${target}
61+
PUBLIC
62+
cxx_std_11
63+
c_std_11
64+
)
65+
66+
# ARA_API dependency
67+
ara_link_ARA_API(${target} PUBLIC)
68+
69+
# include paths
70+
target_include_directories(${target}
71+
PUBLIC
72+
"${CMAKE_CURRENT_SOURCE_DIR}/.."
73+
)
74+
75+
# defines
76+
# \todo: add proper external configuration of the ARADebug options!
77+
target_compile_definitions(${target}
78+
# \todo is PRIVATE really appropriate here, or should it rather be PUBLIC?
79+
PRIVATE
80+
$<$<NOT:$<CONFIG:Debug>>: -DNDEBUG>
81+
)
82+
83+
# platform-specific settings
84+
if(WIN32)
85+
target_compile_definitions(${target}
86+
PRIVATE
87+
-DNOMINMAX=1
88+
)
89+
elseif(UNIX AND NOT APPLE)
90+
set_target_properties(${target} PROPERTIES
91+
POSITION_INDEPENDENT_CODE ON
92+
)
93+
endif()
94+
95+
# default settings
96+
ara_disable_unwanted_warnings(${target})
97+
98+
endfunction()
99+
100+
# ======================
101+
102+
# files used in both targets
103+
set(ARA_Library_Common_Files
104+
"${CMAKE_CURRENT_SOURCE_DIR}/Debug/ARADebug.h"
105+
"${CMAKE_CURRENT_SOURCE_DIR}/Debug/ARADebug.c"
106+
"${CMAKE_CURRENT_SOURCE_DIR}/Debug/ARAContentLogger.h"
107+
"${CMAKE_CURRENT_SOURCE_DIR}/Debug/ARAContentValidator.h"
108+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARADispatchBase.h"
109+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARAContentReader.h"
110+
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ARAStdVectorUtilities.h"
111+
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ARASamplePositionConversion.h"
112+
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ARATimelineConversion.h"
113+
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ARAPitchInterpretation.h"
114+
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ARAPitchInterpretation.cpp"
115+
"${CMAKE_CURRENT_SOURCE_DIR}/ARA_Library.html"
116+
"${CMAKE_CURRENT_SOURCE_DIR}/ChangeLog.txt"
117+
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt"
118+
)
119+
120+
# ======================
121+
122+
# test if we can use object targets or must fall back to or static targets
123+
# older CMake can't link to object targets, must build static lib instead
124+
# \todo when building universal binaries for macOS, the paths to the object files are broken...
125+
# to work around, we need to stick with static libs for now.
126+
#if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
127+
# set(ARA_LIBRARY_TARGET_TYPE OBJECT)
128+
#else()
129+
set(ARA_LIBRARY_TARGET_TYPE STATIC)
130+
#endif()
131+
132+
# ======================
133+
134+
add_library(ARA_Host_Library ${ARA_LIBRARY_TARGET_TYPE}
135+
${ARA_Library_Common_Files}
136+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARAHostDispatch.h"
137+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARAHostDispatch.cpp"
138+
)
139+
configure_ARA_Library_target(ARA_Host_Library)
140+
141+
# ======================
142+
143+
add_library(ARA_PlugIn_Library ${ARA_LIBRARY_TARGET_TYPE}
144+
${ARA_Library_Common_Files}
145+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARAPlugInDispatch.h"
146+
"${CMAKE_CURRENT_SOURCE_DIR}/Dispatch/ARAPlugInDispatch.cpp"
147+
"${CMAKE_CURRENT_SOURCE_DIR}/PlugIn/ARAPlug.h"
148+
"${CMAKE_CURRENT_SOURCE_DIR}/PlugIn/ARAPlug.cpp"
149+
)
150+
configure_ARA_Library_target(ARA_PlugIn_Library)

ChangeLog.txt

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
This is a pre-release build of the ARA Library 2.0.
2+
3+
Changes since previous releases:
4+
5+
ARA SDK 2.0 draft 14 (aka 1.9.14) (2021/02/26)
6+
- applied Apache License 2.0
7+
- added support for license management if using ARA plug-ins without UI as analysis or time-stretch engine
8+
- refactored plug-in entry to allow multiple DocumentController subclasses in one binary (e.g. WaveShell)
9+
by formalizing it into new PlugInEntry class
10+
Instead of providing DocumentController::doCreateDocumentController () and DocumentController::doCreateFactoryConfig (),
11+
client code now creates a static PlugInEntry instance by using the template function PlugInEntry::getPlugInEntry<> ().
12+
Plug-Ins vendors must update their usage of DocumentController accordingly!
13+
- refactored PlugInExtension so that it can be used as direct instance variable for companion API classes,
14+
which avoids dynamic allocation and simplifies user code
15+
Plug-Ins vendors must update their usage of PlugInExtension accordingly!
16+
- debug message prefix changed from a compile-time define to a runtime setup to facilitate multiple
17+
targets using the same compiled library (see also ARA_SETUP_DEBUG_MESSAGE_PREFIX)
18+
- bugfix in ContentReader template prevents crash in plug-ins if host does not provide content reading
19+
- ContentReaderEventIterator now returns const reference to its cache instead of value copy
20+
- fixed potential rounding issue in PlaybackRegion::getDurationInAudioModification/PlaybackSamples ()
21+
- rounding utilities renamed
22+
- fixed several compiler warnings that were not enabled by default
23+
- added initial CMake support, still work-in-progress
24+
25+
ARA SDK 2.0 draft 13 (aka 1.9.13) (2020/08/12)
26+
- fixed SizedStructPtr::implements<> () when using certain versions of clang
27+
- renamed macro ARA_MEMBER_PTR_ARGS to ARA_STRUCT_MEMBER
28+
- renamed template InterfaceWrapper to InterfaceInstance
29+
- consistent order of template parameters in all content reading related templates (contentType first)
30+
- removed ARA_PROVIDES_FUNCTION and SizedStructPtr::provides<> () since the current API does not use optional struct members
31+
- changed factory access in DocumentController implementation to use internal API instead of host-facing API
32+
- grouped document controller plug-in implementation customization methods into separate delegation base class
33+
- added will/didNotifyModelUpdates () hooks
34+
35+
ARA SDK 2.0 draft 12 (aka 1.9.12) (2020/06/12)
36+
- re-introduced updated version of processing algorithm selection draft
37+
- completed implementation of pitch interpretation classes
38+
- fixed accidental handling in PitchInterpreter::getNoteNameForCircleOfFifthIndex()
39+
- when notifying changes from the plug-in, analysis progress is now sent before content updates
40+
- content reader now optionally validate data (used to be done in the content logger before)
41+
42+
ARA SDK 2.0 draft 11 (aka 1.9.11) (2020/04/02)
43+
- improved logging functions for content reading
44+
45+
ARA SDK 2.0 draft 10 (aka 1.9.10) (2020/03/13)
46+
- content reader wrappers changed to return copies instead of references to avoid stale pointers
47+
- fixed invalid ARAFactory pointer members by properly managing the FactoryConfig instance lifetime
48+
- fixed scale interval comparison in KeySignatureInterpreter
49+
50+
ARA SDK 2.0 draft 9 (aka 1.9.9) (2019/12/06)
51+
- adopted current revision of partial persistency draft
52+
- added experimental Linux support (tested on Ubuntu 18.04 w/ GCC 8.3.0 and clang 7.0)
53+
- dropped support for VisualStudio 2013 due to its heavily limited C++11 support
54+
- added support for thread-safe analysis progress reporting
55+
- added support for content update notifications
56+
- fromRef() and fromHostRef() allow for optional immediate up-casting to derived classes
57+
- changed construction of interface wrapper classes to require an actual interface instance
58+
- improved partial persistency filters to allow for proper update notifications and error handling
59+
- fixed ModelUpdateControllerDispatcher to properly hook up notifyPlaybackRegionContentChanged ()
60+
- consistent rounding from continuous time to integer sample positions
61+
- improved support for noexcept
62+
- improved const correctness
63+
- cleaner implementation of std::vector utilities
64+
- stricter C++11 coding style
65+
- removed all uses of std::unique_ptr from the library, restricting its use to the example code
66+
- added support for deactivation for undo history to ARAPlug
67+
- abstracted factory configuration in ARAPlug
68+
- added some data validation to content logging
69+
- fixes for Xcode 8 namespace issues when using std::malloc()/std::free()
70+
- updated to be compatible with Xcode 11.2.1
71+
72+
ARA SDK 2.0 draft 8 (aka 1.9.8) (2019/06/28)
73+
- replaced ARA_NOEXCEPT with regular noexcept, using different workaround for Visual Studio 2013
74+
- fixes for optional ARA 1 support
75+
- consistently renamed host-implemented classes used by plug-in so class names start with Host...
76+
- improved C++ details such as use of constexpr, explicit constructors, noexcept declarations, etc.
77+
- bugfix in ViewSelection::getEffectivePlaybackRegions () when no time range has been set
78+
- providing extended html version of the ARA_API docs that additionally includes the Doxygen docs
79+
for the ARA_Library code
80+
81+
ARA SDK 2.0 draft 7 (aka 1.9.7) (2019/03/04)
82+
- SizedStruct now imposes proper alignment restrictions
83+
- fixed bug in host dispatch that caused calls to isAudioSourceContentAvailable () to accidentally
84+
call getAudioSourceContentGrade () and vice versa
85+
- fixed bug in ARAPlug in doGetAudioModificationContentGrade () which accidentally internally
86+
called doGetAudioSourceContentGrade ()
87+
- fixed bug in ARAPlug in requestAudioSourceContentAnalysisWithAlgorithm () which accidentally
88+
dropped algorithmIndex
89+
- host dispatch code updated to correctly reflect the fact that new ARA 2 partial persistency
90+
requires kARAAPIGeneration_2_0_Final, i.e. kARAAPIGeneration_2_0_Draft is not sufficient
91+
- unifyed API for creating or cloning audio modifications in ARAPlug
92+
- cleaner state handling for begin/endEditing ()
93+
- updated mapping code between API refs and internal objects to be variadic so that a single
94+
object can be used as multiple different refs
95+
- added helpers for up-casting std::vector<T*> or std::vector<unique_ptr<T>>
96+
- getters in the ARAPlug classes templated to allow for convenient up-casting to derived classes
97+
- unified ARA::Host/PlugIn::ContentReader in new ARA::ContentReader and moved the associated code
98+
into a new header ARAContentReader.h
99+
Note that this change means that host code using the previous implementation may need minor updates.
100+
- improved the unified content reader class with more convenient construction, and
101+
added full stl compatible iterator support
102+
- added generic tool for logging content information in ARAContentLogger.h
103+
- added ContentUpdateScopes as convenient wrapper for ARAContentUpdateFlags
104+
- added optimized timeline conversion classes to map between seconds, quarters, beats etc.
105+
- drafted preliminary code to convert note names, ARAContentChord and ARAContentKeySignature to text
106+
- added convenience conversions between various selection types to ViewSelection
107+
- added support for C++ noexcept
108+
- made code compile without warnings when unused parameter warnings are enabled
109+
- properly supporting and using Xcode and Visual Studio static analyzers
110+
111+
ARA SDK 2.0 draft 6 (aka 1.9.6) (2018/9/19)
112+
This is the public release of kARAAPIGeneration_2_0_Draft.
113+
For changes compared earlier versions, see Version.txt in that release of the SDK.

0 commit comments

Comments
 (0)