Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package request: python3Packages.pedalboard #351988

Open
hakan-demirli opened this issue Oct 28, 2024 · 3 comments
Open

Package request: python3Packages.pedalboard #351988

hakan-demirli opened this issue Oct 28, 2024 · 3 comments
Labels
0.kind: packaging request Request for a new package to be added 6.topic: python

Comments

@hakan-demirli
Copy link
Member

Project description
pedalboard is a Python library for working with audio: reading, writing, rendering, adding effects, and more. It supports most popular audio file formats and a number of common audio effects out of the box, and also allows the use of VST3® and Audio Unit formats for loading third-party software instruments and effects.

Metadata


Add a 👍 reaction to issues you find important.

@hakan-demirli hakan-demirli added the 0.kind: packaging request Request for a new package to be added label Oct 28, 2024
@hakan-demirli

This comment was marked as outdated.

@hakan-demirli

This comment was marked as outdated.

@hakan-demirli
Copy link
Member Author

Works on nixos-unstable:

{
  pkgs,
  lib,
  python3,
  fetchgit,
  fetchFromGitHub,
  stdenv,
  libcxx,
  darwin,
  pcre,
}:

let
  # Pedalboard still uses JUCE 6 as a submodule.
  juce6 = pkgs.juce.overrideAttrs (attrs: {
    version = "6.1.4";
    patches = attrs.patches or [ ] ++ [ ./juce.patch ];

    src = fetchFromGitHub {
      owner = "juce-framework";
      repo = "juce";
      rev = "ddaa09110392a4419fecbb6d3022bede89b7e841";
      hash = "sha256-XXG5BHLjYHFX4SE+GR0p+4p3lpvQZVRyUv080eRmvtA=";
    };
  });
in
python3.pkgs.buildPythonPackage rec {
  pname = "pedalboard";
  version = "0.8.3";
  pyproject = true;

  NIX_CFLAGS_COMPILE = lib.optionals stdenv.isDarwin [
    "-I${lib.getDev libcxx}/include/c++/v1"
    "-I${juce6}/share/juce/modules"
    "-I${juce6}/share/juce/modules/juce_audio_processors/format_types/VST3_SDK"
  ];

  src = fetchgit {
    url = "https://github.com/spotify/pedalboard.git";
    rev = "v${version}";
    hash = "sha256-kp2PJ3dadfbsxtAogYnwc0dzfEbmET/tIUP0M9B0Udg=";
    fetchSubmodules = true;
  };

  patches = [ ./juce.patch ];
  patchFlags = [
    "-p1"
    "-d"
    "JUCE"
  ];

  nativeBuildInputs = with python3.pkgs; [
    pkgs.pkg-config-unwrapped
    pkgs.python3Packages.pkgconfig
    setuptools
    wheel
    pybind11
    juce6
    pcre

    pkgs.gnumake
    pkgs.xorg.libX11.dev
    pkgs.xorg.libXft
    pkgs.xorg.libXinerama
    pkgs.xorg.xrandr
    pkgs.xorg.libXrandr
    pkgs.xorg.libxshmfence
    pkgs.xorg.libXext
    pkgs.xorg.xcursorgen
    pkgs.xorg.libXcursor

    (pkgs.python3Packages.freetype-py.overridePythonAttrs (old: {
      propagatedBuildInputs = old.propagatedBuildInputs ++ [
        pkgs.pkg-config-unwrapped
        pkgs.freetype
        pkgs.libsForQt5.libopenshot-audio

        juce6

        pkgs.gnumake
        pkgs.xorg.libX11.dev
        pkgs.xorg.libXft
        pkgs.xorg.libXinerama
        pkgs.xorg.xrandr
        pkgs.xorg.libXrandr
        pkgs.xorg.libxshmfence
        pkgs.xorg.libXext
        pkgs.xorg.xcursorgen
        pkgs.xorg.libXcursor

      ];
    }))

  ];

  propagatedBuildInputs =
    with python3.pkgs;
    [
      pkgs.pkg-config-unwrapped
      pkgs.python3Packages.pkgconfig
      numpy
      setuptools
      wheel
      pybind11
      juce6

      pkgs.freetype
      juce6
      pkgs.libsForQt5.libopenshot-audio

      pkgs.gnumake
      pkgs.xorg.libX11.dev
      pkgs.xorg.libXft
      pkgs.xorg.libXinerama
      pkgs.xorg.xrandr
      pkgs.xorg.libXrandr
      pkgs.xorg.libxshmfence
      pkgs.xorg.libXext
      pkgs.xorg.xcursorgen
      pkgs.xorg.libXcursor

    ]
    ++ lib.optionals stdenv.isDarwin (
      with darwin.apple_sdk.frameworks;
      [
        Accelerate
        AudioToolbox
        AudioUnit
        Carbon
        Cocoa
        CoreAudio
        CoreAudioKit
        CoreServices
        DiscRecording
        MetalKit
        WebKit
      ]
    );

  pythonImportsCheck = [ "pedalboard" ];

  meta = with lib; {
    description = "A Python library for working with audio";
    homepage = "https://github.com/spotify/pedalboard";
    license = licenses.gpl3Only;
    maintainers = with maintainers; [ carlthome ];
    mainProgram = "pedalboard";
  };
}
diff --git a/modules/juce_dsp/frequency/juce_Windowing.cpp b/modules/juce_dsp/frequency/juce_Windowing.cpp
index 13097817e..f5fcf62a8 100644
--- a/modules/juce_dsp/frequency/juce_Windowing.cpp
+++ b/modules/juce_dsp/frequency/juce_Windowing.cpp
@@ -23,6 +23,8 @@
   ==============================================================================
 */
 
+#include <utility>
+
 namespace juce
 {
 namespace dsp
diff --git a/modules/juce_dsp/frequency/juce_Windowing.h b/modules/juce_dsp/frequency/juce_Windowing.h
index 2aca0ad20..5ac5c0f2a 100644
--- a/modules/juce_dsp/frequency/juce_Windowing.h
+++ b/modules/juce_dsp/frequency/juce_Windowing.h
@@ -23,6 +23,8 @@
   ==============================================================================
 */
 
+#include <utility>
+
 namespace juce
 {
 namespace dsp
diff --git a/modules/juce_gui_basics/misc/juce_DropShadower.cpp b/modules/juce_gui_basics/misc/juce_DropShadower.cpp
index cbd05cc7f..f9a26693d 100644
--- a/modules/juce_gui_basics/misc/juce_DropShadower.cpp
+++ b/modules/juce_gui_basics/misc/juce_DropShadower.cpp
@@ -22,6 +22,8 @@
 
   ==============================================================================
 */
+#include <utility>
+
 
 namespace juce
 {
diff --git a/modules/juce_gui_basics/misc/juce_DropShadower.h b/modules/juce_gui_basics/misc/juce_DropShadower.h
index 38babb5a3..4c9540fec 100644
--- a/modules/juce_gui_basics/misc/juce_DropShadower.h
+++ b/modules/juce_gui_basics/misc/juce_DropShadower.h
@@ -23,6 +23,8 @@
   ==============================================================================
 */
 
+#include <utility>
+
 namespace juce
 {
 
diff --git a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp
index e81cc47dd..9faf76ffc 100644
--- a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp
+++ b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp
@@ -23,6 +23,8 @@
   ==============================================================================
 */
 
+#include <utility>
+
 namespace juce
 {
 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.kind: packaging request Request for a new package to be added 6.topic: python
Projects
None yet
Development

No branches or pull requests

2 participants