Subject: [bug#46210] [PATCH] Add drumgizmo

From: Nicolò Balzarotti <[email-masked]>
Date: Sun, 31 Jan 2021 14:15:23 +0100

Hi guix!

For folks into music production, this patch set adds drumgizmo, an high
quality MIDI drum.  It comes with a standalone application and an LV2
plugin (VST should also be there, but I could not build it).  I tested
both the cli and the lv2 plugin (inside carla) and they work fine.

Along with it, I added dgedit, a drumkit kit editor.

I also added three drumkits.  Those are big (2 to 5Gb), and the build is
just extract+copy, so I don't know if I should add #:substitutable? #f.
There's no standard path for those, so I'm placing them under
share/drumkits/DRUMKIT_NAME.

guix lint does not complain and they all build fine

Thanks!

>From b8ee651d49184a6f06581feb04fa44dd6a3c68cc Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 01:20:07 +0100
Subject: [PATCH 1/6] gnu: Add dgedit.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 2e46dc3a26..e6ad7d8428 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2020 Giacomo Leidi <[email-masked]>
 ;;; Copyright © 2020 Vinicius Monego <[email-masked]>
 ;;; Copyright © 2020 Michael Rohleder <[email-masked]>
+;;; Copyright © 2021 Nicolò Balzarotti <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4887,6 +4888,35 @@ edited, converted, compressed and saved.")
        ,@(package-inputs ztoolkit)))
     (synopsis "ZToolkit with SVG support")))
 
