diff options
| author | Ricardo Wurmus <rekado@elephly.net> | 2026-02-03 19:26:09 +0100 |
|---|---|---|
| committer | Ricardo Wurmus <rekado@elephly.net> | 2026-02-06 21:40:34 +0100 |
| commit | bab1880fca2bd8e16f662e59243618b34ea0492d (patch) | |
| tree | 1817699b14801af9362fe8cd995c9a623594d937 /gnu/packages | |
| parent | 95e47fba00d6523599013cfce962d128144b3beb (diff) | |
gnu: Add dexed.dexed
* gnu/packages/audio.scm (dexed): New variable.
Change-Id: I0769a822060e85cfb902fe79525dce4a7e2d169a
Diffstat (limited to 'gnu/packages')
| -rw-r--r-- | gnu/packages/audio.scm | 141 |
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 | |||
| 813 | streams from live audio.") | 813 | streams 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 " | ||
| 887 | if(NOT DEXED_SKIP_LV2) | ||
| 888 | list(APPEND DEXED_JUCE_FORMATS LV2) | ||
| 889 | endif() | ||
| 890 | ")) | ||
| 891 | (("PRODUCT_NAME \"Dexed\".*" m) | ||
| 892 | (string-append m " | ||
| 893 | LV2URI \"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 | ||
| 929 | engine is closely modeled on the original Yamaha DX7 characteristics. Dexed | ||
| 930 | is 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 | |||
| 942 | Dexed can be configured to use some of the original math limitation of a DX | ||
| 943 | synthesizer. This does not only apply to the DAC, it also involves the bit | ||
| 944 | resolution of the sine waves and the way that the amplitude is applied to each | ||
| 945 | operator. 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") |
