Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
INSTALL.rst
1.. SPDX-FileCopyrightText: © 2019-2022 Alexandros Theodotou <alex at zrythm dot org>
2.. SPDX-License-Identifier: FSFAP
3
4Installation Instructions
5=========================
6
7Prerequisites
8-------------
9
10Build Tools
11~~~~~~~~~~~
12
13You will need the GNU toolchain, a C++17-compatible compiler
14and the following
15
16`meson (Apache-2.0) <https://mesonbuild.com/>`_
17 Build system
18
19`guile (GPLv3+) <https://www.gnu.org/software/guile/>`_
20 Used in various build scripts
21
22`sassc (Expat) <https://github.com/sass/sassc>`_
23 CSS compilation
24
25`lilv (ISC) <https://drobilla.net/software/lilv>`_
26 LV2 plugin hosting library used in tests only
27
28.. `blueprint-compiler (LGPLv3+) <https://gitlab.gnome.org/jwestman/blueprint-compiler>`_
29.. UI file compilation
30
31If your meson version is too old, you can either
32install meson from
33`pip <https://pypi.org/project/pip/>`_
34or run ``meson.py`` directly from
35`meson's source code <https://github.com/mesonbuild/meson>`_.
36
37Dependencies
38~~~~~~~~~~~~
39
40The following dependencies must be installed before
41attempting to build or run Zrythm.
42
43Required
44++++++++
45
46`carla (GPLv2+) <https://kx.studio/Applications:Carla>`_
47 Support for various plugin formats
48
49`fftw (GPLv2+) <http://www.fftw.org/>`_
50 Threaded fftw for plugins
51
52`gtk4 (LGPLv2.1+) <https://gtk.org/>`_
53 GUI toolkit
54
55`gtksourceview (LGPLv2.1+) <https://wiki.gnome.org/Projects/GtkSourceView>`_
56 Source code editor widget
57
58`libadwaita (LGPLv2.1+) <https://gitlab.gnome.org/GNOME/libadwaita>`_
59 Additional widgets
60
61`libbacktrace (3-Clause BSD) <https://github.com/ianlancetaylor/libbacktrace>`_
62 Backtraces
63
64`libcurl (X11) <https://curl.se/libcurl/>`_
65 Network connections
66
67`libpanel (LGPLv3+) <https://gitlab.gnome.org/chergert/libpanel/>`_
68 Dock and panel widgets
69
70Note: if you want detach support use `our fork <https://gitlab.zrythm.org/zrythm/libpanel-detach>`_ (``zrythm_detach`` branch).
71
72`libsndfile (LGPLv2.1+) <http://libsndfile.github.io/libsndfile/>`_
73 Audio file IO
74
75`magic_enum (MIT) <https://github.com/Neargye/magic_enum>`_
76 Reflection for C++ enums
77
78`pcre2 (3-Clause BSD) <https://www.pcre.org/>`_
79 Regex
80
81`rubberband (GPLv2+) <https://breakfastquay.com/rubberband/>`_
82 Time-stretching and pitch-shifting
83
84`soxr (LGPLv2.1+) <https://sourceforge.net/projects/soxr/>`_
85 Resampling
86
87`vamp-plugin-sdk (X11) <https://vamp-plugins.org/>`_
88 Audio analysis
89
90`xxhash (2-Clause BSD) <https://cyan4973.github.io/xxHash/>`_
91 Hashing
92
93`yyjson (MIT) <https://github.com/ibireme/yyjson>`_
94 JSON manipulation
95
96`zix (ISC) <https://github.com/drobilla/zix>`_
97 Portability wrappers and data structures
98
99`zstd (3-Clause BSD) <https://github.com/facebook/zstd>`_
100 Compression
101
102Recommended
103+++++++++++
104
105`boost (Boost) <https://www.boost.org/>`_
106 C++ utilities required for building the bundled plugins
107
108`jack (LGPLv2.1+) <https://jackaudio.org/>`_
109 Low latency audio/MIDI backend
110
111`lsp-dsp-lib (LGPLv3+) <https://github.com/sadko4u/lsp-dsp-lib>`_
112 SIMD-optimized signal processing
113
114`rtaudio (Expat) <http://www.music.mcgill.ca/~gary/rtaudio/>`_
115 Various audio backends
116
117`rtmidi (Expat) <https://www.music.mcgill.ca/~gary/rtmidi/>`_
118 Various MIDI backends
119
120Optional
121++++++++
122
123`graphviz (EPLv1.0) <http://graphviz.org/>`_
124 Process graph export (only used for debugging)
125
126`libcyaml (ISC) <https://github.com/tlsa/libcyaml/>`_
127 Serialization into YAML (only needed to upgrade old projects created before `v1.0.0-beta.5.0`)
128
129Experimental
130++++++++++++
131
132`SDL2 (zlib) <https://www.libsdl.org/>`_
133 Audio backend
134
135Configuration
136-------------
137
138Configure the build directory, optionally passing options::
139
140 meson setup build -Doption_name=value
141
142To see all available options, type the following
143after the build directory is initialized, or look
144inside `meson_options.txt <meson_options.txt>`_.
145Built-in meson options can be found
146`here <https://mesonbuild.com/Builtin-options.html>`_::
147
148 meson configure build
149
150To change an option after configuration, use::
151
152 meson configure build -Doption_name=value
153
154To change environment variables (such as ``CC`` and
155``CXX``) while keeping the current configuration, use::
156
157 MY_ENV_VARIABLE=myvalue meson build --wipe
158
159To start from scratch, remove the ``build`` directory::
160
161 rm -rf build
162
163Optimization
164~~~~~~~~~~~~
165
166The default build type is ``debugoptmized``, which
167is equivalent to ``-Ddebug=true -Doptimization=2``
168(``-O2 -g``). This works well in most cases. For
169extremely optimized builds, we suggest building with
170the following options::
171
172 -Ddebug=true -Doptimization=3 -Dextra_optimizations=true -Dnative_build=true
173
174We suggest always keeping ``-Ddebug=true`` to assist
175with meaningful stack traces and bug reports.
176
177Compilation
178-----------
179
180Compile after configuring the build directory::
181
182 meson compile -C build
183
184To clean the build directory while keeping the
185current configuration, use::
186
187 meson compile --clean -C build
188
189Installation
190------------
191
192Once the program is built, it will need to be
193installed the first time before it can run (to
194install the `GSettings <https://developer.gnome.org/gio/stable/GSettings.html>`_ among other things)::
195
196 meson install -C build
197
198If you don't want to install anything permanent on
199your system, you can install it somewhere
200temporary by configuring with
201``--prefix=/tmp/zrythm`` for example, and
202then you can run it with
203``/tmp/zrythm/bin/zrythm_launch``.
204
205Running
206-------
207
208When running Zrythm from the command line, it is
209recommended to use ``zrythm_launch`` instead of
210running the ``zrythm`` binary directly. This takes
211care of using the correct GSettings schemas and
212other resources in the installed prefix.
213
214For debugging and other developer tools, see
215`HACKING.md <HACKING.md>`_.