You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CHANGELOG.md 30KB

5 months ago
5 months ago
7 months ago
5 years ago
5 years ago
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. # VCV Rack changelog
  2. In this document, Ctrl means Cmd on Mac.
  3. ### 2.5.2 (2024-05-09)
  4. - Add configurable cable color labels.
  5. - When duplicating module with cables, duplicate cables connected to outputs as well as inputs.
  6. - Allow building multi-arch x64+arm64 "Universal" Mac binary.
  7. - Optimize engine's cable stepping algorithm to be as CPU-efficient as non-stackable inputs.
  8. - Limit log file size to 10 MB.
  9. - API
  10. - Define `ARCH_*` macros in `arch.hpp` header (included in `rack.hpp`) instead of in compiler flags.
  11. ### 2.5.1 (2024-04-16)
  12. - Remember the last selected cable color from the port's "New cable" menu item. When "Auto-rotate cables" is enabled, the next color in the rotation is used.
  13. - Fix crash when modules such as VCV MIDI-Map bind parameters.
  14. - If loaded patch contains unavailable modules, don't close Rack after user chooses to open them in VCV Library. Instead, load patch without these modules so user can download them.
  15. - Add error dialog if moving Rack's user folder to new location fails.
  16. ### 2.5.0 (2024-04-08)
  17. - Allow stacking cables on input ports. Cable voltages are summed.
  18. - Ask to view unavailable modules on the VCV Library when loading a patch.
  19. - Add "View > Cable colors" menu to edit cable colors and disable auto-rotating colors.
  20. - Add parameter value functions `gaintodb()` (gain factor to decibels), `dbtogain()`, `vtof()` (1V/octave voltage to frequency), and `ftov()`.
  21. - Move Rack user folder to:
  22. - Mac: `~/Library/Application Support/Rack2`
  23. - Windows: `AppData/Local/Rack2`
  24. - Linux: `~/.local/share/Rack2`
  25. - Update Mac icon.
  26. - If Microphone permission is blocked on Mac, show warning dialog on startup.
  27. - Add `"verifyHttpsCerts"` setting to disable verifying HTTPS certificates.
  28. - Rack Pro
  29. - Fix MIDI note velocity scale in CLAP adapter.
  30. - API
  31. - Don't zero output port voltages when disconnecting cables.
  32. - Fix `ExpanderChangeEvent` not being dispatched when removing an adjacent module.
  33. ### 2.4.1 (2023-08-24)
  34. - Improve module browser search order.
  35. - Fix Library menu plugin update items not being re-enabled when downloading is completed.
  36. - Rack Pro
  37. - Fix discarded MIDI input messages for all plugin adapters.
  38. - API
  39. - Add `LightButton` to component library.
  40. - Use SSE4.1 intrinsics in `simd::trunc`, `floor`, `ceil`, `round`, and `fmod` to improve performance.
  41. ### 2.4.0 (2023-08-07)
  42. - Add "View > Use dark panels if available" menu item.
  43. - Show module ID in module's Info menu.
  44. - Fix order of input MIDI messages having the same frame timestamp. This fixes *VCV MIDI to CV* from sometimes duplicating clock pulses when transport starts.
  45. - Move plugins folder to `<Rack user folder>/plugins-<OS>-<CPU>`.
  46. - Core
  47. - Add dark panels.
  48. - Rack Pro
  49. - Add CLAP FX and Generator plugin adapters in addition to existing Instrument plugin.
  50. - Fix file dialogs from sometimes loading/saving the wrong Rack plugin instance when multiple instances are running.
  51. - Fix crash when using Mac VST3 and AU plugins simultaneously in a DAW.
  52. - Fix crash when removing one of multiple running plugin instances in Studio One.
  53. - Fix CLAP plugin discarding output MIDI messages.
  54. - API
  55. - Add `ThemedSvgPanel` and `ThemedSvgScrew` classes which automatically switch SVGs when dark panels are toggled.
  56. - Add `"minRackVersion"` property to plugin manifest, which prevents Rack from downloading plugin if version is not compatible.
  57. - Fix `ContextCreateEvent` and `ContextDestroyEvent` not defining `vg` NanoVG context.
  58. ### 2.3.0 (2023-03-08)
  59. - Add "View > Themes" menu with new UI themes: light and high-contrast dark.
  60. - Fix file permissions resulting in error when loading certain patches.
  61. - Don't select modules on click when module positions are locked.
  62. - Fix small memory leak when pasting modules or selections.
  63. - Fix incorrect panel scale when moving window between screens with different scale.
  64. - Rack Pro
  65. - Don't force MIDI output message channel to 1 in VST3 adapter. Offer all 16 channels.
  66. - Fix aftertouch and polyphonic pressure on all MIDI channels in VST3 and CLAP adapters.
  67. - API
  68. - Make `ParamQuantity::set/getValue()` set/get the Param's target value of the Engine's per-sample smoothing algorithm instead of the Param's immediate value. Add `ParamQuantity::set/getImmediateValue()`. Deprecate `ParamQuantity::set/getSmoothValue()`.
  69. - Add `dsp::polyDirect()`, `dsp::polyHorner()`, and `dsp::polyEstrin()`.
  70. - Rename `dsp::approxExp2_taylor5()` to `dsp::exp2_taylor5()` and improve polynomial coefficients.
  71. - Add `color::lerp()`.
  72. - Add `BooleanTrigger::processEvent()` and `SchmittTrigger::processEvent()`.
  73. - Add `get()` helper function for `std::vector`.
  74. ### 2.2.3 (2023-01-25)
  75. - Place module selection nearest to mouse position when pasted and nearest to the center of the rack viewport when imported.
  76. - Allow custom menu items to be appended to port's context menu.
  77. - Fix ignored MIDI input messages while using small audio block sizes.
  78. - Rack Pro
  79. - Fix hang when dialog box opens on Windows, such as after syncing library plugins.
  80. - Enable Loopback MIDI driver in all plugin adapters.
  81. - Fix MIDI CC output of VST3 adapter.
  82. - Fix Windows installer not overwriting existing VST3 plugin bundle on Windows.
  83. - Store and recall window size of VST3.
  84. - Fix MIDI clock input in CLAP adapter.
  85. - Make CLAP adapter a Note Effect and Audio Effect as well as an Instrument.
  86. - API
  87. - Make unarchiver handle zero-byte files as a special case by deleting destination files instead of overwriting them. This allows plugin packages to remove old presets by including a zero-byte file with its filename.
  88. - Add `ModuleWidget::getModule<TModule>()` convenience method.
  89. ### 2.2.2 (2022-12-27)
  90. - Display Rack edition, version, OS, CPU, and plugin type in menu bar to help with troubleshooting.
  91. - Add long-form command line options.
  92. - Zero audio output of all channels in `audio::Device::processBuffer()` before writing, to avoid sending uninitialized values to audio device.
  93. - Rack Pro
  94. - Fix blank plugin window on certain Linux Nvidia graphics drivers.
  95. - API
  96. - Don't include SIMDE headers on x64, fixing symbol conflicts when plugins include x64 intrinsic headers.
  97. - Don't export symbols from libarchive, zstd, rtaudio, and rtmidi to avoid conflicts with hosts that use these libraries. Rack plugins can no longer link to these libraries.
  98. - Rename plugin binary to `plugin-arm64.dylib` on Mac ARM64 so multiple plugin architectures can coexist in the same Rack user folder.
  99. ### 2.2.1 (2022-12-07)
  100. - Add `CROSS_COMPILE` environment variable to specify target triplet for building plugins for non-native architectures.
  101. - Accept `aarch64` in target triplet as alias for ARM64.
  102. - Rack Pro
  103. - Re-enable rtaudio and rtmidi in plugin adapters, so hardware audio/MIDI devices can be used directly by Rack.
  104. - Fix VST3 not receiving MIDI CC input from DAWs.
  105. - Fix VST3 not sending MIDI output to some DAWs.
  106. - Fix VST3 in Bitwig resetting parameters when adding/removing modules.
  107. - Fix VST3 adapter not loading on Bitwig Linux and possibly other hosts, by providing VST3 as a folder bundle instead of a single file.
  108. - Fix CLAP adapter not loading on Windows, by statically linking libgcc.
  109. ### 2.2.0 (2022-11-23)
  110. - Add MIDI Loopback driver, allowing modules with MIDI ports to send MIDI messages to other modules.
  111. - Improve fuzzy search in module browser.
  112. - Allow building on ARM64 CPUs.
  113. - Rename plugin packages to `SLUG-VERSION-OS-CPU.vcvplugin`.
  114. - Rack Pro
  115. - Add VST3, Audio Unit, and CLAP plugin adapters.
  116. - Add framerate setting to plugins.
  117. - API
  118. - Add `system::sleep()`.
  119. - Make `random::get()`, `uniform()`, etc use global random state instead of thread-local.
  120. ### 2.1.2 (2022-07-04)
  121. - Add old module moving behavior (nearest and force-moving), available by disabling "View > Auto-squeeze algorithm".
  122. - Reorganized View menu.
  123. - Add version comparator so Rack only updates plugins or itself if the remote version is "greater" than the local version, as defined by the `string::Version` documentation.
  124. - Add file association to Mac, so double-clicking a `.vcv` patch file in Finder opens Rack and loads the patch.
  125. - Fix expanders not updating (connecting or disconnecting to adjacent modules) when cloning or removing modules.
  126. - Fix VCV Audio 2 VU meter light thresholds not matching label.
  127. ### 2.1.1 (2022-05-21)
  128. - Allow changing cable colors with port menu.
  129. - Fix placement bugs and improve behavior when moving or duplicating modules.
  130. - Fix probabilistic crash when undoing a module paste action.
  131. - Rack Pro
  132. - Fix VST2 window size not being remembered on Mac.
  133. - API
  134. - Make `SvgButton` dispatch `ActionEvent` only on left mouse down, instead of left/right mouse down and drag drop.
  135. ### 2.1.0 (2022-02-26)
  136. - Change behavior of force-moving modules so that other modules return to original position while dragging.
  137. - Update to RtMidi 5.0.0.
  138. - Update to RtAudio 5.2.0.
  139. - Update GLFW.
  140. - Fix plug graphic sometimes being incorrectly rotated.
  141. - Core
  142. - Add "Pitch bend range" setting to MIDI to CV module.
  143. - Fix MIDI to CV incorrectly setting pitch wheel and mod wheel outputs in MPE mode.
  144. - Rack Pro
  145. - Fix crash if generating hundreds of MIDI output messages per process block in VST2.
  146. ### 2.0.6 (2022-01-15)
  147. - Add "Save a copy" to File menu.
  148. - Remember CPU meter state across launches.
  149. - Use audio device's suggested sample rate as initial sample rate.
  150. - Add more logging of initialization/destruction of subsystems and module instantiation.
  151. - Make MIDI input queue thread-safe, fixing probabilistic crash when processing MIDI input.
  152. - Rack Pro
  153. - Generate MIDI Start message in DAWs like Cubase that pre-roll transport.
  154. - Generate MIDI Song Position Pointer messages when DAW is playing.
  155. - Fix VST2 input/output channel labels being truncated in Ableton Live.
  156. - Improve VST2 audio performance by avoiding unnecessary copying of buffers.
  157. ### 2.0.5 (2022-01-01)
  158. - Swap order of parameter name and module name in MIDI-Map.
  159. - Parse all note names from c0 to b9 and accidentals like c# and eb in parameter entry field.
  160. - Tweak framebuffer render-skipping algorithm to always render at least 1 framebuffer after the frame deadline, to prevent framebuffers from never being rendered.
  161. - Set audio device default sample rate to 44100, and block size to 256 except DirectSound to 1024.
  162. - Fix file dialog truncating Unicode filenames on Mac.
  163. ### 2.0.4 (2021-12-18)
  164. - Fix hang when initializing Audio module.
  165. - Fix hidden window after closing while minimized and reopening.
  166. - Move Import Selection menu item to File menu bar.
  167. - Switch from GTK3 to `zenity` for opening dialogs on Linux.
  168. - Implement prompt dialog on Windows.
  169. - Make Windows installer add Rack to list of CFA allowed apps, allowing Rack to write to "My Documents" folder if Controlled Folder Access is enabled.
  170. - Rack Pro
  171. - Improve stability of DAW MIDI clock.
  172. - Fix graphics glitch when duplicating module with Ctrl+D in Ableton Live.
  173. - Re-enable patch load error dialog.
  174. - SDK
  175. - Compile with `-fno-omit-frame-pointer`.
  176. ### 2.0.3b (2021-12-09)
  177. - Rack Pro
  178. - Use separate template patch when running as a plugin.
  179. ### 2.0.3 (2021-12-09)
  180. - Fix MIDI-Map not accepting MIDI CC.
  181. - Fix order of Audio-16 outputs 13/14 and 15/16.
  182. - Clear patch before removing autosave dir when loading patch. This fixes inability to load patches on Windows when modules hold file handles to patch storage.
  183. - Fix crash when patch attempts to add a cable that connects to a valid Port but an inexistent PortWidget (e.g. if a module defines a Port but omits the PortWidget).
  184. - Upgrade from ustar to pax tar patch format. Don't store actual uid/gid, just set to 0.
  185. - Rack Pro
  186. - Add external audio/MIDI drivers in plugin, except ASIO on Windows.
  187. - Show machine ID in splash window for offline activation.
  188. - Prevent "Reserved" plugin parameter from being changed when moving module parameters.
  189. ### 2.0.2 (2021-12-06)
  190. - Turn off lights if module is bypassed.
  191. - Fix Font and Image not loading UTF-8 filenames on Windows.
  192. - Fix plugins not loading if their fallback alias exists.
  193. - Fix crash when sometimes unsetting audio interface on Mac.
  194. - Rack Pro
  195. - Save/restore plugin window size in patch.
  196. - Fix crash on scan in Renoise.
  197. ### 2.0.1 (2021-12-02)
  198. - Fix network connection timeout.
  199. - Flush log file when logging to avoid truncated logs.
  200. ### 2.0.0 (2021-11-30)
  201. - Redesign Module Browser with compact layout, adjustable zoom levels, sorting options, intelligent searching, and multiple tag selection.
  202. - Redesign component graphics and Core panels by [Pyer](https://www.pyer.be/).
  203. - Add port tooltips with name, voltage, and list of connected ports.
  204. - Add port context menu with ability to create cables with a particular color, drag any cable from the stack, or delete the top cable.
  205. - Evaluate mathematical expressions (such as `1+2*3`) in parameter context menu fields.
  206. - Add multiple module selection by highlighting a rectangle or Shift-clicking on a module panel.
  207. - Add importing/exporting module selections to new `.vcvs` file format.
  208. - Add module whitelist to Module Browser which synchronizes individual modules chosen in the VCV Library.
  209. - Add favorite modules filter to Module Browser.
  210. - Restructure engine to no longer use an "engine thread".
  211. - Improve engine performance and latency by no longer requiring thread synchronization between the engine thread and audio thread. The engine now runs directly on the audio thread.
  212. - Add support for multiple simultaneous audio devices.
  213. - Add "Master module" context menu item to VCV Audio modules to select which audio device clocks the engine.
  214. - Allow other modules to be the primary module, such as VCV Recorder for rendering audio faster than real-time.
  215. - Remove "Real-time priority" menu item, since the thread priority is now managed elsewhere (RtAudio, etc).
  216. - Remove engine pausing as it no longer makes sense with the new engine architecture.
  217. - Replace module disabling with bypassing, which directly routes certain inputs to outputs if specified by the plugin.
  218. - Duplicate cables patched to inputs when a module is duplicated.
  219. - Add module tags to module context menu.
  220. - Add module manual URL (if plugin developer supplies it) to module context menu item.
  221. - Add quick access to user module patches from `<Rack user dir>/presets/<plugin slug>/<module slug>` to module context menu. Supports subdirectories.
  222. - Add infinity and NaN protection to cables, so they won't propagate non-finite values from badly behaving modules.
  223. - Add basic headless support with the `-h` flag.
  224. - Add multiple parameter dragging modes: scaled linear, absolute rotary, and relative rotary.
  225. - Add "knobLinearSensitivity" property to settings.
  226. - Add timestamps to MIDI messages.
  227. - Allow sending and receiving SysEx messages through MIDI drivers.
  228. - Allow scrolling with Alt+click and drag.
  229. - Add "File > Open recent" menu item for opening recent patches.
  230. - Add "Preset > Save template" to module context menu which saves the default module preset to load when a new instance is added to the rack.
  231. - Break Rack executable into libRack shared library and lightweight standalone Rack executable.
  232. - Add support for 1/2x and 1/4x low-fidelity sample rates to engine and "Engine > Sample rates" menu.
  233. - Add Escape key command for existing fullscreen, in case F11 doesn't work.
  234. - Copy cable color when cloning cables with Ctrl+click.
  235. - Fix key commands on AZERTY, Dvorak, and all other keyboard layouts.
  236. - Add Mouse device to Computer keyboard/mouse MIDI driver.
  237. - Make scrollbar mouse interaction similar to modern OS behavior.
  238. - Re-render framebuffers when subpixel offset changes, fixing bug that makes ports and knobs appear slightly offset at certain zoom levels.
  239. - Use new `.vcv` patch format, an archive (POSIX tar compressed with Zstandard) of a `patch.json` file, module patch assets, and potentially other future files.
  240. - Use randomly-generated 53-bit IDs to identify modules and cables in the patch.
  241. - Use a fuzzy search algorithm for searching modules in the Module Browser.
  242. - Add tips window which appears when Rack launches or when choosing "Help > Tips".
  243. - Check for Library updates every few seconds to avoid needing to restart Rack to check for updates.
  244. - When clicking on a module in the Module Browser and immediately releasing, place the module in the last cursor position in the rack, rather than the current cursor position.
  245. - When clicking and dragging a module from the Module Browser, fix the mouse handle offset to the center of the module.
  246. - Allow darkening rack brightness.
  247. - Draw spotlight near cursor when rack brightness is lowered.
  248. - Improve light rendering with a more physical blending algorithm.
  249. - Add engine CPU meter and framerate meter to menu bar.
  250. - Allow zooming rack with extra mouse buttons 4 and 5.
  251. - Add `"pixelRatio"` to settings for forcing the UI pixel scale.
  252. - If Ctrl+clicking on any menu item, the menu stays open (except for some menu items like "Delete Module").
  253. - Add Ctrl+F1 key command when cursor is hovering a module to open its user manual.
  254. - Redesign CPU meter with percentage history graph.
  255. - Add PulseAudio driver on Linux.
  256. - Distribute .pkg installer on Mac.
  257. - Check for VCV Library updates when Library menu is opened, rather than at time intervals.
  258. - Core
  259. - Add Audio-2 module with stereo input/output, a level knob, and VU meters.
  260. - Add DC blocker setting to Audio modules. On Audio-2, enable it by default.
  261. - Add MPE mode to MIDI-CC and MIDI-Gate.
  262. - Add mode to MIDI-CC to process 14-bit MIDI CC via MSB/LSB.
  263. - Use MIDI timestamps in MIDI-CV, MIDI-CC, MIDI-Gate, and MIDI-Map to improve overall timing and drastically reduce clock jitter.
  264. - Add red clip lights to VCV Audio-8/16 when signal reaches beyond ±10V.
  265. - Reset notes in MIDI-CV and MIDI-Gate if an "all notes off" MIDI message is received.
  266. - Allow disabling smoothing for MIDI-CV (pitch and mod wheel), MIDI-CC, and MIDI-Map.
  267. - Add several module presets for many Core modules.
  268. - API
  269. - Add setters/getters for nearly every instance variable in Rack's API. Use these for higher likelihood of stability.
  270. - Compile Rack and plugins with `-march=nehalem`, enabling (and requiring) up to SSE4.2 and POPCNT instruction sets.
  271. - Add `Module::configInput()` and `Module::configOutput()` for adding names to ports.
  272. - Replace `ParamWidget::paramQuantity` with `ParamWidget::getParamQuantity()`.
  273. - Add `.modules[].manualUrl` to plugin manifest schema.
  274. - Add `appendAudioMenu()` and `appendMidiMenu()` so plugin developers can develop custom audio/MIDI interfaces without adding an `AudioWidget/MidiWidget` to their panel.
  275. - Make `Module::toJson()` and `fromJson()` virtual.
  276. - Add `Module::paramsToJson()` and `paramsFromJson()` virtual methods.
  277. - Add `SwitchQuantity` and a helper method `Module::configSwitch()` for displaying named values in the parameter context menu. Also add `Module::configButton()` recommended for momentary switches with no value labels.
  278. - Overhaul Engine threading model to allow as many Engine methods to be called simultaneously as possible, while ensuring that Module events are mutually exclusive to module processing.
  279. - Add `Engine::getNumModules()` and `Engine::getModuleIds()`.
  280. - Add `event::KeyBase::keyName`. Plugins should use this instead of `key` for alphanumeric keys in order to support all keyboard layouts.
  281. - Improve thread safety of `dsp::RingBuffer`.
  282. - Add several convenient filesystem routines to `system::`.
  283. - Add `system::getTime()` and `getUnixTime()`.
  284. - Add `system::readFile()` and `writeFile()`.
  285. - Move all `string::` functions dealing with filesystem paths to `system::`.
  286. - Change type of `Module::id` and `Cable::id` from `int` to `int64_t`.
  287. - Move event classes to inside `widget::Widget` class.
  288. - Deprecate `Window::loadSvg()`. Un-deprecate `Svg::load()`.
  289. - `Font` and `Image` can no longer be stored across UI frames. Load them with `APP->window->loadFont()` and `loadImage()` each `draw()` method.
  290. - Add `Widget::hasChild()`, `addChildBottom()`, `addChildBelow()`, `addChildAbove()`, and `drawChild()`.
  291. - Add `Module::createPatchStorageDirectory()` and `getPatchStorageDirectory()`.
  292. - Add `createMenuLabel()`, `createMenuItem()`, `createCheckMenuItem()`, `createBoolMenuItem()`, `createBoolPtrMenuItem()`, `createSubmenuItem()`, `createIndexSubmenuItem()`, and `createIndexPtrSubmenuItem()` to helpers.
  293. - Add `Module::onReset()` and `onRandomize()`. Overrides default param resetting and randomization behavior if overridden, unless super methods are called.
  294. - Add `Module::SaveEvent`.
  295. - Add operator overloads for `Vec`.
  296. - Add `string::join()`, `split()`, `formatTime()`, and `formatTimeISO()`.
  297. - Add `random::Xoroshiro128Plus` which can be used like C++ `<random>` classes.
  298. - Add `Port::getVoltageRMS()`.
  299. - Add `Widget::drawLayer()` for handling multiple draw passes.
  300. - Add on/off threshold values to `dsp::SchmittTrigger`.
  301. - Add `dsp::convert()` template functions for converting audio between normalized floats and integers.
  302. - Add `bool app::SvgSwitch::latch` setting for latching button switches.
  303. - Dispatch `Module::SampleRateChange` event when `Module` is added to engine.
  304. ### 1.1.6 (2019-11-04)
  305. - Add ability for plugins to use LuaJIT on Mac.
  306. - Fix normal random number generator possibly returning -infinity.
  307. - Core
  308. - MIDI-Map: Don't move param until the first MIDI CC command is sent.
  309. - API
  310. - Remove support for namespaced `rack::APP`, `rack::DEBUG`, etc macros. Use namespace-less `APP`, `DEBUG`, etc instead.
  311. - Add `dsp::IIRFilter`.
  312. ### 1.1.5 (2019-09-29)
  313. - Swap order of tags and brands in Module Browser.
  314. - Add View > Frame rate menu bar item.
  315. - Hide menu and scrollbars when fullscreen.
  316. - Add key command (F3) for engine CPU meter.
  317. - Add numpad key commands.
  318. - Automatically unzip update on Mac.
  319. - Stop worker threads when engine is paused to save CPU.
  320. - Core
  321. - Disable smoothing for MIDI CC buttons in MIDI-Map.
  322. - Fix sustain pedal release bug when using polyphonic mode in MIDI-CV.
  323. - API
  324. - Add libsamplerate library.
  325. ### 1.1.4 (2019-08-22)
  326. - Fix parameter smoothing of MIDI-Map.
  327. - Sort modules within plugin in the Module Browser according to plugin rather than alphabetically.
  328. - Fix bug where knobs sometimes jump while dragging.
  329. - Reimplement CPU meter to measure thread runtime, not real time.
  330. - Fix crashes when deleting/duplicating modules while dragging modules/cables in certain cases.
  331. - API
  332. - Add `dsp::BiquadFilter`.
  333. - Add `dsp/approx.hpp` with approximate math functions.
  334. - Add `simd::tan()`, `atan()`, and `atan2()`.
  335. - Add `string::toBase64()` and `fromBase64()`.
  336. ### 1.1.3 (2019-07-23)
  337. - Include root certificate bundle for libcurl on all OS's.
  338. - Revert to OpenSSL from Schannel on Windows.
  339. - Bundle unsigned Fundamental package on Mac.
  340. ### 1.1.2 (2019-07-20)
  341. - Add app notarization on Mac, which removes the "Apple cannot check for malicious software" message on launch.
  342. - Write stack trace to log.txt and display dialog box when Rack crashes.
  343. - Re-enable JACK MIDI driver on Linux.
  344. - Fix scroll speed for mice and trackpads on Mac.
  345. - Fix undo history bug when dragging patch file to the Rack window.
  346. - Fix crash when pasting presets to an empty rack space with Ctrl+V.
  347. - Fix module expanders being assigned incorrectly when loading presets.
  348. - Add check for duplicate port IDs for modules.
  349. ### 1.1.1 (2019-07-01)
  350. - Add auto-updating on Windows when Help > Update VCV Rack is clicked.
  351. - Fix extension filters in open/save dialog box on Windows.
  352. - Fix expanders not attaching when force-dragging modules.
  353. ### 1.1.0 (2019-06-27)
  354. - Request microphone access on Mac to prevent Mac 10.14+ from blocking audio input.
  355. - Clear filters in Module Browser when backspace is pressed while the search field is empty.
  356. - Add Ctrl+0 key command to set zoom to 100%.
  357. - Emulate middle-click with Ctrl+shift-click on Mac.
  358. - Fix MIDI receiving in Bridge MIDI driver.
  359. - Fix opening/saving UTF-8 filenames on Windows.
  360. - Fix bug where cable ID's were not being set in .vcv patches.
  361. - Plugin API
  362. - Add `string::absolutePath()`.
  363. - Use namespace for Core plugin to avoid name clashes.
  364. ### 1.0.0 (2019-06-19)
  365. - Add polyphonic cables.
  366. - Add multithreading to engine.
  367. - Add undo/redo history.
  368. - Add module expander support.
  369. - Add parameter labels, units, and descriptions.
  370. - Add parameter tooltips for quickly viewing parameter values.
  371. - Add parameter context menu for entering numerical values, unmapping, etc.
  372. - Change parameter initialization to double-click.
  373. - Add ability to Ctrl+click on an input port to clone the existing cable.
  374. - Add module "force" dragging when holding Ctrl.
  375. - Add ability to disable modules with a context menu item and key command Ctrl+E.
  376. - Add sample rates up to 768,000 Hz (16 x 48,000 Hz).
  377. - Overhaul Module Browser with visual previews of modules.
  378. - Add plugin info sub-menu to module context menu with links to manual, website, source code, etc.
  379. - Add factory presets to module context menu if plugin supplies a folder of presets.
  380. - Add default template patch.
  381. - Add menu item to save the current patch as the template.
  382. - Add "frameRateLimit" and "frameRateSync" for setting maximum screen refresh rate and to toggle vertical sync.
  383. - Add "autosavePeriod" for setting the frequency of autosaves in seconds.
  384. - Add textual menu bar, rearranged menu items, removed icons.
  385. - Make CPU timer display microseconds and percentage instead of millisamples.
  386. - Add engine real-time priority setting.
  387. - Make rack infinite in all four directions.
  388. - Add bus board graphic to rack.
  389. - Add key command Ctrl+`-` and Ctrl+`=`, or Ctrl+scroll, for zooming the rack.
  390. - Fix draw order of cable plugs and wires.
  391. - Make Gamepad MIDI driver generate MIDI CC instead of MIDI notes for buttons.
  392. - Add Numpad keyboard MIDI device.
  393. - Fix Unicode user directories on Windows.
  394. - Add ability to change cable colors in `settings.json`.
  395. - Add `-p X` flag for dumping a screenshot of each available module.
  396. - Allow user to see changelogs of plugins before updating their plugin library.
  397. - Allow user to update individual plugins.
  398. - Core
  399. - Add Audio-16 with 16/16 inputs/outputs.
  400. - Add CV-MIDI, CV-CC, and CV-Gate for sending MIDI to external devices.
  401. - Add MIDI-Map for mapping MIDI CC parameters directly to Rack parameters.
  402. - Add polyphony to MIDI-CV.
  403. - Add MPE mode to MIDI-CV.
  404. - Add "Panic" button to all MIDI modules to reset performance state.
  405. - Plugin API
  406. - Add [`helper.py`](helper.py) for creating and manipulating plugins with the command-line.
  407. - Add [`simd.hpp`](include/dsp/simd.hpp) for generically handling arithmetic and math functions for vectors of floats, accelerated with SSE.
  408. - Add `dsp::VuMeter2`.
  409. - Add `dsp::Timer` and `dsp::Counter`.
  410. - Overhaul event system with many new events.
  411. - etc. See more at https://vcvrack.com/manual/Migrate1.html.
  412. - Licenses
  413. - Relicense Rack to GPLv3 with the VCV Rack Non-Commercial Plugin License Exception and a commercial licensing option.
  414. - Collect all license statements into new [LICENSE.md](LICENSE.md) file.
  415. - License Core panel graphics under CC BY-NC-ND 4.0.
  416. ### 0.6.2 (2018-07-13)
  417. - Add module presets.
  418. - Add [command line arguments](https://vcvrack.com/manual/Installing.html#command-line-usage) for setting Rack directories.
  419. - Improve UI/engine communication stability.
  420. - [VCV Bridge](https://vcvrack.com/manual/Bridge.html) 0.6.2
  421. - Add VST FX plugin.
  422. ### 0.6.1 (2018-06-17)
  423. - Add gamepad MIDI driver.
  424. - Add computer keyboard MIDI driver.
  425. - Add JACK support on Linux.
  426. - Add velocity mode to MIDI-Trig.
  427. - Add MIDI multiplexing so multiple MIDI modules can use the same MIDI device on Windows.
  428. - Make Module Browser layout more compact.
  429. - Add power meter.
  430. - Add icons to toolbar.
  431. - [VCV Bridge](https://vcvrack.com/manual/Bridge.html) 0.6.1
  432. - Replace VST effect plugin with VST instrument plugin with audio inputs.
  433. - Add MIDI support.
  434. - Add DAW transport and clock.
  435. ### 0.6.0 (2018-03-29)
  436. - Release [*VCV Bridge*](https://vcvrack.com/manual/Bridge.html) for interfacing Rack with your DAW.
  437. - VST/AU effect plugins (Mac and 32/64-bit Windows) for using Rack as a send/return on a DAW track.
  438. - Enables future VSTi/AU instrument plugins with MIDI and DAW clock transport to be added in a later Rack 0.6.* update.
  439. - Updated [*Plugin Manager*](https://vcvrack.com/plugins.html) to handle open-source plugins.
  440. - Potentially all plugins can be added with help from the [VCV Community](https://github.com/VCVRack/community/issues/248).
  441. - New *Module Browser* for adding modules to the rack.
  442. - Launch by right-clicking on the rack or pressing <enter>.
  443. - Add "favorite" modules by clicking on the star button.
  444. - Navigate modules with arrow keys or mouse.
  445. - Redesign [Core](https://vcvrack.com/manual/Core.html) modules.
  446. - Access to audio channels beyond the first 8 inputs/outputs.
  447. - Improve AUDIO stability.
  448. - Add retrigger output to MIDI-1.
  449. - Merged MIDI clock module with MIDI-1.
  450. - Fix MIDI-4 sustain pedal in polyphonic modes.
  451. - Improve sample rate conversion performance, is disabled entirely when not needed.
  452. - Patch cable colors are saved to patch files.
  453. - Add highlighting for active patch cables when hovering mouse over port.
  454. - Add shadows to knobs and ports.
  455. - Add File > "Disconnect cables".
  456. - Release [Rack SDK](https://github.com/VCVRack/Rack/issues/258#issuecomment-376293898) for compiling plugins without compiling Rack.
  457. ### 0.5.1 (2017-12-19)
  458. - Add Plugin Manager support.
  459. - Fix metadata panel in the Add Module window.
  460. ### 0.5.0 (2017-11-21)
  461. - Add zoom scaling from 25% to 200%.
  462. - Automatically scroll when dragging cables to the edge of the screen.
  463. - Add Quad MIDI-to-CV Interface, CC-to-CV, Clock-to-CV, and Trigger-to-CV MIDI interfaces.
  464. - Improve support for ASIO, WASAPI, DirectSound, Core Audio, and ALSA audio drivers.
  465. - New module browser with search and tags.
  466. - Enhanced LED emulation in graphics engine.
  467. - File > New attempts to load "template.vcv" in the "Documents/Rack" folder if it exists.
  468. ### 0.4.0 (2017-10-13)
  469. - Cables can now stack on output ports.
  470. - Add sub-menus for each plugin, includes optional plugin metadata like URLs.
  471. - Add MIDI CC-to-CV Interface, updated MIDI-to-CV Interface.
  472. - Add new scrolling methods: middle-click-and-drag, shift-scroll, and arrow keys.
  473. - Add engine pausing in sample rate menu.
  474. - Add resizable blank to Core.
  475. - Add LEDs on plugs.
  476. - Support for AMD Phenom II processors.
  477. - Use self-contained Mac app bundle, no need for a Rack folder.
  478. ### 0.3.2 (2017-09-25)
  479. - Add key commands.
  480. - Fix "invisible knobs/ports" rendering bug for ~2010 Macs.
  481. - Add "allowCursorLock" to settings.json (set to "false" for touch screen support).
  482. - Fix 100% CPU issue when no audio device is selected.
  483. - Add vector scaling panels.
  484. ### 0.3.1 (2017-09-13)
  485. - Fix Windows open dialog current working directory graphics problem.
  486. - Ctrl+C/Ctrl+V to copy/paste from text and password fields.
  487. - Automatically remember settings and login token between launches.
  488. - Remove .zip after downloading and extracting plugin.
  489. - Ctrl+click to right click on Mac.
  490. - Fix menu "flicker" when menu cannot fit in window.
  491. - tweaks to Fundamental and Audible Instruments plugins.
  492. ### 0.3.0 (2017-09-10)
  493. - Knobcon public Beta release.