[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
47/47: gnu: Add sooperlooper.
From: |
Ricardo Wurmus |
Subject: |
47/47: gnu: Add sooperlooper. |
Date: |
Mon, 17 Jul 2017 08:04:14 -0400 (EDT) |
rekado pushed a commit to branch master
in repository guix.
commit 5beecc320ee3f4224e356508547416b4bd24ad4b
Author: Ricardo Wurmus <address@hidden>
Date: Thu Jul 13 09:38:59 2017 +0200
gnu: Add sooperlooper.
* gnu/packages/patches/sooperlooper-build-with-wx-30.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/music.scm (sooperlooper): New variable.
---
gnu/local.mk | 1 +
gnu/packages/music.scm | 72 +++++++++
.../patches/sooperlooper-build-with-wx-30.patch | 179 +++++++++++++++++++++
3 files changed, 252 insertions(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index 50fac30..96e4b2d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1005,6 +1005,7 @@ dist_patch_DATA =
\
%D%/packages/patches/slim-reset.patch \
%D%/packages/patches/slim-login.patch \
%D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
+ %D%/packages/patches/sooperlooper-build-with-wx-30.patch \
%D%/packages/patches/spice-CVE-2016-9577.patch \
%D%/packages/patches/spice-CVE-2016-9578-1.patch \
%D%/packages/patches/spice-CVE-2016-9578-2.patch \
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index a3f3d4b..40996b1 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2345,6 +2345,78 @@ part. The player is based on a highly modified version
of the ModPlug engine,
with a number of bugfixes and changes to improve IT playback.")
(license license:gpl2+)))
+(define-public sooperlooper
+ (package
+ (name "sooperlooper")
+ (version "1.7.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs"))
+ (patches (search-patches
"sooperlooper-build-with-wx-30.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list "CXXFLAGS=-std=gnu++11")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'add-sigc++-includes
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((sig (assoc-ref inputs "libsigc++"))
+ (xml (assoc-ref inputs "libxml2"))
+ (cwd (getcwd)))
+ (setenv "CPATH"
+ (string-append sig "/include/sigc++-2.0:"
+ sig "/lib/sigc++-2.0/include:"
+ xml "/include/libxml2/:"
+ cwd "/libs/pbd:"
+ cwd "/libs/midi++")))
+ (substitute* '("src/control_osc.hpp"
+ "src/gui/app_frame.hpp"
+ "src/gui/config_panel.hpp"
+ "src/gui/keys_panel.hpp"
+ "src/gui/latency_panel.hpp"
+ "src/gui/main_panel.hpp"
+ "src/gui/midi_bind_panel.hpp"
+ "src/gui/prefs_dialog.hpp")
+ (("sigc\\+\\+/object.h")
+ "sigc++/sigc++.h"))
+ (substitute* '("src/engine.cpp"
+ "src/gui/latency_panel.cpp"
+ "src/gui/looper_panel.cpp"
+ "src/gui/main_panel.cpp")
+ (("(\\(| )bind " _ pre)
+ (string-append pre "sigc::bind ")))
+ #t))
+ (add-after 'unpack 'fix-xpm-warnings
+ (lambda _
+ (substitute* (find-files "." "\\.xpm$")
+ (("static char") "static const char"))
+ #t)))))
+ (inputs
+ `(("jack" ,jack-1)
+ ("alsa-lib" ,alsa-lib)
+ ("wxwidgets" ,wxwidgets-gtk2)
+ ("libsndfile" ,libsndfile)
+ ("libsamplerate" ,libsamplerate)
+ ("liblo" ,liblo)
+ ("rubberband" ,rubberband)
+ ("libxml2" ,libxml2)
+ ("libsigc++" ,libsigc++)
+ ("ncurses" ,ncurses)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://essej.net/sooperlooper/")
+ (synopsis "Live looping sampler")
+ (description
+ "SooperLooper is a live looping sampler capable of immediate loop
+recording, overdubbing, multiplying, reversing and more. It allows for
+multiple simultaneous multi-channel loops limited only by your computer's
+available memory.")
+ (license license:gpl2+)))
+
(define-public moc
(package
(name "moc")
diff --git a/gnu/packages/patches/sooperlooper-build-with-wx-30.patch
b/gnu/packages/patches/sooperlooper-build-with-wx-30.patch
new file mode 100644
index 0000000..43f4b9b
--- /dev/null
+++ b/gnu/packages/patches/sooperlooper-build-with-wx-30.patch
@@ -0,0 +1,179 @@
+Downloaded from
https://anonscm.debian.org/cgit/pkg-multimedia/sooperlooper.git/plain/debian/patches/04-build_with_wx_30.patch
-O gnu/packages/patches/sooperlooper-build-with-wx-30.patch
+
+Author: Jaromír Mikeš <address@hidden>, Olly Betts <address@hidden>
+Description: build against wx 3.0.
+Forwarded: yes
+
+Index: sooperlooper/src/gui/main_panel.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/main_panel.cpp
++++ sooperlooper/src/gui/main_panel.cpp
+@@ -448,7 +448,7 @@ MainPanel::init_loopers (int count)
+ while (count < (int)_looper_panels.size()) {
+ looperpan = _looper_panels.back();
+ _looper_panels.pop_back();
+- _main_sizer->Remove(looperpan);
++ _main_sizer->Detach(looperpan);
+ looperpan->Destroy();
+ }
+ }
+@@ -1277,7 +1277,7 @@ void MainPanel::misc_action (bool releas
+ }
+
+
+- wxString filename = do_file_selector (wxT("Choose file to save
loop"), wxT("wav"), wxT("WAVE files (*.wav)|*.wav;*.WAV;*.Wav"),
wxSAVE|wxCHANGE_DIR|wxOVERWRITE_PROMPT);
++ wxString filename = do_file_selector (wxT("Choose file to save
loop"), wxT("wav"), wxT("WAVE files (*.wav)|*.wav;*.WAV;*.Wav"),
wxFD_SAVE|wxFD_CHANGE_DIR|wxFD_OVERWRITE_PROMPT);
+
+ if ( !filename.empty() )
+ {
+@@ -1296,7 +1296,7 @@ void MainPanel::misc_action (bool releas
+ index = 0;
+ }
+
+- wxString filename = do_file_selector (wxT("Choose file to
open"), wxT(""), wxT("*.slsess"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = do_file_selector (wxT("Choose file to
open"), wxT(""), wxT("*.slsess"), wxFD_OPEN|wxFD_CHANGE_DIR);
+
+ if ( !filename.empty() )
+ {
+@@ -1408,7 +1408,7 @@ void MainPanel::set_curr_loop (int index
+
+ void MainPanel::do_load_session ()
+ {
+- wxString filename = do_file_selector (wxT("Choose session to load"),
wxT("*.slsess"), wxT("*.slsess"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = do_file_selector (wxT("Choose session to load"),
wxT("*.slsess"), wxT("*.slsess"), wxFD_OPEN|wxFD_CHANGE_DIR);
+
+ if ( !filename.empty() )
+ {
+@@ -1419,7 +1419,7 @@ void MainPanel::do_load_session ()
+
+ void MainPanel::do_save_session (bool write_audio)
+ {
+- wxString filename = do_file_selector (wxT("Choose file to save
session"), wxT("slsess"), wxT("*.slsess"),
wxSAVE|wxCHANGE_DIR|wxOVERWRITE_PROMPT);
++ wxString filename = do_file_selector (wxT("Choose file to save
session"), wxT("slsess"), wxT("*.slsess"),
wxFD_SAVE|wxFD_CHANGE_DIR|wxFD_OVERWRITE_PROMPT);
+
+ if ( !filename.empty() )
+ {
+Index: sooperlooper/src/gui/pix_button.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/pix_button.cpp
++++ sooperlooper/src/gui/pix_button.cpp
+@@ -250,7 +250,7 @@ PixButton::OnMouseEvents (wxMouseEvent &
+ pt.x += bounds.x;
+ pt.y += bounds.y;
+
+- if (bounds.Inside(pt)) {
++ if (bounds.Contains(pt)) {
+ clicked (get_mouse_button(ev)); // emit
+
+ if (ev.MiddleUp() && ev.ControlDown()) {
+Index: sooperlooper/src/gui/looper_panel.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/looper_panel.cpp
++++ sooperlooper/src/gui/looper_panel.cpp
+@@ -1428,7 +1428,7 @@ LooperPanel::clicked_events (int button,
+ if (cmd == wxT("save"))
+ {
+ wxString filename = _mainpanel->do_file_selector (wxT("Choose
file to save loop"),
+-
wxT("wav"), wxT("WAVE files (*.wav)|*.wav;*.WAV;*.Wav"),
wxSAVE|wxCHANGE_DIR|wxOVERWRITE_PROMPT);
++
wxT("wav"), wxT("WAVE files (*.wav)|*.wav;*.WAV;*.Wav"),
wxFD_SAVE|wxFD_CHANGE_DIR|wxFD_OVERWRITE_PROMPT);
+
+ if ( !filename.empty() )
+ {
+@@ -1442,7 +1442,7 @@ LooperPanel::clicked_events (int button,
+ }
+ else if (cmd == wxT("load"))
+ {
+- wxString filename = _mainpanel->do_file_selector(wxT("Choose
file to open"), wxT(""), wxT("Audio files
(*.wav,*.aif)|*.wav;*.WAV;*.Wav;*.aif;*.aiff;*.AIF;*.AIFF|All files
(*.*)|*.*"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = _mainpanel->do_file_selector(wxT("Choose
file to open"), wxT(""), wxT("Audio files
(*.wav,*.aif)|*.wav;*.WAV;*.Wav;*.aif;*.aiff;*.AIF;*.AIFF|All files
(*.*)|*.*"), wxFD_OPEN|wxFD_CHANGE_DIR);
+
+ if ( !filename.empty() )
+ {
+Index: sooperlooper/src/gui/keyboard_target.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/keyboard_target.cpp
++++ sooperlooper/src/gui/keyboard_target.cpp
+@@ -553,10 +553,10 @@ KeyboardTarget::keycode_from_name (const
+ keycode = WXK_RETURN;
+ }
+ else if ( keyname == wxT("PGUP") ) {
+- keycode = WXK_PRIOR;
++ keycode = WXK_PAGEUP;
+ }
+ else if ( keyname == wxT("PGDN") ) {
+- keycode = WXK_NEXT;
++ keycode = WXK_PAGEDOWN;
+ }
+ else if ( keyname == wxT("LEFT") ) {
+ keycode = WXK_LEFT;
+@@ -630,10 +630,10 @@ wxString KeyboardTarget::name_from_keyco
+ case WXK_RETURN:
+ text += wxT("return");
+ break;
+- case WXK_PRIOR:
++ case WXK_PAGEUP:
+ text += wxT("pageup");
+ break;
+- case WXK_NEXT:
++ case WXK_PAGEDOWN:
+ text += wxT("pagedown");
+ break;
+ case WXK_LEFT:
+Index: sooperlooper/src/gui/check_box.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/check_box.cpp
++++ sooperlooper/src/gui/check_box.cpp
+@@ -237,7 +237,7 @@ CheckBox::OnMouseEvents (wxMouseEvent &e
+ }
+ else if (ev.LeftUp())
+ {
+- if (bounds.Inside(ev.GetPosition())) {
++ if (bounds.Contains(ev.GetPosition())) {
+ // toggle value
+ _value = !_value;
+
+Index: sooperlooper/src/gui/midi_bind_panel.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/midi_bind_panel.cpp
++++ sooperlooper/src/gui/midi_bind_panel.cpp
+@@ -880,7 +880,7 @@ void MidiBindPanel::on_button (wxCommand
+ }
+ else if (ev.GetId() == ID_LoadButton)
+ {
+- wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to open"), wxT(""), wxT("*.slb"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to open"), wxT(""), wxT("*.slb"), wxFD_OPEN|wxFD_CHANGE_DIR);
+ if ( !filename.empty() )
+ {
+
_parent->get_loop_control().load_midi_bindings(filename,
_append_check->GetValue());
+@@ -888,7 +888,7 @@ void MidiBindPanel::on_button (wxCommand
+ }
+ else if (ev.GetId() == ID_SaveButton)
+ {
+- wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to save"), wxT(""), wxT("*.slb"),
wxSAVE|wxCHANGE_DIR|wxOVERWRITE_PROMPT);
++ wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to save"), wxT(""), wxT("*.slb"),
wxFD_SAVE|wxFD_CHANGE_DIR|wxFD_OVERWRITE_PROMPT);
+
+ if ( !filename.empty() )
+ {
+Index: sooperlooper/src/gui/config_panel.cpp
+===================================================================
+--- sooperlooper.orig/src/gui/config_panel.cpp
++++ sooperlooper/src/gui/config_panel.cpp
+@@ -378,7 +378,7 @@ void ConfigPanel::on_button (wxCommandEv
+ else if (ev.GetId() == ID_MidiBrowseButton) {
+
+ _parent->get_keyboard().set_enabled(false);
+- wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to use"), wxT(""), wxT("*.slb"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = _parent->do_file_selector(wxT("Choose midi
binding file to use"), wxT(""), wxT("*.slb"), wxFD_OPEN|wxFD_CHANGE_DIR);
+ _parent->get_keyboard().set_enabled(true);
+
+ if ( !filename.empty() )
+@@ -389,8 +389,8 @@ void ConfigPanel::on_button (wxCommandEv
+ else if (ev.GetId() == ID_SessionBrowseButton) {
+
+ _parent->get_keyboard().set_enabled(false);
+- wxString filename = _parent->do_file_selector(wxT("Choose
session file to use"), wxT(""), wxT("*.slsess"), wxOPEN|wxCHANGE_DIR);
+- //wxString filename = wxFileSelector(wxT("Choose session file
to use"), wxT(""), wxT(""), wxT(""), wxT("*.slsess"), wxOPEN|wxCHANGE_DIR);
++ wxString filename = _parent->do_file_selector(wxT("Choose
session file to use"), wxT(""), wxT("*.slsess"), wxFD_OPEN|wxFD_CHANGE_DIR);
++ //wxString filename = wxFileSelector(wxT("Choose session file
to use"), wxT(""), wxT(""), wxT(""), wxT("*.slsess"),
wxFD_OPEN|wxFD_CHANGE_DIR);
+ _parent->get_keyboard().set_enabled(true);
+
+ if ( !filename.empty() )
- 29/47: gnu: Add texlive-latex-varwidth., (continued)
- 29/47: gnu: Add texlive-latex-varwidth., Ricardo Wurmus, 2017/07/17
- 17/47: gnu: Add texlive-latex-cmap., Ricardo Wurmus, 2017/07/17
- 35/47: gnu: Add texlive-latex-ifplatform., Ricardo Wurmus, 2017/07/17
- 45/47: gnu: Add texlive-latex-type1cm., Ricardo Wurmus, 2017/07/17
- 21/47: gnu: Add texlive-latex-capt-of., Ricardo Wurmus, 2017/07/17
- 37/47: gnu: Add texlive-latex-trimspaces., Ricardo Wurmus, 2017/07/17
- 40/47: gnu: Add texlive-fontname., Ricardo Wurmus, 2017/07/17
- 39/47: gnu: python-ipython: Use texlive-union., Ricardo Wurmus, 2017/07/17
- 42/47: gnu: texlive-dvips: Install font maps., Ricardo Wurmus, 2017/07/17
- 33/47: gnu: Add texlive-latex-environ., Ricardo Wurmus, 2017/07/17
- 47/47: gnu: Add sooperlooper.,
Ricardo Wurmus <=
- 44/47: gnu: Add texlive-fonts-txfonts., Ricardo Wurmus, 2017/07/17
- 24/47: gnu: Add texlive-latex-mdwtools., Ricardo Wurmus, 2017/07/17
- 30/47: gnu: Add texlive-latex-wrapfig., Ricardo Wurmus, 2017/07/17
- 36/47: gnu: Add texlive-latex-psfrag., Ricardo Wurmus, 2017/07/17
- 34/47: gnu: Add texlive-latex-filemod., Ricardo Wurmus, 2017/07/17
- 41/47: gnu: texlive-union: Add texlive-fontname to defaults., Ricardo Wurmus, 2017/07/17
- 23/47: gnu: Add texlive-latex-framed., Ricardo Wurmus, 2017/07/17
- 27/47: gnu: Add texlive-latex-tabulary., Ricardo Wurmus, 2017/07/17
- 38/47: gnu: Add texlive-latex-pstool., Ricardo Wurmus, 2017/07/17
- 46/47: gnu: texlive-union: Silence union-build., Ricardo Wurmus, 2017/07/17