a highly automated and intuitive digital audio workstation
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.

2767 lines
118 KiB

SPDX-FileCopyrightText: © 2019-2022 Alexandros Theodotou
SPDX-License-Identifier: FSFAP
4 years ago
# Changelog
All notable changes to this project will be documented in this file.
## [1.0.0-beta.1.5.1] - 2022-04-14
### Added
- Add status page to modulators tab
- Add bundled plugins: compressor, delay, gate, distortion, reverb
### Changed
- Add some vertical padding to automation editor
- Port some split buttons to AdwSplitButton
- Simplify check for unsaved changes (only look at last performed action)
- Update French, Chinese (Simplified), Portuguese, Catalan translations
- User manual: update some sections
- User manual: change PDF author to 'The Zrythm contributors'
- Hardcode standard LV2 paths for all OSes
- Update screenshot URL in metainfo
### Fixed
- Fix preference rows not being centered
- Fix arranger objects not being draggable from their bottom/left side
- Various CSS/style fixes
- Fix issues with fonts in some custom widgets
## [1.0.0-beta.1.4.1] - 2022-04-10
### Changed
- Become a full libadwaita app
- Simplify theme CSS
### Fixed
- Fix defaulting to JACK on Windows/Mac
- Fix compilation failure on some distros
- Fix crash when passing --reset-to-factory
- Fix fonts disappearing on Windows after opening preferences
### Removed
- Remove matcha theme
## [1.0.0-beta.1.3.1] - 2022-04-07
### Added
- Include system info in automatic bug reports
- Add clang-format target
- Implement base/full MIDI export
- Preferences: add option to reset to factory settings
- Add ECMAScript support for scripting
- Add language selection in scripting dialog
### Changed
- Switch to REUSE v3.0 and SPDX license identifiers
- Reformat whole source code using clang-format
- User manual: update initial configuration, scripting sections
- Simplify initial configuration: only select language and path
- Update German, French, Japanese, Chinese (Simplified), Turkish translations
- Redesign bug report dialog
- Preferences: use subtitles instead of tooltips
- Welcome dialog: point to trademark policy
- Welcome dialog: mention that only flatpak-packaged plugins are supported in flatpak builds
### Fixed
- Fix formatting in appdata XML
- User manual: fix broken references
- Fix MIDI region content selection in MIDI export dialog
- Fix some memory leaks reported by gcc sanitizer
- Fix error when right-clicking inside audio editor
### Removed
- Remove unused bootstrap js files
## [1.0.0-beta.1.2.3] - 2022-03-29
### Fixed
- Fix PDF manual build
## [1.0.0-beta.1.2.1] - 2022-03-29
### Added
- Use one instance for each channel for mono plugins
- Include release changelog info in appstream data
### Changed
- Scroll to mid note when first showing the piano roll
- Update Hungarian translations
- INSTALL: clarify build instructions
- Enable locale detection for all languages
- TRADEMARKS: simplify some wording and reserve right to review and object to use deemed outside the policy
- Make sure UI event queue is cleared before freeing (fixes occasional errors)
- User manual: update Routing, Chords and Scales, Modulators, Scripting, Theming, User Media, Contributing and Credits chapters
- User manual: update some URLs (fix permanent redirects)
### Fixed
- Fix automation lanes not being shown immediately when made visible
- Fix MIDI files not being activatable in the file browser
- Fix audio engine not being resumed after running Guile scripts
- Fix engine preprocessing sometimes running while the graph is being updated
- Fix various invalid accesses reported by GCC address sanitizer
- Fix various memory leaks reported by GCC leak sanitizer
- Fix various custom widget children not being unparented during dispose
- Fix segfault when attempting to add a plugin to a collection
- Fix scale objects throwing errors in the event viewer
- Fix plugin sidechain options not being available in channel sends
### Removed
- Remove clang-tidy targets from meson configuration (speeds up reconfiguration)
- User manual: remove copyright and license info from translatables
- Remove drop motion handler from timeline (should fix errors on drag and hover)
## [1.0.0-beta.1.1.11] - 2022-03-23
### Changed
- User manual: update Editing, Mixing, Playback & Recording chapters
- Show warning when attempting to load unsupported projects
- Ignore CRITICAL message when opening native file chooser in Flatpak builds
- Make editor toolbar scrollable
### Fixed
- Fix opening projects from latest backup missing plugin states
## [1.0.0-beta.1.1.1] - 2022-03-19
### Added
- Add Hungarian locale
### Changed
- User manual: update Getting Started, Interface, Configuration, Projects, Plugins & Files, Tracks chapter
- Update GTK-related subproject versions
- Disable scroll-to-focus on arrangers
- Cleanup plugin state dirs on save
### Fixed
- Fix applying audio function not updating clip frames
- Fix MIDI export adding silence between regions
- Fix non-fatal error when importing empty MIDI files
### Removed
- Remove message that says Zrythm is in alpha
## [1.0.0-beta.1.0.1] - 2022-03-16
### Added
- Add MIDI format selector in the export dialog
- Add option to export track lanes as separate MIDI tracks in the export dialog
- Cancel current arranger action on Escape press
### Changed
- Update copyright years in about dialog
- Resize MIDI and velocity arrangers proportionally when resizing the editor
- Queue some startup messages to be shown after main window loads
- Improve context menu styling
- Clear undo history when deleting channel slots or tracks with uninstantiated plugins
- Use custom-built test instrument instead of Geonkick in some tests
- Update default screenshot in appdata
### Fixed
- Fix plugin state dirs in backups being empty
- Fix audio FX track stems being silent
- Fix being unable to open main window on MacOS
### Removed
- Remove warranty disclaimer from welcome dialog (already mentioned in about dialog)
## [1.0.0-alpha.30.3.1] - 2022-03-13
### Added
- Force an app icon in the header bar
- Auto-reconnect to any hardware devices that get disconnected
- Add some missing internal port symbols for channels/tracks
### Changed
- Move zoom buttons to timeline and editor toolbars
- Move about button to Help toolbar
- Make Edit icon lighter
- MIDI CC recording must now be enabled manually via automation lanes (improves DSP performance of MIDI and instrument tracks)
- Optimize plugin DSP processing
- Consider region as looped if loop end point is beyond region end
- Re-enable PipeWire support for Flatpak (add related message in welcome dialog)
- Make accelerators in popover menus orange
- Group various button groups together in toolbars
### Fixed
- Fix plugin passthrough ignoring MIDI events
- Fix incorrect track routing when using MIDI FX plugins
- Fix error when splitting unlooped automation regions
- Fix hardware inputs not being routed properly to tracks
- Fix "all audio inputs" in track inputs not behaving as intended
- Fix incorrect logic when checking whether a note is in a scale
## [1.0.0-alpha.30.2.1] - 2022-03-10
### Added
- Show project title/path in header bar
- Implement record on MIDI input
- Show toast message when loading/saving presets
- Add standard preset names for presets without names
### Changed
- Switch to GtkHeaderBar as client side decoration
- Make port selector a dialog instead of popover
- Clear monitor output when returning early from engine processing
- Lock port operation semaphore before changing transport states
### Fixed
- Fix crash when attempting to connect modulator outputs
- Fix right clicking after creating an object creating another object
- Fix plugin preset list not being cleared when inspecting a new plugin
- Fix errors when saving carla plugin presets
- Fix project assistant crash when no recent projects exist
### Removed
- Remove project version compatibility warning
## [1.0.0-alpha.30.1.1] - 2022-03-08
### Added
- Add option to create pre-routed setup for multi-out instruments
- Add new project loading dialog
- Allow opening a project from a path in the project loading dialog
- Allow renaming markers with F2
- Show version in splash screen
- Add Shift-Space shortcut to start transport in record mode
- Add default velocity selector with option to use last edited velocity
### Changed
- Consider region as looped if clip start position is not 0
- Expand track name in track properties
- Apply auto-scrolling when playhead is moved manually
- Update welcome dialog
- Update main screenshot in appdata
### Fixed
- Fix crash when resizing audio regions with custom clip start points
- Fix error when loading projects in different sample rates
- Fix track regions being moved incorrectly when moving tracks
- Fix port connection row displaying current port instead of connected port
- Fix various memory leaks
- Fix buffer overflow when operating on large numbers of objects
### Removed
- Remove reduntant checks during audio region processing
## [1.0.0-alpha.30.0.1] - 2022-03-05
### Added
- Implement track lane mute/solo
- Include whether X11 or Wayland in automatic bug reports
- Allow recording in chord track
- Allow playing chords with a MIDI keyboard
- Allow exporting multiple MIDI regions to MIDI file
- Allow exporting MIDI lanes as separate tracks in MIDI files
### Changed
- Move some MIDI track/lane context menu items under submenus
- Update German, Catalan, Korean, Indonesian translations
### Fixed
- Fix occasional error when drag-n-dropping in tracklist
- Fix chord track not being bounced
- Fix bounce dialog being empty and throwing errors
- Fix some MIDI track/lane context menu items not working
- Fix MIDI region export
- Fix compilation failure on some systems (missing `assert()`)
## [1.0.0-alpha.29.1.1] - 2022-02-23
### Added
- Add status page for "no clip selected" in the editor
- Add 10 samples of builtin fade in/out on all audio regions
- Add automation/chord region stretching
### Changed
- Add developer name to appdata XML
- Update Catalan, Japanese, Chinese (Simplified), Turkish, French translations
- Port event viewers to GtkColumnView
- Use separate event viewer for each editor
- Make all arranger objects editable in event viewers
- Require Ctrl modifier for global keypad 4 and 6 shortcuts
### Fixed
- Add missing type="desktop" to appdata XML
- Fix appdata XML having 2 default screenshots
- Do not allow stretching when a selected region is looped
- Fix clicking and dragging on bottom right of regions doing stretch instead of loop in stretch mode
### Removed
- Remove duplicate arranger object position validator
## [1.0.0-alpha.29.0.7] - 2022-02-13
### Changed
- Generate appdata XML using Guile script
## [1.0.0-alpha.29.0.1] - 2022-02-12
### Added
- Add more scales
- User manual: add more info about DSSI/LADSPA and Flatpak plugin paths
- Chord inversions
- Chord presets and chord preset packs
- Chord preset auditioning
- Ability to transpose entire chord pad
- Add meson options for optional dependencies
- Make chord changes undoable
### Changed
- Change how scales/chords are handled
- Use adaptive grid snap by default
- Hardcode Flatpak plugin paths
- Make region icon sizes smaller
- Print chord names in chord regions in timeline
- Use GtkCenterBox for bottom bar (makes Zrythm usable on small screen sizes)
- Select listview items on right click
- Port file auditioner instrument dropdown to GtkDropDown
- Unset `GTK_THEME` on startup (only support Zrythm themes)
- Update Catalan, French, Chinese (Simplified), Portuguese, German translations
- Do not block buttons below toast widget
- Do not allow setting loop end marker at or before loop start marker
- Do not allow cloning unclonable tracks
### Fixed
- Fix various issues with chord selector window
- Fix occasional stuck notes when clicking chords
- Fix error when pasting when clipboard is empty
- Fix error when showing port connections on input port
- Fix incorrect MIDI channel being sent when auditioning MIDI notes
## [1.0.0-alpha.28.1.3] - 2022-01-22
### Added
- Audition mode
- Adaptive snap
- Sidechain port detection for plugins running through Carla
### Changed
- Update French, Chinese (Simplified), Portuguese, Turkish, German, Italian translations
- Port MIDI activity widget to snapshot API
- Change CPU usage widget color
- Calculate nearest snap point on the spot instead of using pre-cached snap points
- Use custom pthreads with RT scheduling and low stack size for DSP on all backends
- Don't block when running various dialogs
- Carla: use timeout instead of tick callback for running UIs
- Carla: clear GTK GL context before opening UIs
- `zrythm_launch`: Ignore `LD_LIBRARY_PATH` and `GSETTINGS_SCHEMA_DIR` exports when using flatpak
### Fixed
- Silence GTK DND error on X11 (known GTK bug)
- Fix delete key not working in arrangers
- Fix Carla port connection issue with CV variants
## [1.0.0-alpha.28.0.1] - 2022-01-19
### Added
- Add appdata
- Optimize MIDI event processing
- Port various MIDI util functions from Tracktion
- Add tint to track and channel widgets
- Cache automation region drawing in timeline
- Optimize arranger drawing
### Changed
- Update Polish, Portuguese, Turkish, Chinese (Traditional), Chinese (Simplified), French, Hebrew, Indonesian translations
- Update fader and panner appearance
- Port track widget drawing to snapshot API
- Use theme color for playhead
- Use theme colors for meter gradient
- Change default track colors to palette from GTK color picker
- Make grid lines less prominent in the arranger
- Use port symbols for all ports (fixes projects made in one locale showing errors in another locale)
- Add Space, 1, 2, 3, 4, 5, 6 and other single-key shortcuts to arranger widget and remove some unnecessary global shortcuts
- Use most appropriate (slimmest) Carla patchbay variant for each plugin
### Fixed
- Fix "please restart" dialog being transient for preferences window instead of main window
- Fix snap to grid button not being togglable
- Fix `zrythm_launch` on MacOS (use `DYLD_LIBRARY_PATH`)
- Fix loop dashed line being incorrectly drawn at the start of regions
- Fix spacing of plugin/file browser filter buttons
- Add exception for bug report dialog for known GTK bug
- Fix non-fatal error when opening folded tracks
- Fix drop target not being set properly on folder channel widget
- Fix incorrectly setting temporary font config as global current
- Fix editable label popover not having its text selected
- Fix audio send buffers not being cleared during processing
### Removed
- Stop using trademarked MIDI logo
## [1.0.0-alpha.27.0.3] - 2022-01-10
### Added
- New dependency libadwaita
- New searchable preference dialog
- Add plugin latency handling for plugins running through Carla
- New Hebrew translation
- Various drawing optimizations
- Various DSP optimizations
### Changed
- Updated plugin browser filter section
- Change UI toolkit from GTK3 to GTK4
- Bump version requirements for some dependencies
- Use `LD_LIBRARY_PATH` to override library paths in `zrythm_launch`
- Run all plugins via Carla
- Port most widget drawing from cairo (software rendering) to GTK snapshot API (OpenGL)
- Show toast messages when backups are saved instead of showing a blocking popup
- Use SCSS to compile CSS theme
- Allow DSEG font loading directly from file
- Update Indonesian, Ukrainian, Greek, Italian, Spanish, Slovenian, French, Turkish, Portuguese (Brazil), Portuguese, Chinese (Simplified), Russian translations
- Use libdir option for Zrythm lib directory instead of 'lib'
- Port some widgets to new GTK4 alternatives
- Use meson dictionary to generate list of languages
- Use Carla patchbay variant instead of rack for loading plugins to support CV ports
- Change global single-key shortcuts to require Ctrl modifier
- Make strict compilation flags stricter
- Add additional gtksourceview5 language spec lookup path
- Redraw rulers and arrangers on every frame
- Recalculate DSP graph when reallocating engine ports
- Use `int_fast64_t` and `uint_fast64_t` for large DSP numbers instead of `long` for better cross-platform compatibility
- Set Carla plugin window parent on Windows so the plugin window stays on top of Zrythm
- Do not attempt to run `diff` to check for changes when closing the project
### Fixed
- Fix issues with plugin search in plugin browser
- Fix timeline minimap not drawing its contents
- Meson: fix use of sse flags on non-`x86_64` systems
- Fix modulators not being saved with the project
- Only recreate plugin port list when selected plugin changes (fixes lag in unrelated actions)
- Fix output track hash being saved as INT instead of UINT in channel leading to overflows and project corruption
- Fix stack smashing in recording manager when recording automation (pre-create dynamic array)
- Fix error when opening a project from a running instance
- Fix incorrectly freeing memory owned by GLib (`g_settings_schema_source_get_default()`)
- Fix various memory issues and possible NULL dereferences reported by GCC
- Fix Carla not being notified of buffer size changes
- Fix missing icons in mixer and transport display
- Fix automation not being drawn when the line is vertical
### Removed
- Remove unused widgets/files
- Remove unnecessary widget properties from UI files
## [1.0.0-alpha.26.0.13] - 2021-10-24
### Fixed
- Fix occasional error when dragging objects to negative positions
- User manual: fix build issues with some translations
- Fix error when activating nudge action on no selections
- Fix autosave interval of 0 not being respected
- Fix piano roll keys not making sound on the correct track
- Fix UI not refreshing after resetting fader value
- Fix error incorrectly being thrown during sample processing
## [1.0.0-alpha.26.0.1] - 2021-10-22
### Added
- Add gain to audio regions
- Allow changing BPM via text input
- Add BPM detection option for audio regions
- Allow changing fade in/out in audio editor
- Add more error handling in various places
### Changed
- Update Portuguese (Brazil), Japanese, Swedish, Indonesian translations
- Throw proper error when `dlopen()` failed on lv2 plugin
- Don't throw non-fatal error when timeline selections cannot be pasted
- Show error message when failed to serialize project when closing main window
- Don't allow auto-disarming tracks while recording
- Make steps to reproduce and other fields mandatory in bug report dialog
### Fixed
- Fix audio fades not being applied properly during processing
- Fix incorrectly allowing connecting sends from Master
- Fix graph export not working
- Fix sends not being added properly in graph export
- Fix error when lowering BPM when an audio region exists
- Fix error when destroying main window
- Fix error not being set when LV2 plugin fails to instantiate
- Fix crash when too many UI events are received
- Fix fade in/out and loop start/end not being stretched properly when BPM changes
- Add missing curve algorithms to GSettings schema
## [1.0.0-alpha.25.1.22] - 2021-09-11
### Added
- Show message when attempting to delete undeletable tracks
### Changed
- Always use carla discovery binary installed with zrythm
- Only change BPM/time signature when starting DSP processing (queue BPM/time signature changes)
- Update zix utils
- Use fallback image if failed to get screenshot for bug report
- Update Chinese (Simplified), Ukrainian, Portuguese, Spanish, Japanese, Russian translations
### Fixed
- Fix error when moving BPM automation point to position 0
- Fix error when changing BPM/time signature with scroll wheel
- Fix error during playback after changing a MIDI track name
- Fix positions not being updated correctly when changing beat unit
## [1.0.0-alpha.25.1.1] - 2021-09-06
### Added
- Best fit zoom on timeline
- Add more info to `--version`
### Changed
- Build vamp plugins ported from QM vamp plugins
- DSP optimization: cache automation track ports and clip editor region/track
- Optimization: use hashtable for looking up tracks by name hash
- Process UI events before performing actions
- Don't throw error if clip editor has no track when drawing piano roll keys
- Don't throw error if no track is hit when DnDing into the tracklist
### Fixed
- Fix segfault when double clicking on port in plugin inspector
- Fix error when renaming track that has sends
- Fix MIDI note indices not being updated properly when undoing deletion
- Fix zoom controls/shortcuts not working in editor
- Fix error when moving MIDI region to another track
- Fix GtkSourceView language spec path being hardcoded to version 4
- Fix plugins not being instantiated before connecting when duplicating tracks
## [1.0.0-alpha.25.0.1] - 2021-09-04
### Added
- Show indicator if region is looped
- Handle audio editor in editor event viewer
- Make event viewer columns reorderable
- Allow clamping to nearest acceptable position when moving region markers
- Show velocity values during UI actions
- Draw horizontal lines in velocity editor
### Changed
- Update Arabic, Thai, Chinese (Simplified), Japanese, Russian translations
- Only show 1 decimal point for positions in event viewers
- Split regions normally (destructively) if not looped
- Only allow merging unlooped regions
- Make vertical range selection space in timeline smaller
- Do not throw error if waveform widget does not have R channel data to draw
- Change env variable from `NO_SCAN_PLUGINS` to `ZRYTHM_SKIP_PLUGIN_SCAN`
- Do not reallocate memory for all ports when changing block length
- Make drum mode a per-track setting instead of per-project
### Fixed
- Fix sort by position/pitch/velocity in event viewers using alphabetical sort instead of int/position sort
- Fix UI not being refreshed when ramping velocities
- Fix error when merging regions
- Fix error when saving after undoing a region split
- Fix error when loading project after redoing a region split
- Fix audio files in pool sometimes being overwritten by other files
- Fix crash when renaming a track that has children routed to it
- Fix invalid memory usage in event viewer
- Fix error when loop-resizing audio regions from the left side
- Fix occasional meter-related segfault on startup
- Fix crash when moving playhead with snap keep offset enabled
- Fix snap keep offset not snapping to nearest snap point
- Fix attempting to open DSSI and LADSPA plugins without carla
### Removed
- Remove invalid check when duplicating audio regions
- Remove some unused files and dead code
## [1.0.0-alpha.24.0.1] - 2021-08-27
### Added
- Add SIGTERM handler that gracefully shuts down the application
- Link arranger selections in event viewers
- Highlight pressed notes in the piano roll from any source
### Changed
- Port suil improvements from upstream
### Fixed
- Fix error when loading some LV2 plugin UIs
- Fix carla plugins being unnecessarily instantiated during clone
- Fix occasional error when removing multiple regions
- Fix position label in event viewer not displaying negative positions properly
- Fix port identifiers not being serialized correctly
- Fix UI not being refreshed when changing velocity values
- Fix automatically armed tracks not being automatically disarmed after loading a project
- Fix MIDI channel send ports not being cleared on each run
- Fix channel MIDI output incorrectly being marked as a track port on project load
- Fix meters stopping drawing after autosave
- Fix hardware devices not being connected to existing tracks after loading a project
## [1.0.0-alpha.23.0.1] - 2021-08-26
### Added
- Submit compressed log file along with anonymous error reports
- Ability to dither on export
- New logarithmic curve algorithm
- User manual: add XRUN definition to glossary
### Changed
- Use hashtable to speed up dsp graph calculation
- Refactor & optimization: store owners on each object
- Change MIDI track and open UI button icons
- Refactor: add GError-based error handling for all undoable actions
- Update French, Japanese, Portuguese, Russian, Chinese (Simplified), Norwegian, Turkish, Ukrainian translations
- Use escaped name when drawing regions and markers
- Don't recalculate the graph every time the user clicks on a region
- Various DSP optimizations
- Skip autosave if in the middle of an arranger action
- Add more error handling when instantiating plugins and applying states
- Clone project before saving and save clone (ability to save yaml in a separate thread in the future)
- Don't allocate buffers for ports not used in the DSP graph (memory usage optimization)
- Refactor port connections into global port connections manager
- Refactor: Use track name hash to identify tracks instead of positions
- Don't recalculate graph when moving tracks
- Disable ability to record on chord track until implemented
- Don't attempt to show bug report dialog if main window doesn't exist
- Use `carla_save/load_plugin_state()` to save/load carla states
- Silence all output ports exposed to JACK when idle-processing
- Copy state directories instead of instantiating plugins when cloning (speeds up project saving)
### Fixed
- Fix changing marker name not taking effect on the UI
- Fix error when attempting to auto-scroll in a hidden arranger
- Fix error when attempting to loop-resize objects in timeline from the right side when resulting end position would be negative
- Fix tracks not being copied/moved inside foldable tracks correctly in some circumstances
- Fix tracks getting deselected when CTRL+dragging in tracklist
- Fix rare segfault in LV2 UI code (suil)
- Fix error when selecting a file in a generic LV2 UI
### Removed
- Remove some non-realtime calls from realtime functions reported by stoat
## [1.0.0-alpha.22.1.11] - 2021-08-07
### Added
- Add Thai language
### Changed
- Update Chinese (Simplified), Japanese, Portuguese translations
### Fixed
- Fix segfault when requested LV2 plugin UI not found
- Fix error when saving project with uninstantiated plugins
- Fix crash when moving a track
- Fix error when attempting to resize MIDI notes
## [1.0.0-alpha.22.1.1] - 2021-08-07
### Added
- Set window title and role when detaching tabs
- Add automatic bug reporting option
- Add json-glib dependency
- User manual: add Zchan images
- Add opt-in popup for checking for updates
- Move to start of double-clicked region in the editor
- Add line wraps to track comments
### Changed
- Allow specifying primary and secondary user shortcuts
- Always build with libcurl
- Change `phone_home` option to `check_updates`
- Redesign bug report dialog (add text input fields and buttons to send via email/sourcehut/automatically)
- Switch to resize-loop when attempting to resize-only a selection that contains a mix of looped and unlooped objects
- Propagate errors using GError for tracklist selections actions
- Show "(!)" on channel slot if plugin instantiation failed
### Fixed
- Fix app.goto-prev-marker user shortcut not being read
- Fix shift-m not working for muting objects
- Fix copy-paste and cut-paste not working in editor
- Fix editor size becoming larger when double-clicking region
- Fix playhead jumping to the start of a region in the editor if placed at the end of the region
- Fix quantize/quick-quantize not working in the editor
- Fix carla plugins becoming disabled when loading a preset
- Fix crash when selecting "overwrite events" recording mode
- Fix segfault in port code
- Fix click and drag to move playhead not working in editor ruler
- Fix incorrectly assuming the current version is not the latest version when checking for updates fails
- Fix crash when pressing right arrow on MIDI notes ending before the region start
- Fix error when moving folder track
- Fix folded track objects being visible in the timeline
- Fix error when changing preroll from 2 bars to none
- Fix timeline drop highlighting not taking into account folded tracks
- Fix crash when right clicking on an audio region and applying a function
- Fix stretching of MIDI regions not working
## [1.0.0-alpha.22.0.1] - 2021-08-01
### Added
- Add Turkish translation
- Install `zrythm_lv2apply`
- Allow renaming track lanes
- Allow applying audio functions on audio regions from the timeline
- Add nudge actions
- Add option to edit audio in an external app
- Add linear fade in/out and nudge functions in audio editor
- New dependency: vamp-plugin-sdk
### Changed
- Allow bouncing audio regions
- DSP refactor: use common time struct for processing
- Update Chinese (Simplified), French translations
- User manual: add section for mascot in user media chapter
- Don't allow resizing objects if not all selected objects are resizable
### Fixed
- Fix non-fatal error when attempting to split region at its start
- Fix recording incorrectly being handled for auditioner tracks
- Fix track lane not being correctly fetched when drawing tracks
- Fix crash when moving a region to another lane and undoing
- Fix audio regions not being redrawn when a function is applied
- Fix crash when showing changelog on MacOS
- Fix move action not being created when resizing an dmoving notes simultaneously
### Removed
- Remove unused source files for track lanes
## [1.0.0-alpha.21.0.13] - 2021-07-22
### Added
- Add accelerators to toolbox tooltips
### Changed
- Disable saving in save dialog shown when closing a project on trial version
- Silence debug messages printed when drawing audio regions
### Fixed
- Silence non-fatal error when detaching panels on some systems
- Fix error when dragging folder track into itself
- Fix dragging markers track inside folder track causing a crash
- Fix crash when deleting a track inside a folder track
- Fix crash on MacOS when loading a project
- Fix error when closing project containing folder tracks
- Fix error when loading project where an audio region is selected
## [1.0.0-alpha.21.0.1] - 2021-07-21
### Added
- Add monitor toggle to audio tracks
- Add Vietnamese translation
- Add metronome count-in
- Add recording preroll option
- Ask for save on close
- Add sends/MIDI FX to mixer channels
- Make all notebook tabs detachable
- Allow importing multiple files at the same time
- Allow overriding keyboard shortcuts
- User manual: add MIDI bindings section
### Changed
- Update Chinese (Simplified), Japanese, Russian translations
- Link reveal status of channel sends/inserts/MIDI FX on mixer
- Prettify file info in file browser
- User manual: move Shortcuts section
### Fixed
- Fix broken news button URL
- Fix crash when selected auditioning instrument is not found on startup
- Fix passing incorrect widget in file auditioning controls widget signals
- Fix error when attempting to audition MIDI file
- Fix incorrectly allowing the user to undo mid-sequence
### Removed
- Remove trial time limit
## [1.0.0-alpha.20.0.1] - 2021-07-15
### Added
- Add meson option for native build
- Add dots to position/BPM displays
- Add Indonesian translation
- Add graph SVG export
- Record incoming MIDI CC events into automation lanes
- Add ability to change instrument
- Add ability to save/load presets from plugin inspector
- Show port groups in plugin inspector
- Add ability to perform multiple undoable actions in sequence
- Add ability to change direct out for multiple tracks (and to create a new group to route to)
- Add folder tracks
### Changed
- Enable link time optimization (LTO) by default
- Draw even less detail on audio regions when CPU usage is above 40%
- Update French, Chinese (Simplified), Japanese, Ukrainian translations
- Make group tracks foldable
- Silence unnecessary MIDI event logs
- Do not attempt to free swh lv2 plugins (upstream issue)
### Fixed
- Fix channel sends being outside pre-fader group in graph exports
- Fix various issues on MacOS
- Fix missing libm dependency on lv2apply used during tests
- Fix error when loading project with duplicated audio region
- Fix multiple tracks losing their order when moved
- Fix incorrectly allowing 0 tracks to be selected when ctrl-clicking on track
- Fix default loop range being 5 bars long instead of 4 bars
- Fix memory leak in track processors
- Fix crash when setting listen status on MIDI track
## [1.0.0-alpha.19.0.1] - 2021-06-24
### Added
- Add bookmarks and filters to file browser
- Add MIDI/audio auditioning support to file browser
- Make MIDI note/velocity colors take velocity into account
- Allow MIDI learn on track sends
### Changed
- Show error message when plugin UI fails to open
- Always copy/reflink audio pool files to backups instead of creating symlinks
- Update user manual sections: getting started, projects, configuration, plugins, audio and MIDI files
- Lower GLib requirement to 2.64
- Update Spanish, Russian translations
- Update popup file browser and refactor common logic with panel file browser
- Draw MIDI note velocities as lollipops
- Center velocities under MIDI notes
### Fixed
- Fix crash when adding a MIDI FX track
- Fix rare error when attempting to queue metronome samples
## [1.0.0-alpha.18.2.1] - 2021-06-09
### Added
- Add AppImage support
### Changed
- Update Chinese (Simplified), Russian, Ukrainian, Polish translations
- Install org.zrythm.Zrythm.desktop instead of zrythm.desktop
- Various DSP/UI optimizations
### Fixed
- Fix crash when attempting to get last n lines from log file before it is initialized
- Fix undo stack indices not getting updated when removing actions
- Fix error when opening automation lanes on master
## [1.0.0-alpha.18.1.1] - 2021-06-06
### Added
- Make track mute/solo/listen/mono/record MIDI bindable
### Changed
- Only listen to MIDI notes within the first beat during moving
- Don't show non-fatal error when RtAudio backend fails to initialize
- Disable hardware processor callback when disabling the audio engine (fixes occasional error when closing projects)
- Call cleanup() on all LV2 plugins except helm
### Fixed
- Fix error when removing unused clips from the pool
### Removed
- Remove ability to change JACK buffer size on the fly on Windows
## [1.0.0-alpha.17.1.22] - 2021-06-04
### Changed
- Update Greek, Spanish, Chinese (Simplified), Norwegian Bokmal, Japanese translations
- Annotate releases with changelog
- Make LV2 plugin <=> UI communication buffers larger
### Fixed
- Fix crash when undoing deletion of multiple inserts
- Fix audio track inputs not being available after loading a project
- Fix bounced regions not starting at start marker when bouncing tracks
- Fix error when attempting to open plugins with carla when zrythm is built without carla support
## [1.0.0-alpha.17.1.3] - 2021-06-02
### Added
- Highlight bass note in piano roll
- New xxhash dependency
- Allow enabling/disabling tracks
- Add bounce option to disable track after bounce
- Add context menu to channels in mixer
- Implement cut/copy/paste/delete/select all/deselect all for plugin slots
- Allow deleting plugins with delete key
- Automatically adjust timeline length
- Add CSS theming for list boxes
- Auto-generate and install CLI completions for fish and bash
- Remove unused or untracked pool files during save
### Changed
- Don't pause engine when performing mute/solo/listen actions
- Change version requirement of libcyaml to 1.2.0
- Convert plugin presets combo box to list box
- Don't populate presets list box for uninstantiated plugins
- Save pool ID or base64 MIDI instead of absolute paths in track creation actions
- Use FLAC to save imported clips if bit depth < 32
- Temporarily disable audio engine and show modal dialog during save (fixes random errors during save)
- Save the project struct directly instead of memcpying it
- Skip re-writing existing files to audio pool
- Create symlinks to main project's pool files when saving backups
- Defer autosave if sound is playing on master
### Fixed
- Fix notes from multiple regions being selected when ramping velocities
- Fix audio recording including audio from other regions
- Fix bars (position) not being passed to LV2 plugins
- Fix incorrect expected position for next cycle when processing LV2 plugins
- Fix some broken links (CGit -> Gitea migration)
- Fix error when opening scripting window
- Fix GUI freezing when clicking inside piano roll
- Fix hangs when no more objects are available in object pools
- Fix UI events being spammed when changing a control value
- Fix select/deselect all not working in editor
- Fix crash when dragging non-existing plugin to slot on MacOS
- Fix naming scheme of duplicate files in the audio pool
- Fix audio pool not being saved to backup projects
- Fix too many `ET_PLUGIN_STATE_CHANGED` events being sent
- Fix error when loading project containing audio files with different sample rate
## [1.0.0-alpha.16.1.1] - 2021-05-14
### Added
- Allow choosing CSS theme from preferences
- Allow choosing icon theme from preferences
- Add options to follow playhead and auto-scroll on edges
### Changed
- Update Portuguese, Chinese (Simplified), Ukrainian translations
- Install `zrythm_launch` on Mac
- Change insert/remove range button icons
### Fixed
- Fix sends not copied when duplicating an instrument track
- Fix errors when removing project range
- Fix arrangers losing focus when pressing a key
- Fix crash when changing marker track color
- Fix dynamic library being used when using glib subproject
## [1.0.0-alpha.16.0.37] - 2021-05-07
### Added
- Add preliminary support for LV2 options interface
- Import nanovg & make using OpenGL easier
- Show address and binary file in backtraces if available
### Changed
- Require glib 2.68 or above
- Update glib meson wrap to 2.68.1
- Update French, Chinese (Simplified) translations
- UI theme: make bright green more blue
### Fixed
- Fix possible crash in slider widgets
- Fix metronome not being played on bar 1
- Fix wrong buffer offsets being passed when splitting dsp cycles
- Fix crash when double clicking on empty slot
- Fix segfault when `port_get_dest_index()` fails
- Fix gtksourceview language specs not found on MacOS installer build
- Fix plugin bypass state not being restored on project load
## [1.0.0-alpha.16.0.12] - 2021-05-02
### Added
- Print required/optional lv2 options during instantiation
- Abort instantiation of LV2 plugins with required options that are not supported
- Pass nominalBlockLength to LV2 plugins
### Changed
- Generate copyright name and years from meson config
- Pass correct window title to external LV2 UIs
- Pass data access/instance access to plugins as features
- Mark state:makePath as supported feature
- Set minBlockLength to 0 and maxBlockLength to 4098 for LV2 plugins
- Create new plugin settings if failed loading current ones instead of crashing
### Fixed
- Fix passing invalid ui:parent to lv2 plugins (suil automatically adds it)
- Fix LV2 event buffer not being reset before run() for output ports
- Fix crash when instantiating plugins with > 200 parameters
### Removed
- Remove support for powerOf2BlockLength and fixedBlockLength LV2 features
## [1.0.0-alpha.16.0.1] - 2021-04-30
### Added
- Make fader and piano roll highlight colors themeable
- Add bar and beat snap options
- Allow bouncing tracks pre-inserts, pre-fader, post-fader, or with parents
- Add plugin author filter in plugin browser
- Add meson option for carla 32bit binaries on windows
- Allow soloing/muting multiple tracks
- Allow changing color for multipler tracks
- Add title field to export dialog
- Allow changing monitor output device ports (JACK only)
- Implement channel listen
- Add option to unsolo/unmute/unlisten all tracks
- Add mute/listen/dim knobs to monitor section
- Add mono/dim/mute functionalities to monitor section
### Changed
- Update French, Japanese, Greek, Chinese (Simplified), Ukrainian translations
- Show value readings on some knobs
- Don't serialize port internal value type
- Pass hardRTCapable and threadSafeRestore LV2 features to plugins during instantiation
- Stop and restart engine when LV2 plugin does not support thread-safe state restore
- Do not re-save the state when instantiating plugins unless state dir does not exist
### Fixed
- Fix fetching latest version in installer build
- Fix error when duplicating tracks with sends/direct outs
- Fix soloed tracks being silent when routed to groups
- Fix LV2 plugin states not being saved correctly when there are files involved
- Fix error when opening generic UIs for bridged plugins
- Fix error when deleting a track when mixer selections exist after the track
- Fix (pw) being shown for MIDI in bot bar when using JACK audio backend with a non-JACK MIDI backend
- Fix error when moving plugin from inserts to MIDI FX
- Fix playhead not being redrawn when moving back to cue point
- Fix incorrect backend being selected in first run wizard
### Removed
- Remove makePath feature for state saving for LV2 plugins (handled by lilv)
## [1.0.0-alpha.15.0.1] - 2021-04-03
### Added
- Implement MIDI fader mute
- Implement MIDI fader velocity multiplier
- Add versions to structs
- Add all automatable CC controls to MIDI tracks
- Add output gain control on audio tracks
- Make track sends automatable
- Make beats per bar and beat unit automatable
- Add Contributor Certificate of Origin
- Allow vertical moving when creating MIDI notes
### Changed
- Update Japanese, Chinese (Simplified), Ukrainian, Spanish, French translations
- User manual: prettify scheme API docs (use parens)
- User manual: use Furo theme for HTML docs
- User manual: use existing API docs if can't generate updated ones
- Set last known automation value on controls when moving playhead manually
- Silence some excessive log output
- Disable musical mode
- Only add control ports to processing graph if they have sources or automation
- Don't allow more than max MIDI events in the same processing cycle when processing carla plugins
- Make graph calculation faster (use port's automation track cache instead of searching)
- Skip SIGTRAP in `zrythm_gdb`
- Show error popup if failed to lock down unlimited memory
- Don't allow setting audio region loop end beyond clip frames
- JACK: show error message when failing to connect to system ports
- Hide hidden tracks from mixer view as well
- Fail if plugin settings cannot be initialized
- Remove link after duplicating a linked region
- Use semaphore to avoid saving project while performing actions
- Always build some DSP code with full optimizations
- Use plugin hints to check if carla plugin has custom UI
### Fixed
- Fix latest release dialog
- Fix pipewire deadlock during startup
- Fix non-stop errors when selecting JACK MIDI backend with dummy audio backend
- Fix error when unpinning chord track
- Fix crash when using ramp tool on arranger objects in timeline
- Fix project failing to serialize when plugin bank has no presets
- Fix crash on buffer overflow when sending events to LV2 UIs
- Fix LV2 presets not being read properly
- Fix crash when track's output cannot be found
- Fix creating new projects from templates not copying over plugin states
- Fix crash when closing project with automation
- Fix crash when BPM automation exists
- Fix pool not being saved when saving projects in a different location
- Fix error when deleting automation region
- Fix port flags not being copied correctly
- Fix crash when instantiating ZLFO UI
- Fix error when deleting markers, scale objects or chord objects
- Fix bounced track material not moved to start marker
- Fix bounced audio skipping first MIDI note
- Fix lag when right-clicking on plugins in the plugin browser
- Fix endless note being played at end of MIDI region
- Fix Zrythm enabled/gain controls not working in LV2 generic UIs
### Removed
- Remove GOVERNANCE document
## [1.0.0-alpha.14.1.2] - 2021-03-14
### Added
- Add context option to select UI if plugin has multiple
### Changed
- Wrap version in triple backticks in bug report template
- Store selected LV2 UI in plugin settings
- Make bug report dialog top level if main window is not initialized
- Use timestamp for log file in /tmp
### Fixed
- Fix blocking when attempting to connect ports
- Fix errors when deleting automation points or chords
- Fix plugin collections not being recognized
- Fix crash on right-click -> paste
- Fix chord track not receiving MIDI panic messages
- Fix chord higlighting not working properly
- Fix LV2 external UIs not opening/closing properly
- Fix attempting to get a backtrace crashing on some systems
### Removed
- Remove global option to force generic UIs
- Remove global option to bridge unsupported UIs
## [1.0.0-alpha.14.0.1] - 2021-03-12
### Added
- Make LV2 parameters automatable if numeric
- Add ctrl-shift-scroll to piano roll
- Add ctrl-shift-scroll to timeline/tracklist
- Generic UI support for carla-based plugins
- Add emblems to plugin browser icons to show that something is selected
- Add emblem to log viewer button to indicate unseen warnings
- Add action stack info to bug report template
- Add pcre2 dependency for internal regex operations
### Changed
- Only read log domains from the environment once
- Internal refactor of plugin ports: merge lv2-only port logic with generic ports
- Handle control type properly for carla-based plugins (logarithmic, integer, etc.)
- Install carla binaries in lib/zrythm/carla instead of bin
- Wait for all DSP threads to become idle during startup
- Update Chinese (Simplified), Norwegian Bokmal, Japanese, French translations
- Split plugin preferences from plugin descriptors and save plugin preferences in plugin-settings.yaml
- Only connect event ports that support MIDI
- Use more descriptive title in plugin window
- Add version dependency on RtMidi
- Make position struct slimmer: remove bars/beats/sixteenths/ticks/subticks and only remember ticks and frames
- Use libbacktrace to get backtraces with line numbers
- Read meson project version from VERSION file
- Only start drag actions when a movement threshold is reached
- Enable resize cursors within 8 pixels of object edge instead of 9
- Force cyaml subproject until upstream fixes issue with restoring floats
### Fixed
- Fix LV2 plugins not being freed
- Avoid nans and non-finite numbers in logarithmic port value conversions
- Fix some race conditions
- Don't attempt to update window title when closing the UI for carla plugins
- Fix position info not being sent to plugins
- Fix `--yaml-to-zpj` option doing the opposite
- Fix crash when pressing delete with nothing selected
- Fix crash when changing the direct out of a track and only selecting a category
- Do not allow deletion of undeletable tracks (master/tempo/chords/etc.)
- Fix opened directories not being closed when scanning for VST2/VST3/SFZ/SF2
- Fix crash when attempting to open a project created with RtMidi after removing the device
- Fix chord track sometimes skipping notes
- Fix non-fatal error when attempting to export after loading a project with a plugin that failed to instantiate
- Fix chord editor not redrawing playhead during playback
- Fix crash during autosave after loading a project containing a carla plugin that failed to instantiate
## [1.0.0-alpha.13.1.1] - 2021-03-05
### Added
- Allow changing engine buffer size while running
- Add event loop to engine to process change requests in GUI thread
- Show changelog dialog when running official release for first time
- Show notification when new version is out on official builds
- User manual: add info about memory locking and open file limits in system requirements
- User manual: implement lexer for `tree` command output in project section
- User manual: document `ZRYTHM_DSP_THREADS` in environment vars page
### Changed
- Enable static analysis when strict flags enabled
- Add HOT attribute to functions called very often
- Add NONNULL attribute to functions to enforce checks at compile time
- Lower number of log lines in error dialog to 100
- Localize pre-startup output (eg, `--help` output)
- User manual: convert toc dumps to overview pages in configuration/getting started/projects/zrythm interface chapters
- User manual: rewrite project structure page
- Use aligned memory allocation in LV2 event buffer
### Fixed
- Temporarily disable JACK transport during export (fixes freeze when running as a JACK client)
- Fix stack overflow in meter logic and live waveform widget
- Fix error when changing JACK transport BPM from another app while being a client
- Fix use of `[[` in `zrythm_launch` script
- Fix memory corruption when using latest LV2
- Fix warnings when building with `-Doptimization=3`
## [1.0.0-alpha.13.0.4] - 2021-02-28
### Added
- Allow MIDI learn on transport controls
- Add dir for user scripts
- Add `--cyaml-log-level` option
### Changed
- Silence many unnecessary logs
- Update Chinese (Simplified), French translations
- Optimize some DSP functions
- Optimize RAM usage for ports (only allocate what is needed)
- Use new libaudec v0.3
- Read example scripts from disk and test them
- Switch to `g_application_add_main_option_entries()` for parsing CLI args
- Use common procedure for pausing/restarting engine
- Handle plugin clone failures more gracefully
- Only attempt to disconnect ports if already connected
### Fixed
- Re-fix AU plugin scan on MacOS
- Fix number of port connections not being updated in inspector when connecting ports
- Fix MIDI note being skipped after transport loop
- Fix errors when loading projects after disconnecting a MIDI device
- Fix errors on wayland when instantiating LV2 plugins
- Fix error when changing piano roll MIDI modifier
- Fix lag when muting/soloing tracks