[PATCH][WIP] gnu: Add norns.

  • Open
  • quality assurance status badge
Details
One participant
  • Antero Mejr
Owner
unassigned
Submitted by
Antero Mejr
Severity
normal
A
A
Antero Mejr wrote on 18 Feb 2023 06:05
(address . guix-patches@gnu.org)(name . Antero Mejr)(address . antero@mailbox.org)
20230218050509.7723-1-antero@mailbox.org
* gnu/packages/music.scm (norns): New variable.
---
Launches OK, can't fully test because Supercollider/Jack don't work on my
machine currently. I will try to report back with test results and/or a V2
patch, but not sure when that will happen.
Please apply the libmonome patch first when everything is ready.

gnu/local.mk | 1 +
gnu/packages/music.scm | 109 ++++++++++++++++++
.../patches/norns-remove-nonfree-fonts.patch | 41 +++++++
3 files changed, 151 insertions(+)
create mode 100644 gnu/packages/patches/norns-remove-nonfree-fonts.patch

Toggle diff (195 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index aaf125ce7b..4f6ce69e85 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1579,6 +1579,7 @@ dist_patch_DATA = \
%D%/packages/patches/network-manager-meson.patch \
%D%/packages/patches/nginx-socket-cloexec.patch \
%D%/packages/patches/nnpack-system-libraries.patch \
+ %D%/packages/patches/norns-remove-nonfree-fonts.patch \
%D%/packages/patches/nsis-env-passthru.patch \
%D%/packages/patches/nss-getcwd-nonnull.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 7f0e9dd793..9de4faca32 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -95,6 +95,7 @@ (define-module (gnu packages music)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages assembly)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages backup)
#:use-module (gnu packages base) ;libbdf
#:use-module (gnu packages bash)
@@ -151,6 +152,7 @@ (define-module (gnu packages music)
#:use-module (gnu packages mpd)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
@@ -7115,6 +7117,113 @@ (define-public libmonome
FFI.")
(license license:isc)))
+(define-public norns
+ (package
+ (name "norns")
+ (version "2.7.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/monome/norns")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (patches (search-patches
+ "norns-remove-nonfree-fonts.patch"))
+ (modules '((guix build utils)))
+ (snippet #~(begin (delete-file-recursively "third-party")
+ (delete-file "sc/install.sh") ;do this manually
+ (for-each delete-file ;remove non-free vera font
+ (find-files "resources" "[V|v]era*"))
+ (substitute* "wscript"
+ (("'VERSION_HASH', get_version_hash\\(\\)")
+ "'VERSION_HASH', ''")
+ (("lua53") "lua-5.3")
+ (("bld\\.recurse\\('third-party'\\)") ""))
+ (substitute* "matron/wscript"
+ (("matron_libs = \\[")
+ "matron_libs = ['lua', 'abl_link',"))
+ (substitute* "matronrc.lua" ;run SDL version
+ (("-- _boot\\.add_io\\('input:sdl', \\{\\}\\)")
+ "_boot.add_io('input:sdl', {})")
+ (("^init_norns")
+ "init_desktop"))))
+ (sha256
+ (base32 "1y8hiy0dlv7c66q874znfsgl0ndlddfm81dgyvd5rz8f8g8iqavp"))))
+ (build-system waf-build-system)
+ (arguments
+ (list #:tests? #f ;no target
+ #:configure-flags #~(list "--desktop")
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-src
+ (lambda _
+ (substitute* "sc/norns-config.sc"
+ (("Platform\\.userHomeDir")
+ (string-append #$output "/share/norns/sc")))
+ (substitute* "matron/src/hardware/screen.c"
+ (("%s/norns/resources/%s\", getenv\\(\"HOME\"\\),")
+ (string-append
+ #$output "/share/norns/resources/%s\",")))
+ (substitute* "matron/wscript"
+ (("\\.\\./third-party/link/extensions/abl_link/include")
+ (string-append
+ #$(this-package-input "ableton-link")
+ "/include/extensions/abl_link")))))
+ (add-before 'build 'set-desktop-env
+ (lambda _
+ (setenv "NORNS_DESKTOP" "true")))
+ (add-after 'install 'install-resources
+ (lambda _
+ (let ((scdir (string-append
+ #$output "/share/norns/sc"))
+ (fontdir (string-append
+ #$output "/share/norns/resources")))
+ (mkdir-p scdir)
+ (copy-recursively "sc" scdir)
+ (mkdir-p fontdir)
+ (copy-recursively "resources" fontdir)
+ (install-file
+ "matronrc.lua"
+ (string-append #$output "/share/norns")))))
+ (add-after 'install 'install-docs
+ (lambda _
+ ;; TODO: build docs using ldoc, luarocks
+ (copy-recursively "doc" (string-append
+ #$output "/share/doc")))))))
+ (native-inputs (list pkg-config))
+ (inputs (list ableton-link
+ alsa-lib
+ avahi
+ cairo
+ eudev
+ jack-2
+ libevdev
+ liblo
+ libmonome
+ libsndfile
+ lua
+ nanomsg
+ ncurses
+ readline
+ sdl2))
+ (home-page "https://monome.org/docs/norns/")
+ (synopsis "Desktop version of the norns sound computer")
+ (description "The package provides a SDL implementation of norns, the sound
+computer that dynamically runs scripts and
+@acronym{DSP, Digital Signal Processors}, such as:
+@itemize
+@item sample-cutter
+@item polysynth
+@item algorithmic drum machine
+@item drone box
+@item granulator
+@item asynchronous looper
+@item polyphasic sequencer
+@end itemize")
+ (license (list license:gpl3 ;code
+ license:asl2.0)))) ;Roboto font
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
diff --git a/gnu/packages/patches/norns-remove-nonfree-fonts.patch b/gnu/packages/patches/norns-remove-nonfree-fonts.patch
new file mode 100644
index 0000000000..716fd435be
--- /dev/null
+++ b/gnu/packages/patches/norns-remove-nonfree-fonts.patch
@@ -0,0 +1,41 @@
+Author: Antero Mejr <antero@mailbox.org>
+Notes: It appears that the Bitstream Vera license restricts commercial
+redistribution so patch those fonts out.
+
+diff --git a/matron/src/hardware/screen.c b/matron/src/hardware/screen.c
+index d0cf86e0..1fe494ec 100644
+--- a/matron/src/hardware/screen.c
++++ b/matron/src/hardware/screen.c
+@@ -31,7 +31,7 @@
+ }
+ #endif
+
+-#define NUM_FONTS 67
++#define NUM_FONTS 57
+ #define NUM_OPS 29
+
+ static char font_path[NUM_FONTS][32];
+@@ -107,21 +107,11 @@ void screen_init(void) {
+ strcpy(font_path[11], "Roboto-MediumItalic.ttf");
+ strcpy(font_path[12], "Roboto-BoldItalic.ttf");
+ strcpy(font_path[13], "Roboto-BlackItalic.ttf");
+- strcpy(font_path[14], "VeraBd.ttf");
+- strcpy(font_path[15], "VeraBI.ttf");
+- strcpy(font_path[16], "VeraIt.ttf");
+- strcpy(font_path[17], "VeraMoBd.ttf");
+- strcpy(font_path[18], "VeraMoBI.ttf");
+- strcpy(font_path[19], "VeraMoIt.ttf");
+- strcpy(font_path[20], "VeraMono.ttf");
+- strcpy(font_path[21], "VeraSeBd.ttf");
+- strcpy(font_path[22], "VeraSe.ttf");
+- strcpy(font_path[23], "Vera.ttf");
+ //------------------
+ // bitmap fonts
+- strcpy(font_path[24], "bmp/tom-thumb.bdf");
++ strcpy(font_path[14], "bmp/tom-thumb.bdf");
+ // FIXME: this is totally silly...
+- int i = 25;
++ int i = 15;
+ strcpy(font_path[i++], "bmp/creep.bdf");
+ strcpy(font_path[i++], "bmp/ctrld-fixed-10b.bdf");
+ strcpy(font_path[i++], "bmp/ctrld-fixed-10r.bdf");
--
2.38.1
A
A
Antero Mejr wrote on 18 Feb 2023 06:15
[PATCH] gnu: Add libmonome.
(address . 61594@debbugs.gnu.org)(name . Antero Mejr)(address . antero@mailbox.org)
20230218051544.8202-1-antero@mailbox.org
* gnu/packages/music.scm (libmonome): New variable.
---
Also I apologize if WIP patches are not good for this mailing list,
please let me know if that is the case and I will stop sending them.

gnu/packages/music.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 59f295cc14..7f0e9dd793 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -7084,6 +7084,37 @@ (define-public orca-music
(home-page "https://100r.co/site/orca.html")
(license license:expat))))
+(define-public libmonome
+ (package
+ (name "libmonome")
+ (version "1.4.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/monome/libmonome")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (modules '((guix build utils)))
+ (snippet #~(substitute* "wscript" ;version string not updated
+ (("VERSION = \".*\"")
+ "VERSION = \"1.4.6\"")))
+ (sha256
+ (base32 "1p0m6myzbmj0zy7vs80blmym0vs1dbzsgl9k7rg98l466yh61mi0"))))
+ (build-system waf-build-system)
+ (arguments
+ (list #:tests? #f ;No target
+ #:configure-flags #~(list (string-append "LDFLAGS=-Wl,-rpath="
+ #$output "/lib"))))
+ (inputs (list eudev liblo))
+ (home-page "https://github.com/monome/libmonome")
+ (synopsis "Library for interacting with monome audio devices")
+ (description "libmonome is a library for interacting with monome devices.
+It was developed to make monome devices easy to use with programming languages
+like C and Python, and for adding wrappers for use in languages with suitable
+FFI.")
+ (license license:isc)))
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
--
2.38.1
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 61594@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 61594
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch