summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/audio.scm141
1 files changed, 141 insertions, 0 deletions
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index ddc8602f0dd..24d105e6d14 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -813,6 +813,147 @@ attacks, performing pitch detection, tapping the beat and producing MIDI
813streams from live audio.") 813streams from live audio.")
814 (license license:gpl3+))) 814 (license license:gpl3+)))
815 815
816(define-public dexed
817 (package
818 (name "dexed")
819 (version "1.0.1")
820 (source (origin
821 (method git-fetch)
822 (uri (git-reference
823 (url "https://github.com/asb2m10/dexed")
824 (commit (string-append "v" version))
825 ;; This is a JUCE project and so it bundles a particular
826 ;; version of the JUCE repository and the sources of
827 ;; other libraries.
828 (recursive? #true)))
829 (file-name (git-file-name name version))
830 (sha256
831 (base32
832 "1n604cvkjs11wqnaxnqzx8fgjj1klz85fnka15nnmhz49lqdlipl"))))
833 (build-system cmake-build-system)
834 (arguments
835 (list
836 #:tests? #false ;there are none
837 #:modules '((guix build utils)
838 (guix build cmake-build-system)
839 (guix base32)
840 (ice-9 string-fun)
841 (ice-9 regex)
842 (rnrs bytevectors))
843 #:imported-modules `((guix base32)
844 (guix build cmake-build-system)
845 ,@%default-gnu-imported-modules)
846 #:configure-flags
847 ;; We extract the build identifer from the output prefix. This is more
848 ;; useful than setting it to a constant string.
849 #~(let ((build-id
850 (lambda (out)
851 (let* ((nix-store (string-append
852 (or (getenv "NIX_STORE") "/gnu/store")
853 "/"))
854 (filename
855 (string-replace-substring out nix-store ""))
856 (hash (match:substring (string-match "[0-9a-z]{32}"
857 filename)))
858 (bv (nix-base32-string->bytevector hash)))
859 (format #f "0x~x"
860 (bytevector-u32-ref bv 0 (endianness big)))))))
861 (list (string-append "-DBUILD_ID=" (build-id #$output))))
862 #:phases
863 #~(modify-phases %standard-phases
864 ;; HOME must be defined for .vst3
865 (add-after 'unpack 'set-home-directory
866 (lambda _ (setenv "HOME" "HOME")))
867 (add-after 'unpack 'patch-libraries
868 (lambda* (#:key inputs #:allow-other-keys)
869 (substitute* "libs/JUCE/modules/juce_gui_basics/native/juce_XSymbols_linux.h"
870 (("libX11.so.6")
871 (search-input-file inputs "/lib/libX11.so.6"))
872 (("libXext.so.6")
873 (search-input-file inputs "/lib/libXext.so.6"))
874 (("libXcursor.so.1")
875 (search-input-file inputs "/lib/libXcursor.so.1"))
876 (("libXinerama.so.1")
877 (search-input-file inputs "/lib/libXinerama.so.1"))
878 (("libXrender.so.1")
879 (search-input-file inputs "/lib/libXrender.so.1"))
880 (("libXrandr.so.2")
881 (search-input-file inputs "/lib/libXrandr.so.2")))))
882 (add-after 'unpack 'enable-lv2-format
883 (lambda _
884 (substitute* "Source/CMakeLists.txt"
885 (("set\\(DEXED_JUCE_FORMATS Standalone\\).*" m)
886 (string-append m "
887if(NOT DEXED_SKIP_LV2)
888 list(APPEND DEXED_JUCE_FORMATS LV2)
889endif()
890"))
891 (("PRODUCT_NAME \"Dexed\".*" m)
892 (string-append m "
893LV2URI \"https://github.com/asb2m10/dexed\"
894")))))
895 (replace 'install
896 (lambda* (#:key build-type #:allow-other-keys)
897 (with-directory-excursion "Source/Dexed_artefacts"
898 (install-file (string-append build-type "/Standalone/Dexed")
899 (string-append #$output "/bin"))
900 (mkdir-p (string-append #$output:clap "/lib"))
901 (copy-recursively (string-append build-type "/CLAP")
902 (string-append #$output:clap "/lib"))
903 (mkdir-p (string-append #$output:lv2 "/lib"))
904 (copy-recursively (string-append build-type "/LV2")
905 (string-append #$output:lv2 "/lib"))
906 (mkdir-p (string-append #$output:vst3 "/lib"))
907 (copy-recursively (string-append build-type "/VST3")
908 (string-append #$output:vst3 "/lib"))))))))
909 (inputs
910 (list alsa-lib
911 freetype
912 gtk+
913 jack-2
914 libx11
915 libxcursor
916 libxext
917 libxinerama
918 libxrandr
919 libxrender
920 lv2
921 mesa))
922 (native-inputs
923 (list pkg-config))
924 (outputs '("out" "lv2" "clap" "vst3"))
925 (home-page "https://asb2m10.github.io/dexed/")
926 (synopsis "Frequency modulation (FM) plugin synthesizer")
927 (description
928 "Dexed is a multi-platform, multi-format plugin synthesizer. The sound
929engine is closely modeled on the original Yamaha DX7 characteristics. Dexed
930is also a MIDI cartridge librarian/manager for the DX7. Features include:
931
932@enumerate
933@item 144 DAW automatable DX7 parameters available from one single panel;
934@item It fully supports DX7 input and output Sysex messages; including
935 controller change. This means that you can use this with a native DX7/TX7 as
936 a patch editor and sysex manager.
937@item Every FM operator has a realtime VU meter to know which one is active.
938@item It can load/save any DX7/TX7 sysex programs. It is also possible to
939 save a single program into a different sysex file.
940@end enumerate
941
942Dexed can be configured to use some of the original math limitation of a DX
943synthesizer. This does not only apply to the DAC, it also involves the bit
944resolution of the sine waves and the way that the amplitude is applied to each
945operator. Dexed comes with three engine types:
946
947@enumerate
948@item Modern: this is the original 24-bit implementation.
949@item Mark I: Based on the OPL Series but at a higher resolution (LUT are
950 10-bits). The target of this engine is to be closest to the real DX7.
951@item OPL Series: this is an experimental 8-bit implementation of the reversed
952 engineered OPL family chips.
953@end enumerate
954")
955 (license license:gpl3+)))
956
816(define-public dsp 957(define-public dsp
817 (package 958 (package
818 (name "dsp") 959 (name "dsp")