+(define-public dgedit
+  (package
+    (name "dgedit")
+    (version "0.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://drumgizmo.org/releases/dgedit-" version
+                       "/dgedit-" version ".tar.gz"))
+       (sha256
+        (base32 "1r43maac0ymc6zp9n6zi5hnh78658y2x34w8cvjzgvqjb86mhvw4"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ;; requires lrelease from qtlinguist
+       ("qttools" ,qttools)))
+    (inputs
+     `(("ao" ,ao)
+       ("libsndfile" ,libsndfile)
+       ("qtbase" ,qtbase)))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=getting_dgedit")
+    (synopsis "DrumGizmo drumkit editor")
+    (description "DGEdit lets you edit DrumGizmo drumkit files.  It allows
+importing, editing and exporting the raw drumkit recordings.")
+    ;; The file copying says GPLv3, but all files under src have a GPLv2+
+    ;; header.
+    (license license:gpl2+)))
+
 (define-public lsp-dsp-lib
   (package
     (name "lsp-dsp-lib")
-- 
2.30.0

>From 3563b19cca63a38806b07b6efcfd81b25260b725 Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 01:54:09 +0100
Subject: [PATCH 2/6] gnu: Add drumgizmo.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e6ad7d8428..812297a369 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4917,6 +4917,51 @@ importing, editing and exporting the raw drumkit recordings.")
     ;; header.
     (license license:gpl2+)))
 
+(define-public drumgizmo
+  (package
+    (name "drumgizmo")
+    (version "0.9.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://drumgizmo.org/releases/drumgizmo-" version
+             "/drumgizmo-" version ".tar.gz"))
+       (sha256
+        (base32 "18x28vhif0c97xz02k22xwqxxig6fi6j0356mlz2vf7vb25z69kl"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "--enable-gui=x11"
+        ;; Requires VST SDK
+        ;; "--enable-vst"
+        "--enable-cli"
+        "--enable-lv2")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("gettext" ,gettext-minimal)))
+    (inputs
+     `(("libsndfile" ,libsndfile)
+       ("alsa-lib" ,alsa-lib)
+       ("glib" ,glib)
+       ("jack" ,jack-1)
+       ("libsmf" ,libsmf)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("lv2" ,lv2)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LV2_PATH")
+            (files '("lib/lv2")))))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=about")
+    (synopsis "Multichannel MIDI drum LV2 plugin and standalone application")
+    (description "DrumGizmo is a multichannel, multilayered drum LV2 and VST
+plugin and stand-alone application.  It enables you to compose drums in MIDI
+and mix them with a multichannel approach.  It is comparable to that of mixing
+a real drumkit that has been recorded with a multimic setup.")
+    (license license:lgpl3+)))
+
 (define-public lsp-dsp-lib
   (package
     (name "lsp-dsp-lib")
-- 
2.30.0

>From 04f6d7c02385553719174298ec6180fa600295f6 Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 11:23:37 +0100
Subject: [PATCH 3/6] gnu: Add drumgizmo-crocellkit.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 812297a369..e6f7e6a79b 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4962,6 +4962,44 @@ and mix them with a multichannel approach.  It is comparable to that of mixing
 a real drumkit that has been recorded with a multimic setup.")
     (license license:lgpl3+)))
 
+(define-public drumgizmo-crocellkit
+  (package
+    (name "drumgizmo-crocellkit")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://drumgizmo.org/kits/CrocellKit/CrocellKit"
+         (string-replace-substring version "." "_") ".zip"))
+       (sha256
+        (base32 "1inmc60sxnkkxjlrnlaggiyvn1gqs963xkxvcpadjzw6wliiy79l"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       '(("." "share/drumkits/CrocellKit/"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=kits:crocellkit")
+    (synopsis "Rock and Metal drumkit for drumgizmo")
+    (description "The CrocellKit is the kit used by Danish metal band Crocell.
+
+It's a metal or rock kit, consisting of the following drums and cymbals:
+
+@enumerate
+@item 1 kickdrum (with double pedal)
+@item 2 hanging toms
+@item 2 floor toms
+@item 1 snare
+@item 1 hihat
+@item 3 crash cymbals
+@item 1 ride cymbals
+@item 2 china cymbal
+@item 2 splash cymbals
+@end enumerate")
+    (license license:cc-by4.0)))
+
 (define-public lsp-dsp-lib
   (package
     (name "lsp-dsp-lib")
-- 
2.30.0

>From f7fad501b59a32849b81e9d824deff01ecc2b025 Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 11:27:54 +0100
Subject: [PATCH 4/6] gnu: Add drumgizmo-dsrkit.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e6f7e6a79b..43b57ba811 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5000,6 +5000,46 @@ It's a metal or rock kit, consisting of the following drums and cymbals:
 @end enumerate")
     (license license:cc-by4.0)))
 
+(define-public drumgizmo-dsrkit
+  (package
+    (name "drumgizmo-dsrkit")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://drumgizmo.org/kits/DRSKit/DRSKit"
+         (string-replace-substring version "." "_") ".zip"))
+       (sha256
+        (base32 "147hcxk8dqq53rlglj4p35qwv4gm4pqiicnas1kk2n9nv352v7sj"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       '(("." "share/drumkits/DSRKit/"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=kits:drskit")
+    (synopsis "Jazz and Rock drumkit for drumgizmo")
+    (description "DRSKit came to be as a collaboration between the DrumGizmo
+team and Jes Eiler of DRSDrums.
+
+The kit should be usable for everything from jazz to rock, and contains the
+following components (Left / right placements as seen by the drummer):
+
+@enumerate
+@item 1 kickdrum
+@item 1 hanging tom
+@item 2 floor toms
+@item 1 snare
+@item 1 hihat: Paiste Formula 602 Medium hi-hat
+@item 2 crash cymbals
+Left: Paiste Giant Beat
+Right: Paiste Formula 602 (Lend to us by Erik)
+@item 1 ride cymbal: Paiste Formula 602 thin crash
+@end enumerate")
+    (license license:cc-by4.0)))
+
 (define-public lsp-dsp-lib
   (package
     (name "lsp-dsp-lib")
-- 
2.30.0

>From 3d0d9fa0844eaf16590c748930300a4b4a32c585 Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 11:28:09 +0100
Subject: [PATCH 5/6] gnu: Add drumgizmo-muldjordkit.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 43b57ba811..95fa59ae29 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5040,6 +5040,44 @@ Right: Paiste Formula 602 (Lend to us by Erik)
 @end enumerate")
     (license license:cc-by4.0)))
 
+(define-public drumgizmo-muldjordkit
+  (package
+    (name "drumgizmo-muldjordkit")
+    (version "3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://drumgizmo.org/kits/MuldjordKit/MuldjordKit" version ".zip"))
+       (sha256
+        (base32 "15jca4289mkyvkmwrc4xjzp6sir7b8l7vdxbqlbyx19ij48gk56v"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       '(("." "share/drumkits/MuldjordKit/"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=kits:muldjordkit")
+    (synopsis "Metal and Rock drumkit for drumgizmo")
+    (description "The MuldjordKit is a Tama Superstar drumkit with all the
+bells and whistles.  It's the drumkit used by Lars Muldjord to record
+Sepulchrum debut album.  This should be considered a metal or rock kit.
+
+The kit consist of the following drums and cymbals:
+
+@enumerate
+@item 2 kickdrums
+@item 3 hanging toms
+@item 1 floor tom
+@item 1 snare
+@item 1 hihat
+@item 2 crash cymbals
+@item 2 ride cymbals
+@item 1 china cymbal
+@end enumerate")
+    (license license:cc-by4.0)))
+
 (define-public lsp-dsp-lib
   (package
     (name "lsp-dsp-lib")
-- 
2.30.0

>From 9a607ff9694987aef1bd48cd4aa90631aca736e0 Mon Sep 17 00:00:00 2001
From: nixo <[email-masked]>
Date: Sun, 31 Jan 2021 11:39:41 +0100
Subject: [PATCH 6/6] gnu: Add drumgizmo-aasimonster.

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

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 95fa59ae29..c2d7572883 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4962,6 +4962,44 @@ and mix them with a multichannel approach.  It is comparable to that of mixing
 a real drumkit that has been recorded with a multimic setup.")
     (license license:lgpl3+)))
 
+(define-public drumgizmo-aasimonster
+  (package
+    (name "drumgizmo-aasimonster")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://drumgizmo.org/kits/Aasimonster/aasimonster"
+         (string-replace-substring version "." "_") ".zip"))
+       (sha256
+        (base32 "1pq7a9r2vsqpanpwyhljj3jf2dfg8m96npkk9y52qq73v8vn7sz0"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       '(("." "share/drumkits/Aasimonster/"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://drumgizmo.org/wiki/doku.php?id=kits:the_aasimonster")
+    (synopsis "Large Deathmetal drumkit for drumgizmo")
+    (description "The Aasimonster is a large deathmetal drumkit used to track
+the “Rise of the Rotten” record by the Danish deathmetal band DIE.
+
+It contains the following components:
+
+@enumerate
+@item 2 kickdrums
+@item 3 hanging toms
+@item 1 floor tom
+@item 2 16“ crash cymbals
+@item 1 18” china cymbal
+@item 2 small china cymbals (Stagg 8“ and 10”)
+@item 1 Zilbel
+@item 1 Ride cymbal
+@end enumerate")
+    (license license:cc-by4.0)))
+
 (define-public drumgizmo-crocellkit
   (package
     (name "drumgizmo-crocellkit")
-- 
2.30.0