Wenn Sie ein Musiker sind, der Surge XT verwenden möchte, laden Sie bitte die entsprechende Binärdatei von unserer Website herunter. Das Surge -Synth -Team stellt regelmäßig veröffentlichte Veröffentlichungen für alle unterstützten Plattformen.
CI: Release: Release-XT:
Surge XT ist ein kostenloser und Open-Source-Hybrid-Synthesizer, der ursprünglich von @Kurasu/Claes Johanson bei Vember Audio als kommerzielles Produkt geschrieben und verkauft wurde. Im September 2018 beschloss Claes, eine teilweise abgeschlossene Version von Surge 1.6 unter GPL3 zu veröffentlichen, und eine Gruppe von Entwicklern hat sie seitdem verbessert. Weitere Informationen zum Team finden Sie unter https://surge-synthteam.org/ oder verbinden sich mit uns auf Discord.
Wenn Sie auch an Diskussionen, Testen und Design von Surge XT teilnehmen möchten, haben wir unten und auch im Abschnitt Mitwirkende der Surge XT -Website Details.
Diese Readme dient als Wurzel der Entwicklerdokumentation für Surge XT.
Wir begrüßen Entwickler! Unser Workflow dreht sich um GitHub -Probleme in diesem Repository und in den Gesprächen auf unserem Discord -Server. Sie können unsere Entwicklerrichtlinien in unserem Developer Guide -Dokument lesen. Wenn Sie einen Beitrag leisten und neu in Git sind, haben wir auch einen Git, der auf die Surge XT -Entwicklung zugeschnitten ist.
Der Entwicklerhandbuch enthält auch Informationen zu Tests und Debuggen in bestimmten Hosts auf bestimmten Plattformen.
Surge XT verwendet CMAKE für alle seine Build-bezogenen Aufgaben und benötigt eine Reihe kostenloser Tools, um den Synthesizer zu erstellen. Wenn Sie eine Entwicklungsumgebung eingerichtet haben, haben Sie auf jeden Fall das, was Sie brauchen, aber wenn nicht, schauen Sie sich bitte an:
Sobald Sie Ihre Umgebung eingerichtet haben, müssen Sie den Surge XT -Code mit Git, Submodules abrufen, CMAKE ausführen, um zu konfigurieren, und dann CMAKE ausführen, um sie zu erstellen. Ihre IDE kann CMake (mehr dazu unten) unterstützen, aber eine zuverlässige Möglichkeit, den Surge XT auf allen Plattformen zu erstellen, ist:
git clone https://github.com/surge-synthesizer/surge.git
cd surge
git submodule update --init --recursive
cmake -Bbuild
cmake --build build --config Release --target surge-staged-assets
Dadurch werden alle Surge XT -Binäranlagen im Verzeichnis build/surge_xt_products
erstellt und ist oft genug von einer Formel, um einen Build durchzuführen.
Unser Git, wie wir Git verwenden, erklärt, wie wir Git verwenden. Wenn Sie sich aus Ihrer eigenen Gabel entwickeln möchten, konsultieren Sie bitte dort, aber die Kurzversion ist (1) dieses Projekt auf Github und (2) Ihre Gabel und nicht das Hauptrepo wie oben beschrieben. Drücken Sie also die Fork
hier und dann:
git clone [email protected]:youruserid/surge.git
und der Rest der Schritte ist unverändert.
Wenn Sie den ersten CMAKE-Schritt ausführen, generiert CMake IDE-kompatible Dateien für Sie. Unter Windows generiert es Visual Studio -Dateien. Auf dem Mac generiert -GXcode
standardmäßig.
Surge XT -Entwickler entwickeln sich regelmäßig mit allen möglichen Tools. Clion, Visual Studio, VIM, EMACS, VS Code und viele andere können ordnungsgemäß mit der Software zusammenarbeiten.
Aufgrund von Lizenzbeschränkungen werden VST2 -Builds von Surge XT möglicherweise nicht umverteilt. Es ist jedoch möglich, einen VST2 von Surge XT für Ihren persönlichen Gebrauch zu erstellen. Erhalten Sie zunächst eine lokale Kopie des VST2 SDK und entpacken Sie sie in einen Ordner Ihrer Wahl. Setzen Sie dann VST2SDK_DIR
so, dass sie auf diesen Ordner verweisen:
export VST2SDK_DIR="/your/path/to/VST2SDK"
Oder in der Windows -Eingabeaufforderung:
set VST2SDK_DIR=c:pathtoVST2SDK
Führen Sie schließlich Cmake neu aus und erstellen Sie die VST2 -Ziele:
cmake -Bbuild_vst2
cmake --build build_vst2 --config Release --target surge-xt_VST --parallel 4
cmake --build build_vst2 --config Release --target surge-fx_VST --parallel 4
Anschließend haben Sie VST2-Plugins in build_vst2/surge-xt_artefacts/Release/VST
und build_vst2/surge-fx_artefacts/Release/VST
. Passen Sie die Anzahl der Kerne an, die für den Bauprozess verwendet werden, indem Sie den Wert des --parallel
ändern.
Unter Windows wird das Erstellen mit ASIO häufig für den Surge XT-Standalone bevorzugt, da Benutzer den ASIO-Audio-Treiber mit niedrigem Latenz verwenden können.
Leider können aufgrund von Lizenzkonflikten Binärdateien von Surge XT, die mit ASIO gebaut werden, nicht umverteilt werden. Sie können jedoch Surge XT mit ASIO für Ihren persönlichen Gebrauch erstellen, sofern Sie diese Builds nicht umverteilen.
Wenn Sie bereits eine Kopie des ASIO SDK haben, stellen Sie einfach die folgende Umgebungsvariable fest und Sie können loslegen!
set ASIOSDK_DIR=c:pathtoasio
Wenn Sie keine Kopie des ASIO SDK zur Hand haben, kann CMake es für Sie herunterladen und Ihnen erlauben, mit ASIO unter Ihrer persönlichen Lizenz zu erstellen. Um diese Funktionalität zu ermöglichen, führen Sie Ihren Befehl cmake configuration wie folgt aus:
cmake -Bbuild -DBUILD_USING_MY_ASIO_LICENSE=True
Surge XT 1.3 Familie geht zu JUCE 7, einschließlich Unterstützung für LV2 -Builds. Aus einer Vielzahl von Gründen bauen wir lv2 weder standardmäßig noch in unserer CI -Pipeline auf. Sie können den LV2 -Build in Ihrer Umgebung aktivieren, indem Sie -DSURGE_BUILD_LV2=TRUE
für Ihren ersten CMake -Build hinzufügen.
Surge XT verwendet pybind
, um die Innereien des Synthesizer dem Python -Code für den direkten nativen Zugriff auf alle seine Funktionen auszusetzen. Dies ist ein Werkzeug, das für Entwickler meist nützlich ist, und das Surge-Python-Repository zeigt einige Verwendungen.
Um Surge XT auf diese Weise zu verwenden, müssen Sie die Python -Erweiterung erstellen. So ist (dies zeigt das Ergebnis auf Mac, aber Windows und Linux sind ähnlich).
Konfigurieren Sie zunächst einen Build mit aktivierten Python -Bindungen:
cmake -Bignore/bpy -DSURGE_BUILD_PYTHON_BINDINGS=ON -DCMAKE_BUILD_TYPE=Release
Beachten Sie, dass das Verzeichnis ignore/bpy
alles sein könnte, was Sie wollen. Das Verzeichnis ignore
ist praktisch, da es über .gitignore
ignoriert wird.
Bauen Sie dann das Python -Plugin:
cmake --build ignore/bpy --parallel --target surgepy
was dazu führen sollte, dass die Python -Dll vorhanden ist:
% ls ignore/bpy/src/surge-python/ * so
ignore/bpy/src/surge-python/surgepy.cpython-311-darwin.so
Suchen Sie unter Windows stattdessen nach der .pyd
-Datei:
ls ignore/bpy/src/surge-python/Debug/ * pyd
und Sie sollten eine Datei wie surgepy.cp312-win_amd64.pyd
sehen
Jetzt können Sie endlich Python beginnen, um das zu laden. Hier ist eine Beispiel für eine interaktive Sitzung, die jedoch im Tool Ihrer Auswahl ähnlich funktioniert:
% python3
Python 3.11.4 (main, Jun 20 2023, 17:37:48) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type " help " , " copyright " , " credits " or " license " for more information.
>>> import sys
>>> sys.path.append( " ignore/bpy/src/surge-python " )
>>> import surgepy
>>> surgepy.getVersion ()
' 1.3.main.850bd53b '
>>> quit ()
Führen Sie stattdessen unter Windows sys.path.append("ignore/bpy/src/surge-python/Debug")
aus, da der Pfad etwas anders ist.
Das CMAKE-Ziel surge-xt-distribution
erstellt am Ende des Build-Prozesses ein Installationsbild auf Ihrer Plattform. Auf Mac und Linux ist der Installationsprogramm in die Plattform integriert. Unter Windows verwendet unsere CMake -Datei Nuget, um InnoSetup herunterzuladen, sodass Sie die Nuget.exe -CLI auf Ihrem Weg benötigen.
Wir haben eine Vielzahl anderer CMake -Optionen und -Ziele, mit denen Sie den Surge XT einfacher entwickeln und installieren können.
Juce unterstützt einen Modus, in dem nach einem Build ein Plugin (Au, VST3 usw.) in einen lokalen Installationsbereich kopiert wird. Dies ist standardmäßig mit CMAKE ausgeschaltet, aber Sie können es mit -DSURGE_COPY_AFTER_BUILD=True
zur cmake
-Zeit einschalten. Wenn Sie dies auf Unixes tun, kopieren Sie die VST3- oder AU -Ziele in den entsprechenden örtlichen Bereich ( ~/.vst3
unter Linux, ~/Library/Audio/Plugins
auf dem Mac). Unter Windows wird versucht, den VST3 zu installieren. Die Einstellung dieser Option erfordert möglicherweise Administratorrechte in Ihrer Build -Umgebung.
Bei Systemen, die UNIX AND NOT APPLE
sind, bietet die CMake -Datei ein Installationsziel, das alle benötigten Assets an der CMAKE_INSTALL_PREFIX
installiert. Dies bedeutet, dass eine vollständige Installation durch:
cmake -Bignore/sxt -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build ignore/sxt --config Release --parallel 8
sudo cmake --install ignore/sxt
Und Sie sollten eine funktionierende Installation in /usr/bin
/usr/share
und /usr/lib
erhalten.
Wenn Sie mit Visual Studio 2019 erstellen, verwenden Sie das Flag -A
-Flag in Ihrem CMAKE -Befehl, um 32/64 -Bit anzugeben:
# 64-bit
cmake -Bbuild -G " Visual Studio 16 2019 " -A x64
# 32-bit
cmake -Bbuild32 -G " Visual Studio 16 2019 " -A Win32
Wenn Sie eine ältere Version von Visual Studio verwenden, müssen Sie Ihre Präferenz mit Ihrer Wahl des CMake -Generators angeben:
# 64-bit
cmake -Bbuild -G " Visual Studio 15 2017 Win64 "
# 32-bit
cmake -Bbuild32 -G " Visual Studio 15 2017 "
Fügen Sie Ihrem anfänglichen CMake -Lauf einfach das folgende CMake -Argument hinzu, um einen fetten Binäranlagen auf einem Mac zu bauen:
-D"CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
Surge XT baut nativ auf 64-Bit-Himbeer-PI-Betriebssystemen auf. Installieren Sie Ihren Compiler Toolchain und führen Sie die Standard -CMake -Befehle aus. Surge XT baut nicht auf 32-Bit-Himbeer-PI-Systemen auf, was einen Fehler im Frühlingsanschlag und an anderer Stelle im DSP-Code ergibt. Wenn Sie daran arbeiten möchten, dies zu beheben, sehen Sie sich den Kommentar in CMakelists an.
Ab Juni 2023 hat GCC in einigen Verteilungen jedoch einen offensichtlichen Fehler, der eine spekulare Warnung erzeugt, die wir auf einen Fehler fördern. Wir haben festgestellt, dass Surge XT sauber mit gcc (Debian 10.2.1-6) 10.2.1 20210110
, jedoch nicht mit anderen. Surge XT kompiliert auch mit Klang 11. Der fragliche Fehler enthält das Formular:
/home/pi/Documents/github/surge/libs/sst/sst-filters/include/sst/filters/QuadFilterUnit_Impl.h:539:26: error: requested alignment 16 is larger than 8 [-Werror=attributes]
int DTi alignas(16)[4], SEi alignas(16)[4];
Wenn Sie diesen Fehler erhalten und an RPI arbeiten, sind Ihre Optionen:
Mit Clang bauen:
sudo apt install clang
cmake -Bignore/s13clang -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
cmake --build ignore/s13clang --target surge-xt_Standalone --parallel 3
Verwenden Sie die CMAKE Linux Toolchain für AARG64, um für AARG64 zu kompilieren, wie in der Azure-Pipeline hier gezeigt:
cmake -Bignore/xc64 -DCMAKE_TOOLCHAIN_FILE=cmake/linux-aarch64-ubuntu-crosscompile-toolchain.cmake -DCMAKE_BUILD_TYPE=DEBUG -GNinja
cmake --build ignore/xc64 --config Debug --target surge-testrunner
Natürlich trifft diese Toolchain spezifische Entscheidungen. Sie können andere Auswahlmöglichkeiten treffen, solange (1) Sie die CMAKE-Variable LINUX_ON_ARM
festlegen und (2) sicherstellen, dass Ihr Host und Ihr Ziel Compiler beide 64-Bit sind.
Surge XT Cross-Compiles zu MacOS Intel von Linux und BSD.
libclang_rt
installieren, die von ihrem Skript build_compiler_rt.sh
erstellt wurde. cmake -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-apple-darwin20.4-clang.cmake -DCMAKE_FIND_ROOT_PATH=<path_to_osxcross_sdk> -Bbuild
cmake --build build
Jede Surge -Version von 1.6 Beta 6 oder so hat in diesem Repository einen Zweig. Schauen Sie es sich einfach an und lesen Sie den zugehörigen Readme.
Sie müssen Folgendes installieren:
Um auf macOS zu erstellen, benötigen Sie Xcode
, Xcode Command Line Utilities
und CMake. Sobald Sie Xcode
im App Store installiert haben, ist die Befehlszeile zur Installation der Xcode Command Line Utilities
lautet:
xcode-select --install
Es gibt verschiedene Möglichkeiten, CMAKE zu installieren. Wenn Sie Homebrew verwenden, können Sie:
brew install cmake
Die meisten Linux -Systeme haben CMake, Git und einen modernen C ++ - Compiler installiert. Stellen Sie sicher, dass dies Ihre tut. Wir testen mit den meisten GCCs, die älter als 7 oder so und Klang nach 9 oder 10 sind. Sie müssen auch eine Reihe von Abhängigkeiten installieren. Wenn Sie apt
verwenden, tun Sie:
sudo apt install build-essential libcairo-dev libxkbcommon-x11-dev libxkbcommon-dev libxcb-cursor-dev libxcb-keysyms1-dev libxcb-util-dev libxrandr-dev libxinerama-dev libxcursor-dev libasound2-dev libjack-jackd2-dev
In diesem Dokument finden Sie weitere Informationen zu Surge XT unter Linux und anderen Unix-ähnlichen Distributionen .
Zusätzlich zu den oben genannten Build -Befehlen verwenden wir Azure -Pipelines zur kontinuierlichen Integration. Dies bedeutet, dass jede Ziehanfrage in unserer gesamten Umgebung automatisch aufgebaut wird und ein sauberer Build auf allen Plattformen eine offensichtliche Voraussetzung ist. Wenn Sie Fragen zu unseren CI -Tools haben, zögern Sie nicht, unseren Discord -Server zu stellen. Wir sind Microsoft dankbar, dass sie der Open-Source-Community kostenlos Azure-Pipelines zur Verfügung gestellt haben!