[LAA] Zrythm release 1.0.0-alpha.27.0.3 [GTK3 -> GTK4]

Alexandros Theodotou alex at zrythm.org
Mon Jan 10 15:39:19 CET 2022

Zrythm 1.0.0-alpha.27.0.3 has been released!

==== Demo ====


==== About ====

Zrythm is a digital audio workstation designed to be featureful and
easy to use. It allows limitless automation through curves, LFOs and
envelopes, supports multiple plugin formats including LV2, VST2 and
VST3, works with multiple backends including JACK, RtAudio/RtMidi and
SDL2, assists with chord progressions via a special Chord Track and
chord pads, and can be used in multiple languages including English,
French, Portuguese, Japanese and German.

Zrythm is free software written in C using the GTK4 toolkit and can be
extended using GNU Guile.

Zrythm is currently in alpha and we are working towards stabilizing the
project format and entering the beta phase.

==== Links ====

Full changelog:

Pending features for beta:

Pending fixes for beta:

Home page: <https://www.zrythm.org>
Installer downloads: <https://www.zrythm.org/en/download.html>
Git repository: <https://sr.ht/~alextee/zrythm>
User manual: <https://manual.zrythm.org/en/index.html>
Developer reference: <https://docs.zrythm.org/>
Issue trackers: <https://sr.ht/~alextee/zrythm/trackers>
Mailing lists: <https://sr.ht/~alextee/zrythm/lists>
Releases: <https://www.zrythm.org/releases/>

==== Release Notes ====

This release features a major change: the GUI toolkit that Zrythm uses
has changed from GTK3 to GTK4. This change was done to take advantage
of GTK4's built-in caching and hardware rendering capabilities.

This change has solved a major issue we were having with the UI being
slow on low spec systems or when lots of objects were on the screen. It
also makes development of UI elements easier thanks to a simpler
drawing API and built-in caching capabilities on the GTK4 side.

The main drawback of this change is that the native mechanism that was
used to embed plugin UIs is no longer available in GTK4, so native LV2
plugin support has been temporarily disabled until we find a solution.
Meanwhile, Carla is now a hard dependency and will be used to load all
plugin formats, including LV2.

We expect there to be some regressions partly due to GTK4 not being
widely adopted yet and also due to changes in the way input handling
and other things work in GTK4, and we are releasing early to encourage
more testing of these latest changes.

Special thanks to Filipe Coelho (falktx) for exposing API to make using
Carla easier on the Zrythm side and to GTK and libadwaita developers
(especially Benjamin Otte, Matthias Clasen, Emmanuele Bassi, Alexander
Mikhaylenko, Timm B├Ąder and Christian Hergert) for their help and for
fixing bugs we found quickly.

The list of changes follows:

## [1.0.0-alpha.27.0.3] - 2022-01-10
### Added
- New dependency libadwaita
- New searchable preference dialog
- Add plugin latency handling for plugins running through Carla
- New Hebrew translation
- Various drawing optimizations
- Various DSP optimizations

### Changed
- Updated plugin browser filter section
- Change UI toolkit from GTK3 to GTK4
- Bump version requirements for some dependencies
- Use `LD_LIBRARY_PATH` to override library paths in `zrythm_launch`
- Run all plugins via Carla
- Port most widget drawing from cairo (software rendering) to GTK
snapshot API (OpenGL)
- Show toast messages when backups are saved instead of showing a
blocking popup
- Use SCSS to compile CSS theme
- Allow DSEG font loading directly from file
- Update Indonesian, Ukrainian, Greek, Italian, Spanish, Slovenian,
French, Turkish, Portuguese (Brazil), Portuguese, Chinese (Simplified),
Russian translations
- Use libdir option for Zrythm lib directory instead of 'lib'
- Port some widgets to new GTK4 alternatives
- Use meson dictionary to generate list of languages
- Use Carla patchbay variant instead of rack for loading plugins to
support CV ports
- Change global single-key shortcuts to require Ctrl modifier
- Make strict compilation flags stricter
- Add additional gtksourceview5 language spec lookup path
- Redraw rulers and arrangers on every frame
- Recalculate DSP graph when reallocating engine ports
- Use `int_fast64_t` and `uint_fast64_t` for large DSP numbers instead
of `long` for better cross-platform compatibility
- Set Carla plugin window parent on Windows so the plugin window stays
on top of Zrythm
- Do not attempt to run `diff` to check for changes when closing the

### Fixed
- Fix issues with plugin search in plugin browser
- Fix timeline minimap not drawing its contents
- Meson: fix use of sse flags on non-`x86_64` systems
- Fix modulators not being saved with the project
- Only recreate plugin port list when selected plugin changes (fixes
lag in unrelated actions)
- Fix output track hash being saved as INT instead of UINT in channel
leading to overflows and project corruption
- Fix stack smashing in recording manager when recording automation
(pre-create dynamic array)
- Fix error when opening a project from a running instance
- Fix incorrectly freeing memory owned by GLib
- Fix various memory issues and possible NULL dereferences reported by
- Fix Carla not being notified of buffer size changes
- Fix missing icons in mixer and transport display
- Fix automation not being drawn when the line is vertical

### Removed
- Remove unused widgets/files
- Remove unnecessary widget properties from UI files

More information about the Linux-audio-announce mailing list