[bug#39784] Add zlfo.
diff mbox series

Message ID 0f84534047c834937c210429116d686bc159e8a3.camel@zrythm.org
State Accepted
Headers show
Series
  • [bug#39784] Add zlfo.
Related show

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

Alexandros Theodotou Feb. 25, 2020, 3:06 p.m. UTC
Hi,

This is a new LV2 plugin. It uses Ztoolkit for its UI so I packaged
that separately.

I made a separate package for ztoolkit-rsvg because adding librsvg
brings in the whole glib stack, while ztoolkit by itself is very
minimal. Feel free to let me know if you have any other suggestions.

Thanks,
Alex

Comments

Jakub Kądziołka Feb. 26, 2020, 10:03 p.m. UTC | #1
On Tue, Feb 25, 2020 at 03:06:38PM +0000, Alexandros Theodotou wrote:
> Hi,
> 
> This is a new LV2 plugin. It uses Ztoolkit for its UI so I packaged
> that separately.

Hi,

could you send your patches inline, instead of as an attachment? It
makes reviews easier. The workflow on your side is easier too, since you
only need to `git send-email` (available as git:send-email in guix).
It's fine if you prefer not to do this, though.

> * gnu/packages/audio.scm (ztoolkit): New variable.
> ---
>  gnu/packages/audio.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
I'm not sure if audio.scm is the best place for a GUI toolkit. It might
be fine since audio plugins are the primary usecase, but I'm not sure.

> +(define-public ztoolkit
> +  (package
> +    (name "ztoolkit")
> +    (version "0.1.1")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://git.zrythm.org/git/ztoolkit")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> +            "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
Please run etc/indent-code.el on your packages.

> +    (build-system meson-build-system)
> +    (propagated-inputs
> +     `(("cairo" ,cairo)
> +       ("libx11" ,libx11)))
Why are these propagated-inputs? I would've thought that these
dependencies get linked into the binary, so they don't need to propagate
to the user's profile.

> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)
> +       ("git" ,git)))
Why the dependency on git? The package seems to build fine without it.

> +    (synopsis "GUI toolkit for LV2 plugins")
> +    (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
> +inspired by GTK.  It handles events and low level drawing on behalf of
> +the user and provides a high-level API for managing the UI and custom
> +widgets.  ZToolkit is written in C and was created to be used for building
> +audio plugin UIs, where the dependencies often need to be kept to a
> +minimum.")
> +    (home-page "https://git.zrythm.org/cgit/ztoolkit/")
> +    (license license:agpl3+)))

> +(define-public zlfo
> +  (package
> +    (name "zlfo")
> +    (version "0.1.3")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://git.zrythm.org/git/ZLFO")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> +            "0bm466ci5xyvxvq7l9p6xyh789lvk6i31b4zja1igqh13akbjnjz"))))
> +    (build-system meson-build-system)
> +    (inputs
> +     `(("ztoolkit-rsvg" ,ztoolkit-rsvg)))
> +    (native-inputs
> +     `(("git" ,git)
Same question as above.

> +       ("lv2" ,lv2)
> +       ("pkg-config" ,pkg-config)))
> +    (synopsis "LFO plugin")
That's quite blunt, and impenetrable for non-domain-experts. Is there
really nothing more you could say about the package? Perhaps expand the
acronym?

> +    (description "ZLFO is a fully featured LFO for CV-based automation
> +that comes as a cross-platform LV2 plugin bundle with a custom UI.")
Consider using Texinfo's @acronym.

> +    (home-page "https://git.zrythm.org/cgit/ZLFO/")
> +    (license license:agpl3+)))
Jakub Kądziołka Feb. 26, 2020, 10:08 p.m. UTC | #2
One more thing: zlfo has a reference to lv2 (see guix size). This
usually means that either it shouldn't be a native input, or the build
process stores the path in the output unnecessarily, increasing the
package closure size.
Ricardo Wurmus Feb. 27, 2020, 8:11 a.m. UTC | #3
Jakub Kądziołka <kuba@kadziolka.net> writes:

> On Tue, Feb 25, 2020 at 03:06:38PM +0000, Alexandros Theodotou wrote:
>> Hi,
>>
>> This is a new LV2 plugin. It uses Ztoolkit for its UI so I packaged
>> that separately.
>
> Hi,
>
> could you send your patches inline, instead of as an attachment? It
> makes reviews easier. The workflow on your side is easier too, since you
> only need to `git send-email` (available as git:send-email in guix).
> It's fine if you prefer not to do this, though.
>
>> * gnu/packages/audio.scm (ztoolkit): New variable.
>> ---
>>  gnu/packages/audio.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 43 insertions(+)
> I'm not sure if audio.scm is the best place for a GUI toolkit. It might
> be fine since audio plugins are the primary usecase, but I'm not sure.
>
>> +(define-public ztoolkit
>> +  (package
>> +    (name "ztoolkit")
>> +    (version "0.1.1")
>> +    (source
>> +      (origin
>> +        (method git-fetch)
>> +        (uri (git-reference
>> +               (url "https://git.zrythm.org/git/ztoolkit")
>> +               (commit (string-append "v" version))))
>> +        (file-name (git-file-name name version))
>> +        (sha256
>> +          (base32
>> +            "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
> Please run etc/indent-code.el on your packages.
>
>> +    (build-system meson-build-system)
>> +    (propagated-inputs
>> +     `(("cairo" ,cairo)
>> +       ("libx11" ,libx11)))
> Why are these propagated-inputs? I would've thought that these
> dependencies get linked into the binary, so they don't need to propagate
> to the user's profile.
>
>> +    (native-inputs
>> +     `(("pkg-config" ,pkg-config)
>> +       ("git" ,git)))
> Why the dependency on git? The package seems to build fine without it.
>
>> +    (synopsis "GUI toolkit for LV2 plugins")
>> +    (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
>> +inspired by GTK.  It handles events and low level drawing on behalf of
>> +the user and provides a high-level API for managing the UI and custom
>> +widgets.  ZToolkit is written in C and was created to be used for building
>> +audio plugin UIs, where the dependencies often need to be kept to a
>> +minimum.")
>> +    (home-page "https://git.zrythm.org/cgit/ztoolkit/")
>> +    (license license:agpl3+)))
>
>> +(define-public zlfo
>> +  (package
>> +    (name "zlfo")
>> +    (version "0.1.3")
>> +    (source
>> +      (origin
>> +        (method git-fetch)
>> +        (uri (git-reference
>> +               (url "https://git.zrythm.org/git/ZLFO")
>> +               (commit (string-append "v" version))))
>> +        (file-name (git-file-name name version))
>> +        (sha256
>> +          (base32
>> +            "0bm466ci5xyvxvq7l9p6xyh789lvk6i31b4zja1igqh13akbjnjz"))))
>> +    (build-system meson-build-system)
>> +    (inputs
>> +     `(("ztoolkit-rsvg" ,ztoolkit-rsvg)))
>> +    (native-inputs
>> +     `(("git" ,git)
> Same question as above.
>
>> +       ("lv2" ,lv2)
>> +       ("pkg-config" ,pkg-config)))
>> +    (synopsis "LFO plugin")
> That's quite blunt, and impenetrable for non-domain-experts. Is there
> really nothing more you could say about the package? Perhaps expand the
> acronym?
>
>> +    (description "ZLFO is a fully featured LFO for CV-based automation
>> +that comes as a cross-platform LV2 plugin bundle with a custom UI.")

CV is “control voltage” and LFO is “low frequency oscillator”.  While CV
is sometimes expanded, LFO rarely is, but it wouldn’t hurt to use
“@dfn{low frequency oscillator} (LFO)” here.

What it means is that the plugin outputs a slow waveform (much slower
than audio waveform signals) that can be used to modulate other
parameters in a synthesizer / LV2 plugin network automatically, much
like control voltages are used in (hardware) modular synthesizers to
control parameters of other modules.  A common use case is to modulate
the pitch of an audio oscillator with an LFO so as to produce vibrato
(i.e. the pitch rises and falls periodically, a couple of times per
second, centered around a certain pitch).

I would remove the “cross-platform” because as far as Guix is concerned
packages are available for all platforms that Guix supports.

--
Ricardo

Patch
diff mbox series

From c8b1c930846eb6cc0f8b2aed47e430e62466577a Mon Sep 17 00:00:00 2001
From: Alexandros Theodotou <alex@zrythm.org>
Date: Tue, 25 Feb 2020 15:00:50 +0000
Subject: [PATCH 1/2] gnu: Add ztoolkit.

* gnu/packages/audio.scm (ztoolkit): New variable.
---
 gnu/packages/audio.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 5b8c610882..dece9c03fe 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4036,3 +4036,46 @@  libsamplerate for reading and resampling audio files, based on Robin Gareus'
 @code{audio_decoder} code.")
    (home-page "https://git.zrythm.org/cgit/libaudec")
    (license license:agpl3+)))
+
+(define-public ztoolkit
+  (package
+    (name "ztoolkit")
+    (version "0.1.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://git.zrythm.org/git/ztoolkit")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
+    (build-system meson-build-system)
+    (propagated-inputs
+     `(("cairo" ,cairo)
+       ("libx11" ,libx11)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("git" ,git)))
+    (synopsis "GUI toolkit for LV2 plugins")
+    (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
+inspired by GTK.  It handles events and low level drawing on behalf of
+the user and provides a high-level API for managing the UI and custom
+widgets.  ZToolkit is written in C and was created to be used for building
+audio plugin UIs, where the dependencies often need to be kept to a
+minimum.")
+    (home-page "https://git.zrythm.org/cgit/ztoolkit/")
+    (license license:agpl3+)))
+
+(define-public ztoolkit-rsvg
+  (package
+    (inherit ztoolkit)
+    (name "ztoolkit-rsvg")
+    (arguments
+     `(#:configure-flags `("-Denable_rsvg=true")))
+    (propagated-inputs
+     `(("cairo" ,cairo)
+       ("librsvg" ,librsvg)
+       ("libx11" ,libx11)))
+    (synopsis "ZToolkit with SVG support")))
-- 
2.25.1