All notable changes to this project will be documented in this file.
- 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
- 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
- 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 (useDYLD_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
- Stop using trademarked MIDI logo
- 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
- 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 inzrythm_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
anduint_fast64_t
for large DSP numbers instead oflong
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
- 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
- Remove unused widgets/files
- Remove unnecessary widget properties from UI files
- 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
- 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
- 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
- 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
- Show message when attempting to delete undeletable tracks
- 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
- 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
- Best fit zoom on timeline
- Add more info to
--version
- 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
- 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
- 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
- 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
toZRYTHM_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
- 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
- Remove invalid check when duplicating audio regions
- Remove some unused files and dead code
- 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
- Port suil improvements from upstream
- 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
- 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
- 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)
- 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
- Remove some non-realtime calls from realtime functions reported by stoat
- Add Thai language
- Update Chinese (Simplified), Japanese, Portuguese translations
- 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
- 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
- Allow specifying primary and secondary user shortcuts
- Always build with libcurl
- Change
phone_home
option tocheck_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
- 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
- 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
- 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
- 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
- Remove unused source files for track lanes
- Add accelerators to toolbox tooltips
- Disable saving in save dialog shown when closing a project on trial version
- Silence debug messages printed when drawing audio regions
- 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
- 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
- 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
- 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
- Remove trial time limit
- 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
- 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)
- 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
- 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
- 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
- Fix crash when adding a MIDI FX track
- Fix rare error when attempting to queue metronome samples
- Add AppImage support
- Update Chinese (Simplified), Russian, Ukrainian, Polish translations
- Install org.zrythm.Zrythm.desktop instead of zrythm.desktop
- Various DSP/UI optimizations
- 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
- Make track mute/solo/listen/mono/record MIDI bindable
- 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
- Fix error when removing unused clips from the pool
- Remove ability to change JACK buffer size on the fly on Windows
- Update Greek, Spanish, Chinese (Simplified), Norwegian Bokmal, Japanese translations
- Annotate releases with changelog
- Make LV2 plugin <=> UI communication buffers larger
- 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
- 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
- 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
- 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
- Allow choosing CSS theme from preferences
- Allow choosing icon theme from preferences
- Add options to follow playhead and auto-scroll on edges
- Update Portuguese, Chinese (Simplified), Ukrainian translations
- Install
zrythm_launch
on Mac - Change insert/remove range button icons
- 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
- Add preliminary support for LV2 options interface
- Import nanovg & make using OpenGL easier
- Show address and binary file in backtraces if available
- 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
- 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
- Print required/optional lv2 options during instantiation
- Abort instantiation of LV2 plugins with required options that are not supported
- Pass nominalBlockLength to LV2 plugins
- 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
- 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
- Remove support for powerOf2BlockLength and fixedBlockLength LV2 features
- 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
- 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
- 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
- Remove makePath feature for state saving for LV2 plugins (handled by lilv)
- 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
- 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
- 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
- Remove GOVERNANCE document
- Add context option to select UI if plugin has multiple
- 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
- 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
- Remove global option to force generic UIs
- Remove global option to bridge unsupported UIs
- 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
- 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
- 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
- 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
- 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
- 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
[[
inzrythm_launch
script - Fix memory corruption when using latest LV2
- Fix warnings when building with
-Doptimization=3
- Allow MIDI learn on transport controls
- Add dir for user scripts
- Add
--cyaml-log-level
option
- 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
- 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
- Fix unnecessary logs being printed when using CLI commands
- Fix writing to invalid memory when connecting ports
- Fix error when selecting nothing with erase tool in automation editor
- Fix crash when opening project with non-found carla plugin
- Fix crash when closing a project containing plugins that failed to initialize
- Fix locales mismatch between GSettings schema and Zrythm UI
- Fix data not being moved properly when disconnecting ports
- Add LV2 extension to pass host info to plugin
- User manual: add JACK transport sync section
- User manual: add info about MIDI/audio recording
- User manual: add more details about port connections
- Change track pin/unpin logic
- Fix crash when audio region's start position is within the current cycle
- Fix right click in timeline not selecting the object
- Fix SF2s not being scanned
- Fix error when duplicating regions to other lanes/tracks
- Fix crash when undoing deletion of an instrument track after routing a MIDI track to it
- Fix regions on MIDI tracks routed to instrument track marked for export not being played during export
- Fix post-install script not running when it should
- Fix JACK transport behavior
- Fix plugin descriptor cache being ignored sometimes
- Fix regions not being inserted at their original index when undoing deletion
- Fix error when undoing region splitting
- Fix example script
- Allow sending to plugin sidechain inputs (pg:sideChainOf)
- Add horizontal scrollbar to modulators tab
- Install
zrythm_lldb
on MacOS
- Deactivate engine before closing main window
- Update Portuguese (Brazil), Russian, Chinese (Simplified), Persian translations
- Only redraw meters if values changed
--gdb
and--valgrind
options moved to shell scriptszrythm_gdb
andzrythm_valgrind
- Use GOptionEntry to parse command line args
- Remove empty tracks when importing a MIDI file
- Update lv2/lilv/sratom/serd/sord wraps
- Convert meson post-install script to shell script
- Fix error when moving plugin to duplicated track after connecting ports
- Fix error when pressing delete in the tracklist
- Fix making a selection with Ctrl held down not appending to the selection
- Fix recorded audio not being saved properly
- Fix merge button state not updated when selecting objects with the select tool
- Fix invalid serialization of track edit actions
- Fix MIDI panic not sent when performing actions
- Print available GTK modules on startup
- Native PulseAudio backend
- New icons
- Pass UI scale factor to plugin UIs
- Open LV2 plugin UIs with carla by default on Windows
- Don't jump to cue point when temporarily pausing to perform actions
- Send MIDI panic when pausing to perform actions
- Move port connections and MIDI CC bindings from left panel to main notebook (new)
- Allow opening LV2 plugins with CV ports with carla
- Update Portuguese (Brazil), Greek, Chinese (Simplified) translations
- Allow dropping MIDI files into existing tracks
- Optimize track edit actions: do not clone tracks for simple actions
- Propagate changes from/to LV2 ports designated as lv2:enabled to/from the zrythm-provided enabled port
- Delegate process bypassing to plugin if lv2:enabled-designated port is present
- Only send LV2 control val change event to UI if the value changed
- Fix crash after a while when using pencil tool
- Fix double clicking on non-selected track opening up color chooser
- Fix crash when filling automation with pencil tool
- Fix MIDI import not adding note offs when velocity is 0
- Fix crash when importing MIDI file that uses note ons with velocity 0 as note offs
- Fix AU plugin scan on MacOS
- Fix incorrectly freeing plugin manager's lilv nodes when freeing an lv2 plugin
- Fix icons drawn with cairo not taking scale factor into account
- Fix ruler font not taking scale factor into account
- Fix curviness being lost when duplicating automation regions
- Fix crash when moving plugin from mixer slot to empty space in tracklist or mixer
- Fix modulator macros not being properly connected to graph
- Font scale option in preferences
- Ability to rename macro buttons
- Ability to edit track comments (undoable)
- Ability to cancel export/bounce
- Add reset/bind CC/view info context options to modulator controls and macro knobs
- OPUS export support
- Update Catalan, Japanese, Chinese (Simplified), Ukrainian translations
- Remember port connections when undoing plugin removal
- Refactor filling of audio/MIDI events from regions during playback
- Pause transport before performing actions
- Changing time signature is now undoable
- User manual: clarify control behavior with respect to automation events
- Fix error when region contents start before global 1.1.1.0
- Fix error when attempting to select automatable in modulator track
- Fix error when instantiating LV2 plugin that has multiple params with same name through carla
- Fix marker having negative y coordinate when font scaling is high
- Fix metronome calculation for beats
- Fix crash when routing instrument track to audio group
- Fix crash when removing modulator that has a routed output
- Fix stuck note when note ends after region end
- Fix bug report dialog not showing text when text contains URIs
- Fix error when selecting pencil tool on Windows
- Fix wrong binaries path passed to carla on installer versions
- Fix crash when loading plugins that fail to instantiate
- Fix silent note after transport has looped
- Fix plugins receiving events at invalid times when cycle splitting occurs
- Fix non-fatal error when not selecting a port in the port selector window and pressing OK
- Fix 1/4 time signature skipping every 3 beats
- Remove beat unit enum from transport
- Show warning when attempting to open deprecated LV2 UIs
- Warn if lv2 plugin contains dynamic link to illegal libraries (such as qt)
- Modulator macro buttons
- Dropdowns to select from undo/redo history
- Home key shortcut to move playhead to start of session
- Only attempt to get latency on LV2 plugins that have a reportsLatency port
- Update Portuguese, French, Chinese (Simplified), Portuguese (Brazil), Ukrainian translations
- Update all carla plugin params before saving state
- Automatable selector: start insert/modulator/midi fx counts from 1 instead of 0
- Fix objects not being resizable beyond bar 128
- Fix infinte loop when attempting to set direct out of track to a selected track
- Fix crash when adding a modulator
- Fix not being able to move playhead past 128 bars
- Fix wrong tracks being deleted when undoing track duplication
- Fix crash after transport loops back when recording automation in touch mode
- Fix error when adding automation lanes
- Fix crash when recording audio for a long time
- Fix current edit mode not selected on startup
- Moving region markers is now undoable
- Do not attempt to draw regions if visible width is 0
- Refactor each plugin action into a single mixer selections action
- Refactor each track action into a single tracklist selections action
- Add Arch Linux to exceptions in trademark policy
- Fix automation region mute
- Fix crash when cloning from insert into new track
- Fix crash when moving two effects in the mixer and the new position overlaps one of them
- Fix start/end markers being deletable
- Fix right channel having lower volume after recording audio in mono
- Fix crash when reaching transport loop end and metronome enabled
- Fix crash when moving a plugin to a slot that has another plugin
- Fix crash when deleting all visible tracks
- Fix regions of hidden tracks being shown in the timeline
- Fix crash when holding down ctrl-d for a long time
- Add
--gen-project
option to generate projects from Guile scripts - Expose more Guile API
- Filter plugin list during search
- User manual: Add more info about timeline editing
- User manual: Compact translations into 1 file for each language
- User manual: Use dark theme for html output
- Update Greek, Spanish, Portuguese, Chinese (Simplified), Ukranian, Russian, Italian, Portuguese (Brazil), Japanese, Galician, German translations
- Cache audio region fades
- Fix audio region fades not showing
- Fix not being able to change fade points in lane regions
- Fix plugin browser collection context menu being shown multiple times
- Fix crash when using
--gdb
and more than 100 env variables exist - Fix compilation errors when building with latest carla-git
- Fix projects not being loaded properly when using JACK
- Fix protocol selection not working in plugin browser when collection or category is selected
- Add reset right click option in categories in plugin browser
- Plugin collections
- Filter by protocol in plugin browser
- Snap to events and snap-and-keep-offset
- Recording modes: overwrite events, merge events, takes (mute previous)
- Projects are now samplerate agnostic
- Snap length option: last object
- Do not show bug report popup within 8 seconds of previous one
- Move snap settings from main toolbar to each arranger
- Disarm transport record after recording
- Reference clip frames directly for audio regions instead of duplicating the buffers (lowers RAM usage)
- Improved region drawing performance (better caching)
- Fix file browser divider position not being loaded properly
- Fix preferences dialog crash when more than 60 audio input ports exist
- Fix clip not being duplicated when duplicating audio regions
- Fix selected language not being picked properly
- Fix lane regions not being shown when main region is not visible
- Fix MIDI notes being muted when region is looped and note starts before clip start marker
- Fix crash when quantizing in audio editor
- Audio selection and functions (invert, reverse, normalize) in audio editor
- Update Spanish, Norwegian Bokmal, Portuguese, Chinese Simplified, Portuguese (Brazil), Danish, Greek translations
- Move issue tracker from Redmine to Sourcehut
- Change wording in user manual: edit modes -> edit tools
- Fix audio clip being offset by region size when splitting an audio region and saving the project
- Fix crash when automating LV2 plugins that have multiple ports with the same label but different symbol
- Fix not being able to scroll past 21 bars after importing a MIDI file
- Write audio files during recording (every 2 sec)
- F1 shortcut to open manual
- F2 shortcut to rename regions
- Add vertical flip action for automation
- Add menu option to reset plugin parameter values
- Add option to show automation values in automation editor
- Show border around selected UI section
- Split graph cycle at loop points
- Update Russian, Portuguese, Japanese, German, Norwegian, Greek, French, Chinese, Italian, Spanish, Galician, Polish translations
- Remember tab selection in bot/left/right panels
- Update editor toolbar based on region type
- User manual: various updates
- Change deselect all shortcut from ctrl-backslash to ctrl-shift-a
- Show region name instead of track name in editor margin
- Update some icons (select, audition, sends, inserts, etc.)
- Fix chord pad not updating when a chord changes
- Fix select/deselect all actions not working
- Fix track not shown as selected in the tracklist when clicking on it in the mixer
- Fix critical error when moving track with automation
- Fix other regions not drawn in editor ruler when automation region selected
- Fix broken MIDI track inspector page on project load
- Fix chord pad remaining pressed during drag n drop
- Fix clip editor region's automation track index not being updated when switching automation lanes
- Fix/refactor copy-paste of arranger selections
- Fix crash when muting MIDI region
- Fix not being able to re-select a track's send target after selecting None
- Fix crash during recording when loop traverses back
- Fix crash when splitting chord region
- Fix SFZ/SF2 support
- Fix MIDI note getting skipped when traversing transport loop end
- Fix crash when deleting a region with erase mode
- Remove bottom arranger from automation editor
- Export stems
- Update Greek, French, Swedish, Russian, Portuguese, Japanese, Spanish translations
- Warn instead of critical when port in LV2 preset is not found
- User manual: update export and getting started chapters
- Revamped export dialog
- Auto-generate localization header (so languages in code are in sync with LINGUAS)
- Fix non-fatal error when trying to edit scale in chord track
- Fix non-fatal error when right-clicking in piano roll using eraser
- Fix issues when opening a project using a different backend
- Fix track bouncing
- Fix build issues when
user_manual
meson option is enabled
- Add hardware processor for controlling input hardware ports (can now record with RtAudio/RtMidi)
- Write to zrythm.log under the system's temporary dir until the actual log file is initialized
- Update Japanese, Portuguese (BR), French, German, Chinese (Traditional), Swedish, Russian, Dutch, Spanish, Afrikaans, Greek translations
- Show whether this is the release version in
--version
- Use atomic flag instead of port operation lock for bypassing the engine (fixes crash when deleting a MIDI track after bouncing it)
- Fix some widgets not showing in preferences dialog
- Fix runtime error when selecting nothing with eraser tool
- Fix various syntax errors in translations
- Fix missing
af_AZ
locale in GSettings schema - Fix plugins not being instantiable the first time they are scanned
- Add DSSI and LADSPA plugin support
- Support VST and LADSPA shells (libraries that contain multiple plugins)
- Add better error handling when opening plugin UIs
- Remember arranger zoom levels with projects
- Allow passing arguments to
zrythm_launch
- Remember user choice when right-clicking on a plugin to instantiate it
- User manual: Add Glossary, Command Line and Environment pages
- Add
af_ZA
locale - Add tests for PO files
- Add translation context to UI labels in Preferences dialog
- User manual: Update various sections
- Updated Russian, Chinese (Traditional), Japanese, Spanish, Swedish translations
- Change
zh_Hans
tozh_CN
andzh_Hant
tozh_TW
- Port sphinx Makefile to meson
- Use latest Carla API
- Fix unnecessarily loading Carla plugin states for non-project plugins on project load
- Add missing nl locale in LINGUAS
- Fix attempting to open custom UIs on plugins that don't have any
- Fix crash when clicking on port selector in Tempo track automation lanes
- Fix track auto-arm
- Increase open file limit on app startup
- Show popup when JACK shuts down
- Add test for deleting plugins
- Add more meson subprojects
- Show underlying backends instead of RtAudio/RtMidi
- Place bounced material where the first region starts if bouncing regions
- Revise Trademark Policy
- Update Chinese (Traditional) translations
- Fix broken export/bounce (WAV and FLAC)
- Fix FreeBSD build
- Fix skipping setting of Carla engine options
- Fix crash when deleting a newly created MIDI track on an empty project
- Fix remembering position of divider between timeline and clip editor
- Fix crash when deleting a MIDI FX slot on a MIDI track
- Fix LV2 plugins not applying file selection changes
- Allow renaming regions
- Add option to build with static libs where possible
- Add option to get Carla bridge/discovery binaries from custom dirs
- Add GOVERNANCE document
- Add framework for MIDI functions (such as legato)
- Allow changing track color and icon
- Add versioning info in PACKAGING.md
- Add toolbar to modulators with show UI/delete buttons
- Remember clip visibility status in the clip editor and scroll positions in each arranger when saving/loading projects
- Rework snap options
- Update Spanish, Italian, French, Japanese, Portuguese, Chinese (traditional) translations
- Use new carla-host-plugin dependency instead of carla standalone, carla utils and carla native plugin
- Improve fftw dependency discovery
- Show icons in piano roll highlight combo box
- Show "(pw)" indicator if JACK is running through PipeWire
- Do nothing when duplicate action is invoked with nothing selected
- Use whereami to get absolute executable path (for passing to addr2line)
- Disable plugins that fail to instantiate when loading projects
- Skip MIDI events not 3 bytes long
- Add glib log domain (so that
G_MESSAGES_DEBUG=zrythm
works) - Close RtMidi ports before attempting to open
- Only send data to JACK ports if they have connections
- Show warning when using JACK audio/MIDI backend with non-JACK audio/MIDI backend
- Fix crash when attempting to open automation tracklist on tracks without any automation tracks
- Fix markers icon missing on Windows
- Fix plugin creation action not remembering the number of plugins to create
- Fix crash when dragging chords into invalid locations in the timeline
- Fix all note ends becoming the same position when resizing MIDI notes
- Fix not being able to resize MIDI note start positions beyond region start position when resizing from left side
- Fix piano roll drum mode
- Add right click + drag to delete objects with select tool
- Add MIDI CC bindings table
- Add port connections table
- Add modulator track
- Add ability to drop modulators in modulators tab
- Allow connecting modulators to controls
- Make changing track name undoable
- Make changing fader value undoable
- Make balance control changes undoable
- Make control port value changes undoable
- Make MIDI CC binding actions undoable
- Update Italian, Portuguese, Chinese, Spanish translations
- Split Chinese translations to Simple and Traditional
- Minor fader redesign (use thinner handle with white line)
- Use
reproc_run_ex
API for running external commands - Update minimum reproc dependency version to v14.1.0
- Change how knobs and bar sliders get their values (add snapped getter)
- Add scrollbars to port selector popover
- Fix scales not being editable
- Fix issue with editing markers
- Fix invalid knob drawing when zero point is negative
- Fix range action not being initialized on project load
- Fix enabling/disabling the port connection in port connections popover not being undoable
- Fix missing icon for Add button in port connections popover
- Fix drag n drop of chords from the chord pad into the timeline not working
- Add recording mode selector
- Show line numbers in backtraces when possible
- Add recording test
- Add tooltips to track buttons
- Implement autofill for piano roll and timeline
- Implement free drawing in velocity editor
- Implement free drawing in automation editor
- Enable VST3 on GNU/Linux
- New optional dependency: lsp-dsp-lib
- Add chord pads
- Play chord on selected track when chord pad is pressed
- Allow drag and drop from chord pad to MIDI/instrument tracks
- Allow dragging MIDI and audio files directly into the timeline
- Add region merge action
- Refactor recording code: use pause/resume for punch in/out and looping
- Update Portuguese, German, Japanese, Italian translations
- Use libaudec with minimp3 for mp3 import support
- Only create undoable action when all recording is finished (instead of per track/automation track)
- Ensure that recorded audio clip name is unique (fixes recorded audio being lost due to writing to the same file)
- Use SIMD-optimized DSP routines when available through lsp-dsp-lib
- Update user manual
- Ensure all drawn arranger objects are at least 1 pixel
- Process UI events immediately when performing actions
- Simplify code of conduct
- Fix segfault when opening project from the edit menu
- Fix backtrace memory leak on Windows
- Fix track solo not being drawn as hovered when hovered
- Fix Carla Rack (LV2) segfault on UI close
- Fix same descriptor instance being added to both cached VST descriptors and plugin manager
- Fix automation point coordinates sometimes being negative when drawing in the automation arranger
- Arranger: fix
region_at_start
not being set to NULL after freeing - Fix crash when moving tracks when clip editor region was in the affected tracks
- Recording: fix track pause events being sent when nothing is being recorded
- Fix crash when undoing deletion of tracks with LV2 plugins with worker interfaces
- Remove ffmpeg dependency
- Remove libgtop related code
- Add plugin gain port
- Add scroll wheel support for fader
- Add mono compat switch on group tracks and master
- Add insert silence/remove range actions
- Add mono toggle and gain knob on audio track inputs
- Add test for audio track deletion
- Add new widget for buttons with menus
- Add volume slider for metronome
- Add punch mode switch to record button for punch in/out recording
- Ruler: add option to switch to real time display
- Refactor fader buttons into separate widget
- Show host system type in version info
- Check number of ports are the same when cloning plugins
- Hard limit master bus and monitor out to +6db
- Allocate system command output instead of passing buffer
- Integrate new icons
- Revise trademark policy to allow modifications by FSF-approved distros or for fixing acknowledged bugs and CVE vulnerabilities
- Update bot panel tab tooltips
- Refactor recording code: split cycle at punch and loop points
- Update Arabic, Portuguese, Interlingua, Norwegian translations
- Only enable external audio input when audio track is rec-armed
- Fix range not being drawn properly in ruler when scrolling horizontally
- New dependency: reproc
- Add None output to direct outs
- Add test for finding installed LV2 plugins
- Add test for copying plugins
- Add VST tests
- Bump meson version requirement to 0.55.0 (for reproc cmake subproject)
- Use reproc to run processes with timeout instead of glib
- Updated German, Portuguese, Chinese, Japanese, Spanish, French translations
- Change trial period to 30 minutes
- Do soft graph recalculation when plugin latency changes (wait for pause if playing)
- Don't save log contents in memory
- Use GtkSourceView for log viewer
- Use shared lib when linking tests (dramatically improves linking time)
- Don't show backtraces in the log file
- Let children signals pass through when group track is soloed
- Show latencies in exported graphs
- Do not recompute JACK latencies during plugin processing
- Show warning instead of critical when carla plugin discovery fails
- Fix carla rack not being instantiated as an instrument on the track
- Fix arranger selections not being initialized for some actions
- Fix multiple non-fatal errors on windows on first run
- Fix VST scan sometimes hanging on Windows
- Fix crash when muting instrument tracks
- Fix LV2 plugin ports with URI parameter throwing warnings
- Fix child tracks not being disconnected or reconnected when deleting a group track and undoing
- Fix sends not being removed/readded when deleting the target track and undoing
- Fix sends being lost on undo after sending track is deleted
- Fix custom port connections not being restored when undoing track deletion
- Fix Carla plugin UIs not being shown on top
- Fix DSP thread becoming deadlocked when nodes with playback latency exist
- Fix metronome occasionally receiving invalid positions
- Fix recording action not being free'd on exit (causing warnings)
- Fix issue when loading project with Noisemaker VST
- Fix direct outs not being updated properly when moving/duplicating/deleting tracks
- Fix playback latencies not being calculated properly
- Fix number of frames miscalculation when starting playback when playback latencies exist
- Fix duplicated plugin not being activated
- Fix plugin identifier not being taken into account when searching for automation tracks from a port
- Fix piano roll port not being connected to track processor in the graph
- Allow routing from chord track to instrument tracks
- Integration test for creating/deleting tracks using Helm
- Add additional checks when tracks are added to the project
- Add shift-selection for selecting multiple tracks or channels
- Add option for level of UI detail (improves CPU usage on lower end machines)
- Show bug report dialog on non-fatal errors
- Add tests for creating plugins and port connection actions
- Make port connections and channel sends undoable
- Show error if icon is not found at startup
- Add authors to credits section in the manual
- Add Guile API for creating sends between tracks, connecting ports between a plugin and a track, and creating tracks as undoable actions
- Add Guile test runner
- Add Trademark Policy for Zrythm wordmark and logo
- Add option to override the program name
- Refactor: add
is_project
to many objects - Use weakjack on Windows
- Add version requirement on RtAudio dependency
- Only create MIDI notes on track 1 when exporting a MIDI region
- Update German, Galician, Japanese translations
- Print function name and line number in the log
- Open plugins that require the KX UI interface with carla
- Various drawing optimizations (by passing integers to cairo)
- Use configuration file for tests
- Each plugin instance now has its own state directory, including non-project plugin instances
- Save plugin states when plugin instances are created
- Ignore sysex messages from LV2 plugins for now
- Update Guile API docs with more examples
- Catch invalid SFZ/SF2 paths instead of crashing
- Add detailed license information for each icon
- Fix crash when undoing twice after deleting a track
- Fix crash when creating a new plugin fails
- Fix MIDI note offs not being sent at the right time when moving MIDI notes
- Fix issues with initialization of undoable actions when loading projects
- Fix crash when closing Zrythm after resizing an automation region
- Fix automation tracks not being cloned properly
- Fix crash when undoing track deletion with automation
- Fix automation regions not properly duplicated when duplicating tracks
- Fix MIDI file import on Windows
- Fix loading new projects from a loaded project
- Fix an issue with exporting
- Fix crash when connecting a plugin CV out port to another track's balance control
- Fix automation track ID track positions not being updated when moving plugins from one track to another
- Fix passing a project file as a command line argument not working
- Fix crash when moving tracks
- Fix editor not being refreshed when region owner track is deleted
- Add tempo track for BPM automation
- Time-stretch audio regions in musical mode in real-time
- Add musical mode selection to region context menu
- Add --gdb, --cachegrind, --midi-backend, --audio-backend, --dummy, --buf-size and --interactive command line options
- Add plugin browser context menu to open plugins with carla
- Move mute and solo ports from track to fader
- Add initial processor to routing graph
- Routing code refactor: split to smaller files and simplify
- ZrythmApp refactor: split code to Zrythm and ZrythmApp
- Events code refactor: split to Event and EventManager
- Other refactoring to allocate/free resources properly
- Update French, Portuguese, Norwegian translations
- Draw musical mode icon on regions
- Disable region draw caching
- Use cyaml v1.1.0 or above for precise float/double serialization
- UI: make channel slots and sends shorter
- Allow multiple Zrythm instances to be opened
- Use the same naming scheme as native plugin UIs for carla plugin UI titles
- Audio regions are now created at the playhead when creating new tracks
- Use
get_state
/set_state
for saving/loading the plugin state for carla plugins
- Fix editor quantization
- Fix various memory leaks
- Fix MIDI file export
- Fix mute/solo not affecting the fader
- Fix audio recording
- Fix undo stack initialization when loading projects
- Fix initialization of recorded regions on project load
- Fix issues when resizing audio regions
- Fix crash when cutting regions
- Fix MIDI note positions being global instead of local during recording
- Fix crash when undoing after using the eraser
- Fix double instantiation of plugins when adding new tracks
- Fix range selection
- Fix crash when deleting a chord region
- Add image-missing fallback if icon is not found
- Add build flag for extra optimizations
- Show red reading in meters if peak above 0db, grey otherwise
- Show native CPU usage meter on MacOS
- Show build type in
--version
- Add VCS tag fallback version if git is not found
- Make BPM changes undoable
- Make changing the automation curve algorithm undoable
- Show chord notes in chord editor lanes
- Show color gradient in meters
- Fallback to older compression API if zstd version is lower than 1.3
- Don't attempt to build manpage on windows
- Update French, Portuguese, Galician translations
- Log to stderr until log file is initialized
- Ask for LV2 plugin latency by passing block length instead of 2 samples
- Underscorify and simplify build flags
- Don't allow multiple preferences windows
- Use LINGUAS file to determine available locales for meson
- Open KX external UIs with carla
- Make markers, chords and scales rounded rectangles
- Use peak meter in mixer channels and RMS meter for master with falloffs (algorithms from x42 meters)
- Chord editor now has 12 fixed chord slots
- Accents in the chord creator are now toggled on single click
- Only resize audio regions when BPM change is completed (in musical mode)
- Use MPMC queue instead of a stack for queueing up objects to be deleted with
free_later()
- Deprecate libgtop support
- Fix zstd library discovery
- Fix setting integers on gsettings keys expecting booleans
- Fix CPU meter on windows
- Fix various crashes with chord editor
- Fix freezes when using RtMidi on Windows
- Fix various MacOS issues
- Fix scales not saved properly
- Fix moving tracks clearing regions of tracks being moved
- Fix undo/redo when moving tracks
- Fix MIDI note on incorrectly being fired at transport loop point
- Add real time display to playhead meter
- Add error handling when project fails to load
- Add missing actions in automation editor
- Add undoable region stretching and related cursors
- Add option to return to cue point on stop
- Add integration test for loading and playing back MIDI files
- Add CLI commands to convert between .zpj and .yaml
- Don't attempt to draw fades if there are none
- Huge update of the user manual
- Update French, Japanese translations
- Use a semaphore to lock port operations during do/undo
- Make
free_later()
traverse the stack in a non-GTK thread to avoid UI freezes when many objects are free'd - Bridge all GTK/Qt plugin UIs with carla
- Auto-generate list of translators for about dialog from the TRANSLATORS file
- Cache drawing of audio regions to prevent freezes when multiple regions are on the screen
- Update build instructions for Windows
- Use zstd to compress Zrythm project files
- Remove cached positions from arranger objects
- Remove breeze icons from distribution (now a runtime dependency)
- Fix sends being lost when moving tracks
- Fix extension not properly extracted for filenames with multiple dots
- Fix VST scanning in user home dir
- Fix gcc 10 warnings/errors
- Fix various issues with LV2 plugins loaded through carla
- Fix bounce on tracks with carla plugins
- Fix MIDI note off occasionally ignored
- Fix snap points not being updated when BPM changes
- Fix build with RtAudio but without RtMidi
- Fix rtaudio input devices with the same name being string-matched as the selected output device
- Install freedesktop-compliant icon theme
- Allow icon theme customization through user overrides
- Preset/bank selector in plugin inspector
- For unsupported UIs, bridge only UI if possible, otherwise bridge whole plugin
- Use comma to separate paths on windows
- Rename meson options to use dash instead of underscore
- Don't use jack2-only API
- Fix build with
user_manual
option - Fix deleting midi notes removing other notes
- Fix balance control reset not working
- Add AU, VST2, VST3 support for MacOS
- Add SFZ and SF2 support
- Option to bridge unsupported UIs as an external process
- Automation curves are now grabbable only if the cursor is near them
- Project backups are now saved asynchronously
- Show localized strings with
-p --pretty
- Show switches instead of checkboxes for toggle ports in generic UIs
- Use Guile to generate gsettings schema
- Use meson features instead of booleans for optional dependencies
- Generate preferences window automatically
- Use system locale on first run
- Change default Zrythm path to XDG data home specification
- Change libcyaml dependency version to allow newer versions
- Update Japanese, Galician, German, Spanish, Chinese translations
- Fix using incorrect paths on Windows/MacOS
- Fix moving multiple automation points setting them all to the same value
- Fix deleting instrument track not deleting instrument UIs
- Fix MIDI FX ports not being added to routing graph
- Fix crash on systems with > 16 CPU cores
- Fix generic UI windows being shrinkable beyond control visibility
- Add MIDI FX section in track inspector
- Add comment field in track inspector (WIP)
- Remember reveal status of track inspector sections
- Zrythm is now user themable on XDG base dir-compliant systems (
$XDG_CONFIG_HOME/zrythm/theme.css
) - Add button to export routing graph as image or dot graph
- Add MIDI pitch bend and modwheel automatables to MIDI-capable tracks
- Make gtksourceview mandatory
- Instruments go on a special slot instread of in the inserts
- Don't allow plugins with non-matching output type in channel slots
- Channel sends now work as single stereo/MIDI bundle instead of separate ports
- Zrythm theme is now installed externally instead of bundled as a resource
- Bug reports now include last few lines of log
- Process automation when the control port is processed instead of collectively at the start of each cycle
- Deprecate VST support without carla
- Fix VST plugins not scanned in distros whose libdir name is not
lib
- Fix first MIDI note ignored on Windows during export
- Fix edit cursor positioning
- Add full vst2 support via carla (32bit and 64 bit)
- Add experimental vst3 support via carla (windows only)
- Show inserts in track inspector
- Add fader section in track inspector
- Re-layout channel widgets
- Add style scheme for scripting interface
- Split status bar info to 2 lines
- Show currently scanned plugin in splash screen
- Update Galician translations
- New layout: move transport bar to the bottom
- Split inspector stack pages to separate notebook pages
- Add plugin bypass option
- Add region linking
- Add region/midi note muting
- Implement cut-paste for arranger objects
- Add script examples to manual
- Expose midi track/region/midi note creation to guile interface
- Use GtkSourceView for scripting interface
- Show exception and backtrace when script execution fails
- Add cut/copy/duplicate/delete options to arranger context menus
- Make channel slots shorter
- Update Portuguese, German, Norwegian translations
- Fix installation failure when using
enable_manual
- Fix FX track being created instead of MIDI when MIDI plugin is instantiated
- Fix copy-paste not working
- Fix function snarfing for guile interface
- Show peaks in meters
- Show units in generic UIs for LV2 plugins when available
- Show track control ports in the inspector
- Add automation recording functionality
- Add scripting functionality with guile
- Add guile API docs to the manual
- Convert some scripts from python to guile
- Update Galician, Russian translations
- Fix calculation for logarithmic ports
- Fix mute status not showing on the track
- Add option to bounce material to audio
- Add cability to fade in/out audio regions
- Add capabilities to version info in bug report links
- Implement ctrl + arrow keys movement in arrangers
- Run work from LV2 workers immediately when freewheeling
- Show description in
--print-settings
- Add
--pretty
option for colored output - Add various curve algorithms selectable via right click
- Use check menu items instead of stars to indicate current selection
- Don't allow removing the last visible automation track
- Use boolean instead of int for booleans in gsettings
- Add tests for curve algorithms
- Use
GSETTINGS_SCHEMA_DIR
in the desktop file - Make gschema translatable
- Update French, Galician translations
- Fix crash when attempting to load MP3 files when built without ffmpeg
- Fix crash when opening preferences when the selected backends are not compiled into the current version
- Fix automation curves being cut off at the end
- Fix crash when moving marker track
- Fix solo buttons
- Show capabilities with
--version
- Write queued logs periodically instead of on every UI cycle
- Add
--reset-to-factory
and--print-settings
options - Add bash completion script
- Add more info to the manpage
- Implement ctrl+D for duplicating events
- Allow movement of events with arrow keys
- Add all languages to the language selection with native spelling
- Make undo history serializable and unlimited (off by default)
- Add sub-tick precision to positions
- Add eg-fifths to plugin tests
- Add tests for saving/loading projects
- Added Galician translation
- Update Japanese translations
- Fix crash on project load
- Add RtAudio support
- MacOS release
- Show plugin slot in the window name
- Only show 1 XRUN message per 6 seconds
- Allow using shift to set more precise values in faders and balance widgets
- Add log viewer
- Only write logs in the GTK thread (possibly fixes occasional XRUNS)
- Don't allow JACK MIDI to be selected with non-JACK audio backend
- Bring back original file browser
- Update splash screen and about menu graphics
- Add export test
- New Spanish translations
- Fix track positions on other tracks not getting updated after deleting a track
- Fix routing graph not being recalculated after loading a project
- Fix automation tracks getting duplicated on project load
- Fix build failure with -fno-common
- Fix markers not being renamable
- Add option to passthrough MIDI channel on MIDI tracks and lanes
- Add delete button in port connections
- Add hack for showing a dark window behind plugin windows on Windows (temporary solution for plugins with transparent backgrounds)
- Add port info and object info dialogs
- Refactor arranger objects to use indices instead of pointers
- Add ability to double-click on tracks to rename
- Add tests for audio regions and moving regions to other tracks
- Add tests for plugin operations
- Copy/move automation to the new track if plugin is moved/cloned
- Allow moving plugins to empty space to create a new track
- Show port name instead of port symbol in the inspector for LV2 plugins
- Only send time info to LV2 plugins that want it
- Only serialize VST descriptors at the end of the scan instead of after each scanned plugin
- Support LV2 trigger, toggle, notOnGui and integer port properties
- Connection multipliers now apply to audio and CV ports too
- Recording audio or MIDI data is now undoable
- Convert channel mute, volume and stereo balance to automatable control ports
- Remove bundled libcyaml and use a meson wrap instead
- Fix crash when clicking Add to add a port connection
- Fix crash when handling state files for plugins with illegal chars in their name
- Fix audio regions getting resized by a few samples when moved
- Fix undo causing a crash after importing MIDI files
- Fix live waveform display showing the opposite values (upside down)
- Fix ctrl+clicking unselected objects not selecting them
- Fix crash when loading a project with duplicated tracks
- Fix incorrectly allowing plugin ports to connect to ports of the same plugin
- Fix bug with hiding and showing tracks
- Fix missing icon on GNU/Linux and FreeBSD
- Fix LV2 plugin support on Windows
- Fix arranger objects getting deleted when deleting a plugin from the mixer
- Fix original regions not getting shown when ctrl-dragged regions move out of sight
- Fix LV2 plugins not getting scanned properly on Ubuntu 19.10
- Fix crash when metronome samples are not found
- Fix channel direct outs not getting stored properly
- Fix support for LV2 external UIs
- Fix crash when selecting audio input
- Update Spanish, Japanese, French translations
- Add MIDI file import
- Add timeout when scanning for VST plugins
- Add VST2 path selection for Windows
- Add samplerate, device and buffer size options for SDL2 backend
- Add flag to compile a trial version
- Fix VST preset changes not remembered during saving
- Don't scan for plugins before the welcome dialog has been completed
- Fix piano roll remaining opened when its region's track is deleted
- Fix Windows MME MIDI events getting dropped if they are late
- Fix crash when creating an audio track when more than 60 audio inputs exist
- Fix crash when loading projects with audio files
- Fix audio track duplication warnings
- Fix autosave not working
- Fix crash when selecting Windows MME device in track inputs
- Fix crash when dragging plugins in mixer after loading a project
- Add editing info to the manual
- Update French, Japanese translations
- Add undoable plugin delete action
- Send time info to VST plugins
- Make VST parameters editable from the inspector
- Make VST parameters automatable
- Hardcode standard LV2 and VST paths
- Start logging earlier during initialization
- Add English UK translation
- Update Chinese and Japanese translations
- Fix VST plugin window not getting closed when plugin is deleted
- Fix crash when cloning VST plugins
- Fix window and exe icons not showing on Windows
- Fix KX studio LV2 UIs crashing on load
- Fix VST scanning not working on Windows
- Fix localization not working on Windows
- Fix broken WAV export
- Fix VSTs not receiving correct sample rate and block length
- Fix fullscreen action
- Add SDL2 audio backend
- Add experimental Windows VST support
- Close VSTs properly before freeing the library
- Fix non-instrument VST plugins being shown as instruments
- Fix cached VSTs getting ignored
- Fix Windows MME MIDI timings
- Fix unavailable backends shown as available
- Fix buffer overflow when more than 16 hardware audio ports exist
- Fix metronome playback being triggered at negative offsets causing crashes
- Update Zrythm logo
- Wrap backtrace on crash inside scrolled window
- Convert MIDI channel of input events to the track's channel when playing live
- Add VST descriptor caching to make scanning faster
- Add VST blacklist for plugins that fail to load
- Fix some memory leaks
- Fix audio and MIDI backend selection using wrong values in different platforms
- Add experimental VST2 support (X11 UIs only)
- Previously visible plugins now open on project load
- Fader and pan controls are now exposed as ports
- Add option to listen to notes while dragging them in the piano roll
- Hide uneditable port connections from the inspector
- Show visible track count above the track list
- Allow vertical resizing of piano roll
- Use lilv subproject
- Made black rows darker in piano roll
- Allow older GTK versions (works on Debian 9)
- Fix Windows build
- Fix using symbolically linked icons in compiled resources
- Updated French and Portuguese translations
- Add Greek translation to the manual
- Add toggle for musical mode
- Add separators in timeline toolbar
- Send control change events to plugin UIs when automating with CV (UIs now get refreshed properly)
- Fix crash when opening a project created with a different backend
- Fix a few functions returning invalid memory
- Fix crash during graph validation when connecting ports
- Fix UI events wrongly being fired after the Zrythm window closes (causing mini-crashes on exit)
- Fix crash when resizing automation regions
- Fix timeline minimap incorrectly changing the editor zoom level
- Fix crashes during audio recording
- Fix toggling visibility of panels not working
- Fix broken randomization slider in the quantize dialog
- Set minimum required meson version
- Add xdg-utils dependency
- Update French, Portuguese and German translations
- Make Zrythm icon more symmetric
- Auto-stretch audio regions when changing BPM
- Make position calculations more accurate
- Handle recording in the GUI thread instead of the RT thread
- Don't autosave during playback
- Fix automatable selectors not working in automation tracks
- Fix automation track add and remove buttons
- Fix audio regions not being drawn
- Fix audio arranger not getting its full size
- Fix balance controls in the mixer incorrectly attennuating stereo signals
- Fix monitor out knob not working
- Update user manual
- Update French, Japanese, German and Portuguese translations
- Remove unnecessary qt5 dependency
- Remove unused source files
- Major rework of arrangers (arrangers are now canvases)
- Major rework of how tracks are drawn (single canvases)
- Drawing optimizations for arrangers and other widgets
- Refactor of arranger object widget code
- Refactor arranger objects to make operations simpler
- Use an MPMC queue with an object pool for UI events to make it RT-safe
- Make automation points prettier
- Use libaudec for reading and resampling audio files
- Add ability to resize individual track lanes
- Add bundled plugin ZLFO
- Add option to use system fonts or bundled
- Use RT-safe ring buffer for remembering audio and MIDI data from the RT thread
- Add output meters to tracks
- Optimize some math calculations
- Add sr.ht builds
- Remove libdazzle docks
- Fix build issues with Gentoo and FreeBSD
- Fix lag during playback when many objects are on the screen
- Fix random crash and glib warnings on startup
- Fix plugins with CV ports not getting serialized properly
- Fix license headers on some files incorporating work from other projects
- Fix mixer meters occasionally blinking to -inf
- Various other bugfixes
- Add ability to pin and unpin tracks
- Allow copy paste of MIDI notes and chords
- Allow creating a new project while Zrythm is running
- Allow binding of MIDI CC messages to controls
- Add some tests for arranger selection actions
- Add meson option to run stoat
- Change port buttons to sliders (editable for controls)
- Add detailed tooltips for ports in the inspector
- Make GUI tests optional when enabling tests
- Make RMS calculations more accurate
- Allow to set position from the editor
- Show local position in the editor during playback
- Huge code refactor of arranger objects
- Automation curves are now merged into automation points
- Pass control change events to LV2 plugin UIs when changing from inside Zrythm
- Refactor of region drawing code
- Refactor of lv2 plugin code
- Fix generic UIs not getting updated when control values change during automation
- Fix auto-connecting to MIDI devices
- Fix crash when zooming in too much with regions visible (MIDI regions only for now)
- Fix various bugs with chord objects
- Fix crash when clicking in empty tracklist
- Fix crash when saving a project after cloning a track
- Fix curves not getting redrawn when moving automation points
- Update Portuguese, French, Arabic, Polish, German translations
- Add fishbowl benchmark tests for widgets
- Optimize and cache various widgets
- Make clicking on plugins in the mixer more responsive
- Add event viewers for the timeline and editors
- Fix channel slot names not displaying
- Fix track routing getting ignored when record is not armed in the targe track
- Update Japanese translations
- Use a lock-free queue while processing instead of a mutex
- Add caching where pango is used to draw text
- Add
ZRYTHM_DSP_THREADS
,NO_SCAN_PLUGINS
andZRYTHM_DEBUG
environment variables - Add .zpx and .zpj extensions for Zrythm projects and packages
- Add option (on by default) to keep plugin windows on top
- Move file browser to popup window instead of right panel
- Show plugin scan progress
- Make panel icons larger
- Change plugin window titles to show track name, plugin name and preset, if any
- Various optimizations
- Add some missing dialog icons
- Add additional checks in the project assistant
- Export in chunks when exporting the project to audio
- Fix MIDI note staying on after region ends
- Fix crash when no hardware ports found
- Fix error when project list is empty
- Fix panels getting weird positions when hiding and re-showing
- Fix various memory leaks
- Fix osx build
- Fix crash when clicking piano roll key labels
- Fix some crashes when duplicating tracks
- Fix graph getting recalculated twice when clicking on a region
- Fix crash when trying to add a port connection
- Fix grab broken warnings when clicking on a MIDI note after project load
- Set GTK dependency to 3.24
- Clean up log messages
- Make
config_h
a meson dependency to ensure it gets generated before building sources - Add tests for MIDI track and position
- Add caching for drawing automation regions
- Allow direct routing from midi track to instrument track
- Move issue tracker to Redmine
- Send MIDI note offs 1 sample before the loop/region ends
- Add additional checks when connecting monitor outs to JACK
- Move MIDI channel selectors for tracks and lanes in context menus
- Updated to new libcyaml (allow-null feature)
- Fix pan widget not setting the right values
- Fix moving of tracks to not skip space in-between or space after the last track
- Fix MIDI note on being sent at the end point of the region
- Fix MIDI note still playing if its end point is after loop end
- Fix qsort comparison regression
- Fix various automation-related bugs
- Fix piano roll keys not sending correct MIDI channel
- Fix various chord object-related actions
- Fix chord regions not getting loaded properly
- Fix plugin slot not getting serialized for LV2 port IDs
- Fix warning messages while playing back MIDI regions
- Minor refactoring
- Add audio recording functionality
- Add track processor for processing track input ports and recording
- Add input selectors for audio tracks
- Add global spacebar key binding for play and pause
- Add warranty disclaimer on first run
- Add warning in the Preferences when selecting a language for which a locale is not installed
- Add News button that points to the CHANGELOG
- Go to previous marker if backspace is pressed twice
- Allow undoable moving and copy-moving of regions to other tracks and other lanes
- Move panel toggles to View toolbar
- Only allow tracks with audio outs to be routed to Master
- Fix audio clip import and playback
- Fix MIDI recording
- Fix record not getting disarmed when clicking on another track
- Fix mute/solo not working properly
- Fix splash screen problems in ubuntu
- Create hard links for identical files in the user manual
- Remove unused x42 plugins from distribution
- Update French, German, Japanese, Portuguese translations
- Add ability to select MIDI channel for the piano roll per track and per lane
- Add direct out in the track properties
- Add audio pool (WIP)
- Use GtkFileBrowserWidget for the file browser
- Add optimization flags for release builds
- Add stricter compilation flags for normal builds
- Fix song export
- Fix loading backup projects containing plugins
- Fix loading a project while Zrythm is already running
- Fix allowing to select projects that don't exist in the project assistant
- Add additional checks for the pre-release scripts
- Use installed suil if available instead of local one
- Update parts of the documentation
- Update French, German, Portuguese translations
- Switch from AGPL to GFDL for the user manual
- Add option to resize regions normally or to resize-loop
- Add warning when loading a project made with a different version of Zrythm
- When creating a new project, immediately save it
- Add check for failure in the selected backends when launching Zrythm and revert to dummy backends
- Print the actual MIDI message when an unknown message is received
- Append a number to the filename to be exported if a file already exists
- Fix piano roll key press events not getting propagated to the channel
- Fix moving notes emitting unnecessary MIDI events
- Fix basic copy-paste in the timeline
- Fix regions not getting moved to the new track after moving track position
- Fix loop selection not taking into account the end position of the last selected object
- Fix bar 1 not getting drawn in the ruler
- Fix split cursor remaining enabled after alt tabbing
- Change region resize behavior when moving the left edge to add space instead of move the items
- Add MIDI bus and MIDI group tracks
- Update the user manual
- Update German, Portuguese, French, Japanese, Norwegian translations
- Add autosave (backup) mechanism
- Add support for project templates
- Allow exporting whole project as MIDI
- Add functionality to open the directory after exporting
- Add popup to choose to load the backup if it is newer than the loaded project
- Add dialog for choosing parent directory and name when creating new projects
- Move panel toggles to the top of zrythm
- Fix requiring GTK 3.24 for no good reason
- Update German, Portuguese, Norwegian, Polish, French, Japanese translations
- Add alt and click to cut region in half
- Allow further zooming in and out
- Show sixteenths in the ruler when zoomed
- Changed status bar to show audio engine info instead of tips
- Add song start and end markers
- Remember left and right panel divider positions
- Add Zrythm path to preferences dialog
- Add export progress dialog
- Install mime type for Zrythm projects
- Fix saving and loading of simple projects
- Fix piano roll not getting full height
- Fix some arrangers not getting their full width when zoomed
- Fix tracks getting deselected when clicking on empty space
- Remove project info screen from the startup dialog
- Refactoring of arranger objects
- Fix various minor bugs
- Fix some incorrect and unclear license notices
- Updated Portuguese, Italian, German, French, Norwegian translations
- Piano roll now opens centered on middle C
- Add context menu option for exporting MIDI regions into MIDI files
- Add track visibility panel and option to hide track in the track context menu
- Make track name editable by double clicking on it in the track
- Add ability to move tracks inside the tracklist
- Double clicking on regions now brings up the bottom panel if hidden
- Make MIDI track functional
- The monitor fader in the control room section is now operational and the level is persisted
- Add inputs section in each recordable track to choose input device for recording
- Add input MIDI channel filter on MIDI and instrument tracks
- Add meson target for collecting translatables
- Use track/plugin/port or track/port designation for ports
- Ellipsize text in various places to prevent overflow of widgets
- Change donate dialog to direct link to LiberaPay
- Add some missing tooltips
- Show selected track info (master by default) on startup
- User manual button now opens manual locally if installed
- Add ability to scroll with mousewheel to change values in meters
- Change chatroom link to point to the new chatroom
- Add meson version dependency
- Grid now adapts to zoom level
- Bug report link now prefills the report
- Use git version and commit hash as the version string if available
- Fix piano roll key shade not going away and not being able to click and hold to play multiple keys
- Fix JACK ports not getting renamed after a track gets renamed
- Fix splash screen and lock track icons not showing
- Fix auto-scroll in piano roll
- Fix piano roll events being sent to channel 2 instead of channel 1
- Fix some regressions
- Arranger object refactoring and minor fixes
- Signal flow refactoring and bugfixes
- Updated Japanese, French, Portuguese, German translations
- Add MIDI out ports to channels and to JACK/ALSA
- Add JACK transport functionality (timebase master and client)
- Add scrollbar for ports list
- Add option to expose ports to JACK
- Add pre-fader/post-fader sends
- Add manpage
- Add compiler info to version string
- Add locked and enabled port connection attributes
- Show track ports in the inspector
- Move user manual from separate repository to this distribution
- Convert port connection knobs to sliders
- Check if port connections break acyclicity before connecting them
- Fix guitarix plugins crashing (add dependency to fftw3)
- Fix regression causing backward/forward button to not work properly
- Fix crash when deleting bus track with plugin
- Show dialog with backtrace when crashing
- Fix old frame positions getting used after BPM changes
- Fix ALSA output being silent
- Update German, Japanese, French translations
- Plugin latency compensation during playback
- Chords and automation are now inside regions (can be looped)
- Refactor editor panel to share 4 different editors
- New chord editor
- New automation editor
- Change meter font and install it properly (should fix missing font in previous versions)
- Added some post-install commands to make sure Zrythm is installed properly
- Add region split functionality (WIP)
- Add quick quantize/full quantize functionality (regions only for now)
- Add metronome
- Update Chinese, German, French, Japanese translations
- Fader is now a separate processor in the signal chain
- Fix browser resize handle position not getting stored properly
- Fix incorrect loop range being shown in the editors
- Desktop file is now localized
- Add PACKAGING.md for packagers
- Fix plugin UI controls moving back and forth while changing them
- Fix crash when copying a region
- Fix pressing stop twice not moving the playhead to the cuepoint
- Fix many other bugs
- Add missing copyright/license notices in source files
- Refactoring, remove some unnecessary files
- IMPORTANT: License change from GPLv3+ to AGPLv3+
- Add cut-clip tool (WIP)
- Add Norwegian in language selection
- Update German translations
- Update Norwegian translations
- Update Japanese translations
- Allow undoable individual MIDI velocity changes
- Add undoable MIDI velocity ramp feature
- Fix some undo/redo bugs
- Refactor of arranger objects
- Fix basic saving/loading of projects
- Fix duplicate projects getting displayed in the project list in some situations
- Refactor automation tracks
- Change appearance of meters (added captions, made the text smaller)
- Change appearance of DSP/CPU meter (used icons insted of text)
- Allow undoable moving of arranger objects using the selection info bar
- German translations thanks to Waui (Weblate)
- Change appearance of plugin browser (using toggles instead of expanders)
- Add MIDI in activity bar in the top toolbar
- Allow filtering by plugin type (instrument/effect/modulator/midi effect) in the plugin browser
- Norwegian Bokmal translations thanks to kingu (Weblate)
- Remember plugin browser selections on each run
- Drop windows support
- Add markers
- New design for chords/scales
- Change appearance of track icon (changes color to contrast track color)
- Write backtrace to log file when crashing
- Fix undo/redo issues when creating objects
- Highlight loop area
- Fix crash when creating automation points
- Automation curves now start as straight lines
- Make automation curves change slower when clicking and draging (better precision)
- Can now connect more than one modulator to a plugin parameter
- Can now set depth of modulation
- Fix some undo/redo bugs when duplicating objects
- Fix modulator size issue
- Add stack switcher in the inspector (track/editor/plugin properties)
- Can now move the playhead to the next/previous marker with numpad 4 and 6
- Add Chord and Scale objects in the arranger
- Add Chord and Scale selector popups
- Add highlighting in the Piano Roll based on current Chord/Scale
- Create flatpak (WIP)
- Fix minor Timeline bugs
- Fix some missing icons
- Update Japanese and French translations (thanks sub26nico and trebmuh)
- Add meson command to build dev docs
- Simplify MIDI note and region operations (internally)
- Add tests for midi notes and regions
- Make panels foldable by clicking on their tabs (#294)
- Add selection info bar for piano roll
- Add support for ALSA audio and MIDI (sequencer) backends
- Rewrite internal MIDI operations to be agnostic of the MIDI backend
- Fix issues with plugins crashing or not loading (due to missing compilation flags)
- Add live MIDI activity indicator to each track
- Fix MIDI note continuing to get played if moved while it's playing (WIP)
- Fix various minor bugs in the arrangers (ctrl+zoom, playhead z-position and others)
- Switched from autotools to meson
- Fix all compiler warnings
- Fix snapping miscalculation where an off-grid selection would not snap to the grid but move by 1 snap point instead
- Fix some memory leaks
- Implement new system for showing arranger objects where each object holds pointers to its transients and lane counterparts
- Each track can now have multiple lanes
- Remove DISTRHO ports from tree
- Add additional pinned timeline above the main one
- Show icon of track inside its color box instead of next to it
- Add option to generate coverage reports
- Remove google fonts from docs
- Code cleanup
- Add Control Room functionality (WIP)
- Add Contributing Guidelines to the docs
- Add Modulator tab for automating plugin controls (WIP)
- Implement backward/forward button functionality
- Update French translations
- Fix Windows build
- Remove libsmf from tree and import midilib
- Fix for Debian and other distors where tooltips were not showing and CPU meter was flickering
- Implement Drum Mode in the piano roll (works but WIP)
- Fix windows build
- Fix plugin getting removed from channel when moving the track
- New inspector UI (WIP)
- Can now connect ports from one plugin to another (CV to Control too)
- Change region appearance to show name inside dark background
- Added clang build to CI
- Show other regions in the piano roll (continuous view)
- New UI for developer docs (https://docs.zrythm.org)
- Use tabbed (notebook) toolbar instead of standard File/Edit/etc. #79
- Merge new French translations
- Add timeline selections info bar (WIP)
- Rearranged layout to make each sub-window self-contained
- Can now show/hide the timeline (fullscreen piano roll)
- Fix FreeBSD build failures
- Fix crash on region duplication
- Fix duplicated MIDI notes not getting selected
- Fix piano roll not becoming active when clip editor is loaded
- Merge new libcyaml for bitfield support when saving projects
- Created expander box widget for use in the inspector/channel strip
- Major changes in some internals of Zrythm (expect regressions)
- Most actions are now undoable
- Don't send UI updates to LV2 plugins until they get initialized (fixes Helm warnings)
- Plugins in the Mixer are now selectable and movable/duplicatable
- Can now route the output of channels to other channels
- Add more languages (Portuguese, Russian, Chinese)
- Update French translations thanks to sub26nico
- Channels/tracks are now movable/draggable (in the mixer only atm) - multiple channels can be moved at the same time
- Fix #242 compilation error on FreeBSD
- Made regions and midi notes prettier
- Fix numerous bugs
- Output logs to a file in zrythm main folder
- Multiple regions can now be resized simultaneously
- Minor bugfixes for MacOS
- Defer deletion of some objects to give them time in case they are still used (fixes some warnings/algorithms)
- Fix all compiler warnings
- Use GAsyncQueue for event processing instead of custom event stack
- Fixed pan calculation unnecessarily being done multiple times per second (pan processing is much faster now)
- Implement sine law pan, square root pan and linear pan algorithms
- Option in preferences to choose the Pan Law and Pan Algorithm
- Clear buffers before sending them to the back end (this will probably prevent artifacts from appearing in some situations)
- Routing changes (such as adding a new plugin) no longer block the audio engine
- Fix crash when creating MIDI notes
- Use zix library from its repo instead of embedded in source code
- Fix/improve the auto-connect logic when routing in the mixer changes (including the logic for handling mono plugins)
- Plugins can now be moved to other slots (or channels) in the mixer (undoable)
- Creating plugins is now undoable
- MacOS build fixes
- Fix CPU/DSP meters not refreshing regularly
- Added native window decoration
- New multi-thread processing algorithm thanks to Robin Gareus (DSP is very fast now)
- Show the initial window on top when running
- Implement PortAudio (WIP) and dummy backends
- Show CPU usage on mac
- Can now open plugins that showed a Mandatory port of unkown type error before
- Add option to build bundled plugins x42 and DISTRHO ports
- MacOS support with .dmg installer
- Change audio engine processing algorithm to the one Ardour uses
- French translations
- Show CPU usage on Windows
- Minor cosmetic changes
- Fix some midi note issues
- Make some libraries mandatory/optional depending on OS
- Windows support with installer
- Fix random widget warnings for timeline arranger
- Fix #186 clang failing build for discarding qualifiers
- Fail on configure if libtool/gettext not found
- Zrythm now opens maximized
- Fix icon and window name for plugin windows
- Minor fixes
- Fix crashing/dangling events when closing plugin (tested with fabla)
- Fix deadlock when opening plugin UI during playback
- Use screen refresh rate as plugin UI refresh rate
- Fix #182 missing automation icons
- Portaudio is now optional (#177)
- Fix #173 deleting a track now destroys the plugins in that channel
- When a plugin is drag and dropped in a channel slot it now follows the setting to show ui on instantiate or not
- Fix crash if no devices are connected to JACK
- Minor fixes and Japanese translations
- Fix numbering of regions/tracks
- Change labeling of regions/midi notes to not show debug info
- Creating regions/midi notes is now undoable
- Fix multiple regions getting changed in edit mode when creating a region
- Architectural change on how tracks get selected
- Can now change track name and color in the inspector
- Add donation dialog
- Fix CSS colors in dialogs/add missing
- Add shortcuts dialog
- Save as now defaults to the correct location
- Change the way the project is saved (objects are aggregated into separate data structures)
- Add option to auto-connect selected MIDI controllers on startup
- Fix #154 piano roll not reattaching to correct track
- Fix #73 LV2 parameters trembling when changed in their UIs
- Add intro menu when Zrythm is first run
- Fix crashing on saving project (after saving as once)
- Fix #150 adding new instrument track crashing
- Undo/redo technical improvement (revert objects to their original IDs)
- Fix inspector flickering while selecting objects
- Add undoable actions to timeline (ctrl + drag, move)
- Fix some undoable actions crashing in some cases
- Made developer docs prettier (needs older version of doxygen)
- Added and broke auto-scroll for piano roll
- Localization
- Notes can be moved using arrow keys
- Notes duplicated with Ctrl+D (possibly broken)
- Optimization (not sleeping in glib idle functions)
- Added unit tests
- Added indicative colors and hover animation on channel slots
- Fixed icons in menu bar
- Added links in Help menu
- Changed the way moving notes works, can now Ctrl+drag to copy-move
- Fix icons in menus
- Added links in Help menu
- Fix multipaned ignoring resizing when starting dragging from leftright
- Fix automation tracklist lane IDs not getting saved
- Slight automatable optimization
- Fix automation point/curve widgets not visible after loading project
- Add DSP/CPU meter widget
- Cache automation curve drawing (optimization)
- Serialize IDs instead of objects in timeline selections
- Fix plugin UIs not opening/closing properly
- Add option to not auto-open plugin UIs
- Fix MIDI notes flickering when dragging past 127
- Fix ruler not showing range selection when selecting range from timeline
- Add some missing tooltips in instrument tracks
- Ship breeze icons as compiled resources (fixed)
- Ship breeze icons as compiled resources
- added modes (select/edit/delete/ramp/audition)
- added delete functionality for midi notes with undo/redo
- fixed region delete crashing
- added more missing tooltips
- added status bar that changes when hovering
- show current automation value in the automation lane
- added tooltips for velocities/midi notes
- ctrl+L to loop selections
- fix piano roll notes staying pressed
- fix about dialog
- allow opening project while running
- Debian 9 & Ubuntu 17 support
- First release
Copyright (C) 2019-2020 Alexandros Theodotou
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.