ChangeLog.md (16614B)
1 # Changes in 1.2.6 2 3 * [mini-curve-display.h](include/clap/ext/draft/mini-curve-display.h): third iteration, added curve stacking, curve kind and curve hints. 4 5 # Changes in 1.2.5 6 7 * [mini-curve-display.h](include/clap/ext/draft/mini-curve-display.h): second iteration, remove `host->cuve_changed()` and improve documentation 8 * [project-location.h](include/clap/ext/draft/project-location.h): fix typo 9 10 # Changes in 1.2.4 11 12 * [mini-curve-display.h](include/clap/ext/draft/mini-curve-display.h): new extension to let the plugin render a mini murve to be displayed in the host's mixer, eg: EQ frequency response 13 * [project-location.h](include/clap/ext/draft/project-location.h): rename the extension and second iteration on the interface 14 * [surround.h](include/clap/ext/surround.h): add `CLAP_SURROUND_TSL`, `CLAP_SURROUND_TSR`, and improve documentation 15 * [thread-check.h](include/clap/ext/thread-check.h): adjust documentation 16 17 # Changes in 1.2.3 18 19 ## New draft extensions 20 21 * [scratch-memory](include/clap/ext/draft/scratch-memory.h): host provided scratch memory within the process call 22 * [location](include/clap/ext/draft/location.h): better info about the plugin location within the project 23 * [gain-adjustment-metering](include/clap/ext/draft/gain-adjustment-metering.h): gain reduction feedback 24 25 ## Documention 26 27 * [events.h](include/clap/events.h): clarify sysex lifetime 28 * [host.h](include/clap/host.h): clarify `request_callback()` 29 * [ambisonic.h](include/clap/ext/ambisonic.h): remove bad comment 30 31 ## Fixes 32 33 * [plugin-template.c](src/plugin-template.c): fix bad assertion 34 35 # Changes in 1.2.2 36 37 * [thread-check.h](include/clap/ext/thread-check.h): expand the thread-doc to clarify and expand realtime 38 * [latency.h](include/clap/ext/latency.h): adjust latency extension requirements 39 * [undo.h](include/clap/ext/draft/undo.h): re-design the interface 40 * the plugin interfaces have been separated into 2 independent ones 41 * the plugin interfaces are optional 42 * simplification of the design 43 44 # Changes in 1.2.1 45 46 ## New draft extensions 47 48 * [undo.h](include/clap/ext/draft/undo.h): shared undo stack for the host and plugin. 49 50 ## Documentation 51 52 * [events.h](include/clap/events.h): clarification for note on events. 53 54 # Changes in 1.2.0 55 56 ## New conventions 57 58 * [extension-id](conventions/extension-id.md): introduce some rules about extension ID naming. 59 60 ## Stabilize extensions 61 62 * `CLAP_EXT_AMBISONIC` 63 * `CLAP_EXT_AUDIO_PORTS_ACTIVATION` 64 * `CLAP_EXT_CONFIGURABLE_AUDIO_PORTS` 65 * `CLAP_EXT_CONTEXT_MENU` 66 * `CLAP_EXT_PARAM_INDICATION` 67 * `CLAP_EXT_PRESET_LOAD` 68 * `CLAP_EXT_REMOTE_CONTROLS` 69 * `CLAP_EXT_STATE_CONTEXT` 70 * `CLAP_EXT_SURROUND` 71 * `CLAP_EXT_TRACK_INFO` 72 73 ### Notes regarding extension ID change after draft stabilization 74 75 We changed the extension ID in the process of stabilization which leads to a **break**. 76 77 To mitigate this transition, we've provided compatibility extension IDs which can be used to match and use the latest draft extensions as they are 100% compatible. 78 79 For example, `CLAP_EXT_CONTEXT_MENU` for the stable ID and `CLAP_EXT_CONTEXT_MENU_COMPAT` for the draft ID. 80 81 As you can see in [extension-id](conventions/extension-id.md), we introduced some rules, so this kind of break won't happen again. 82 83 We may decide to remove the `*_COMPAT` IDs in the future once their usage becomes antiquated. 84 85 ## Removed draft extensions 86 87 * `CLAP_EXT_CHECK_FOR_UPDATE` wasn't used and it's design needed more thought. 88 * `CLAP_EXT_MIDI_MAPPING` wasn't used. MIDI2 seems to do it better, and the interface wasn't satisfying. 89 * `CLAP_EXT_CV` the interface wasn't satisfying. 90 91 ## Stabilize factory 92 93 * `CLAP_PRESET_DISCOVERY_FACTORY_ID` 94 95 Note: we kept the last draft factory ID in order to not break plugins already using it. 96 97 ## Plugin State Converter 98 99 * Introduction of a new factory which provides a plugin state convertion mechanism. 100 101 ## Refactoring 102 103 * `clap_plugin_id_t` was renamed to `clap_universal_plugin_id_t` to make it clear that it can describe more than just a CLAP plugin ID. 104 * `clap_timestamp_t` was renamed to `clap_timestamp` to be consistent with other types, like e.g. `clap_id`. Also it was moved to a separate header as `CLAP_PRESET_DISCOVERY_FACTORY_ID` was stabilized. 105 106 ## Documentation 107 108 * [events.h](include/clap/events.h): Clarify how "Port Channel Key NoteID" matching works 109 * [events.h](include/clap/events.h): Clarify how `clap_event_note` fields map to MIDI, Host, etc... 110 * [events.h](include/clap/events.h): Expand clap note expression documentation 111 * [plugin.h](include/clap/plugin.h): Style cleanup 112 * [params.h](include/clap/ext/params.h): Fix incorrect function name reference 113 * [latency.h](include/clap/ext/latency.h): Require the plugin to be activated to get the latency and clarify that the latency can only be fetched when the plugin is activated 114 115 ## Plugin Template 116 117 * [plugin-template.c](src/plugin-template.c): implement thread-safe plugin entry init counter 118 119 ## Organization 120 121 * `clap.h` no longer includes headers from `ext/draft` or `factory/draft`. Draft extension and factory headers must now be explicitly included, either individually or via the `all.h` header. 122 123 ## Other changes 124 125 * [voice-info.h](include/clap/ext/voice-info.h): Make the voice info id `CLAP_CONSTEXPR` like all other ids 126 * [preset-load.h](include/clap/ext/preset-load.h): Make the preset load id and compat id `CLAP_CONSTEXPR` like all other ids 127 128 # Changes in 1.1.10 129 130 * [params.h](include/clap/ext/params.h): add `CLAP_PARAM_IS_ENUM` flag. 131 * various documentation improvements: 132 * clarification on the return value of many functions 133 * typos 134 135 # Changes in 1.1.9 136 137 * [entry.h](include/clap/entry.h): clarify what the `plugin_path` is on macOS 138 * [surround.h](include/clap/ext/draft/surround.h): simplify the design 139 * [ambisonic.h](include/clap/ext/draft/ambisonic.h): simplify the design 140 * [configurable-audio-ports.h](include/clap/ext/draft/configurable-audio-ports.h): simplify the design 141 * [gui.h](include/clap/ext/gui.h): documentation clarifications 142 * [entry.h](include/clap/entry.h): documentation clarifications 143 * [audio-ports-activation.h](include/clap/ext/draft/audio-ports-activation.h): specify the sample size to be used when activating the audio port. 144 145 # Changes in 1.1.8 146 147 * [params.h](include/clap/ext/params.h): document how persisting parameter values between sessions should be implemented 148 * [state.h](include/clap/ext/state.h): add basic documentation regarding what state should be saved and how plugins should interact with buffers 149 * various documentation fixes (essentially typos) 150 151 ## Draft extensions 152 153 * [extensible-audio-ports.h](include/clap/ext/draft/extensible-audio-ports.h): new extension which lets the host add ports to a plugin 154 * [configurable-audio-ports.h](include/clap/ext/draft/configurable-audio-ports.h): new extension allowing the host to **push** an audio ports configuration request, resulting in a simpler workflow for surround host and plugins 155 * [surround.h](include/clap/ext/draft/surround.h): 156 * remove `get_preferred_channel_map()` in favor of the push approach via [configurable-audio-ports.h](include/clap/ext/draft/configurable-audio-ports.h) 157 * remove `config_id` argument from `get_info()` 158 * [ambisonic.h](include/clap/ext/draft/ambisonic.h): remove `config_id` argument from `get_info()` 159 * [preset-load.h](include/clap/ext/draft/preset-load.h): use a location_kind + location approach instead of URI 160 161 ## Draft factories 162 163 * [preset-discovery.h](include/clap/factory/draft/preset-discovery.h): 164 * use a location_kind + location approach instead of URI 165 * document which descriptor fields are optional 166 * allow optional preset names in the metadata for non-container presets 167 168 # Changes in 1.1.7 169 170 * Add a [factory](include/clap/factory) folder for better organization and move our factories there 171 * [params.h](include/clap/ext/params.h): fix typos 172 * CMake: disable C17 targets for CMake < 3.21 173 * [plugin-features.h](include/clap/plugin-features.h): adds `note-detector` category for plugins which converts audio to notes 174 175 ## Draft extensions 176 177 * [context-menu.h](include/clap/ext/draft/context-menu.h): add "title" menu entry 178 * [preset-load.h](include/clap/ext/draft/preset-load.h): load from URI instead of path, making the extension more powerful 179 * [remote-controls.h](include/clap/ext/draft/remote-controls.h): distinguish between device pages and preset pages 180 * [audio-ports-activation.h](include/clap/ext/draft/audio-ports-activation.h): `set_active()` now returns bool instead of void, this helps catching problems earlier especially with invalid arguments 181 * [audio-ports-config.h](include/clap/ext/audio-ports-config.h): add new draft extension: `clap_plugin_audio_ports_config_info` which lets the host query detailed port information in a given configuration. 182 * [surround.h](include/clap/ext/draft/surround.h): add `config_id` parameter when fetching port info 183 * [ambisonic.h](include/clap/ext/draft/ambisonic.h): add `config_id` parameter when fetching port info 184 185 ## Draft factories 186 187 * [preset-discovery.h](include/clap/factory/draft/preset-discovery.h): new factory which allows the host to index the plugin presets which are stored on disk. 188 189 # Changes in 1.1.6 190 191 * [version.h](include/clap/version.h) `CLAP_VERSION_LT` was backwards (comparing current with arg 192 vs arg with current). Correct and enhance tests. 193 194 # Changes in 1.1.5 195 196 * [plugin.h](include/clap/plugin.h): clarify plugin state after init() 197 * [plugin.h](include/clap/plugin.h): clarify when it is allowed to call get_extension() 198 * [plugin.h](include/clap/plugin.h): advice for plugin id and version strings 199 * [host.h](include/clap/host.h): clarify when it is allowed to call get_extension() 200 * [CMakeLists.txt](CMakeLists.txt): the target `clap-test` now includes `clap-plugin-template` 201 * Remove UTF-8 BOM from a few files 202 * [plugin-template.c](src/plugin-template.c): add state impl and some comments 203 * [audio-ports-activation.h](include/clap/ext/draft/audio-ports-activation.h): improved documentation 204 * [version.h](include/clap/version.h): 205 * Add a CLAP_VERSION_GE(maj,min,rev), _EQ and _LT macro. 206 * Remove the uint32_t cast from CLAP_VERSION_MAJOR, _MINOR, and _REVISION macro, and introduce it to the CLAP_VERSION_INIT macro. 207 * If you rely on these macros being a uint32_t or parse this header using external software, this may be a breaking change. 208 209 # Changes in 1.1.4 210 211 * CMake: update some targets to link against `clap` instead of `clap-core` 212 * [params.h](include/clap/ext/params.h): clarify parameter range change, fix documentation typos, add missing items 213 * [plugin.h](include/clap/plugin.h): clarify data lifetime in `process()` 214 * [audio-ports-config.h](include/clap/ext/audio-ports-config.h): clarify `select()`: if succeed, the host should rescan the audio ports 215 216 ## Draft extensions 217 218 ### New 219 220 * [audio-ports-activation.h](include/clap/ext/draft/audio-ports-activation.h): new draft extension which allows a host to inform a plugin whether an audio port is an active port in the host audio context, and allow the host to respond accordingly 221 * [context-menu.h](include/clap/ext/draft/context-menu.h): new draft extension which let the host and plugin exchange context menu entries and popup the menu 222 * [param-indication.h](include/clap/ext/draft/param-indication.h): new draft extension which let the host inform the plugin that a parameter is currently mapped to a physical controller 223 * [remote-controls.h](include/clap/ext/draft/remote-controls.h): new draft extension which replaces `quick-controls.h` 224 * [resource-directory.h](include/clap/ext/draft/resource-directory.h): new draft extension which lets the plugin save resources in a directory provided by the host 225 * [triggers.h](include/clap/ext/draft/triggers.h): new draft extension which exposes triggers to the host, triggers are data-less events 226 227 ### Improved 228 229 * [track-info](include/clap/ext/draft/track-info.h): refine the draft extension 230 231 ### Removed 232 233 * `file-reference.h`: removed in favor of [resource-directory.h](include/clap/ext/draft/resource-directory.h) 234 * `quick-controls.h`: removed in favor of [remote-controls.h](include/clap/ext/draft/remote-controls.h) 235 236 # Changes in 1.1.3 237 238 * CMake: generate CMake and pkg-config package files on install 239 * CMake: `clap-core` target is now deprecated, use `clap` target instead 240 * [plugin.h](include/clap/plugin.h): make feature list on clap_plugin_descriptor_t const 241 * [entry.h](include/clap/entry.h): fix bad location on windows: replaced `%CommonFilesFolder%/CLAP/` by `%COMMONPROGRAMFILES%\CLAP` 242 243 # Changes in 1.1.2 244 245 * [macros.h](include/clap/private/macros.h): add `CLAP_ABI` which defines the calling convention and use it everywhere 246 * [events.h](include/clap/events.h): clarify `clap_input_events.size()` 247 * [check-for-update.h](include/clap/ext/draft/check-for-update.h): fix typedef 248 * [file-reference.h](include/clap/ext/draft/file-reference.h): improve documentation 249 * [params.h](include/clap/ext/params.h): clarify how the cookie works and add some notes about `flush()` 250 * [process.h](include/clap/process.h): clarify how the audio buffer mapping works 251 * [gui.h](include/clap/ext/gui.h): clarify `clap_plugin_gui.get_preferred_api()` 252 * [plugin-factory.h](include/clap/plugin-factory.h): mention `clap_plugin_invalidation_factory` which can be use to invalidate cached entries 253 254 # Changes in 1.1.1 255 256 * [clap.h](include/clap/clap.h): missing include for [state-context.h](include/clap/ext/draft/state-context.h). 257 258 # Changes in 1.1.0 259 260 * [state-context.h](include/clap/ext/draft/state-context.h): save/load state for duplicate or preset. 261 * [std.h](include/clap/private/std.h): fix compatibility with C++98. 262 * [note-name.h](include/clap/ext/note-name.h): missing typedef `clap_plugin_note_name_t`. 263 * [params.h](include/clap/ext/params.h): clarify `request_flush()` documentation. 264 * [thread-check.h](include/clap/ext/thread-check.h): clarify documentation. 265 * [voice-info.h](include/clap/ext/voice-info.h): promote `voice-info` out of draft. 266 267 # Changes in 1.0.3 268 269 * [plugin.h](include/clap/plugin.h): fix an inconsistency in `clap_plugin->destroy()` documentation: 270 it is now **required** to deactivate the plugin before destroying it. 271 * [params.h](include/clap/ext/params.h): improve documentation for `clap_host_params->request_flush()`. 272 * [entry.h](include/clap/entry.h): improve documentation regarding `init()`, `deinit()` and CLAP search path. 273 * [gui.h](include/clap/gui.h): fix typo `clap_gui_resize_hints.preserve_aspect_ratio` 274 * [plugin-template](src/plugin-template.c): missing impl of plugin destroy. 275 * various documentation improvements 276 277 # Changes in 1.0.2 278 279 * CMake: add `CLAP_BUILD_TESTS` which enables the tests. 280 * Fixes compilation for Visual Studio 2019 and GCC9. 281 282 # Changes in 1.0.1 283 284 * [gui.h](include/clap/ext/gui.h): fix doc: set_scale must be provided 285 * [events.h](include/clap/events.h): remove `clap_event_type` which was never used 286 * [draft/transport-control.h](include/clap/ext/draft/transport-control.h): rename from `CLAP_EXT_CV` to `CLAP_EXT_TRANSPORT_CONTROL` 287 * [draft/tuning.h](include/clap/ext/draft/tuning.h): rename `clap_client_tuning` to `clap_plugin_tuning` 288 * [macros.h](include/clap/private/macros.h): fix compatibility with C17 289 290 # Changes in 1.0.0 291 292 ## New stable interfaces 293 294 * [audio-ports-config.h](include/clap/ext/audio-ports-config.h) 295 * [audio-ports.h](include/clap/ext/audio-ports.h) 296 * [event-registry.h](include/clap/ext/event-registry.h) 297 * [gui.h](include/clap/ext/gui.h) 298 * [latency.h](include/clap/ext/latency.h) 299 * [log.h](include/clap/ext/log.h) 300 * [note-name.h](include/clap/ext/note-name.h) 301 * [note-ports.h](include/clap/ext/note-ports.h) 302 * [params.h](include/clap/ext/params.h) 303 * [posix-fd-support.h](include/clap/ext/posix-fd-support.h) 304 * [render.h](include/clap/ext/render.h) 305 * [state.h](include/clap/ext/state.h) 306 * [tail.h](include/clap/ext/tail.h) 307 * [thread-check.h](include/clap/ext/thread-check.h) 308 * [thread-pool.h](include/clap/ext/thread-pool.h) 309 * [timer-support.h](include/clap/ext/time-support.h) 310 311 ## New draft interfaces 312 313 * [ambisonic.h](include/clap/ext/draft/ambisonic.h) 314 * [check-for-update.h](include/clap/ext/draft/check-for-update.h) 315 * [cv.h](include/clap/ext/draft/cv.h) 316 * [file-reference.h](include/clap/ext/draft/file-reference.h) 317 * [midi-mappings.h](include/clap/ext/draft/midi-mappings.h) 318 * [preset-load.h](include/clap/ext/draft/preset-load.h) 319 * [quick-controls.h](include/clap/ext/draft/quick-controls.h) 320 * [surround.h](include/clap/ext/draft/surround.h) 321 * [track-info.h](include/clap/ext/draft/track-info.h) 322 * [transport-control.h](include/clap/ext/draft/transport-control.h) 323 * [tuning.h](include/clap/ext/draft/tuning.h) 324 * [voice-info.h](include/clap/ext/draft/voice-info.h)