clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

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)