Si es un músico que busca usar Surge XT, descargue el binario apropiado de nuestro sitio web. Surge Synth Team realiza lanzamientos regulares para todas las plataformas compatibles.
CI: Release: Release -x:
Surge XT es un sintetizador híbrido gratuito y de código abierto, originalmente escrito y vendido como producto comercial por @Kurasu/Claes Johanson en Vember Audio. En septiembre de 2018, Claes decidió lanzar una versión parcialmente completa de Surge 1.6 bajo GPL3, y un grupo de desarrolladores lo ha mejorado desde entonces. Puede obtener más información sobre el equipo en https://surge-synth-team.org/ o conectarse con nosotros en Discord.
Si también desea participar en discusiones, pruebas y diseño de Surge XT, tenemos detalles a continuación y también en la sección de contribuyentes del sitio web de Surge XT.
Este readMe sirve como la raíz de la documentación del desarrollador para Surge XT.
¡Damos la bienvenida a los desarrolladores! Nuestro flujo de trabajo gira en torno a los problemas de GitHub en este repositorio y conversaciones en nuestro servidor Discord. Puede leer nuestras pautas de desarrollador en nuestro documento de Guía de desarrolladores. Si desea contribuir y es nuevo en GIT, también tenemos un GIT cómo, adaptado al desarrollo de Surge XT.
La Guía de desarrolladores también contiene información sobre pruebas y depuración en hosts particulares en plataformas particulares.
Surge XT usa CMake para todas sus tareas relacionadas con la construcción, y requiere un conjunto de herramientas gratuitas para construir el sintetizador. Si tiene un entorno de desarrollo configurado, casi definitivamente tiene lo que necesita, pero si no, consulte:
Una vez que haya configurado su entorno, debe controlar el código XX Surge con git, obtener submódulos, ejecutar cmake para configurar y luego ejecutar cmake para construir. Su IDE puede admitir CMake (más sobre eso a continuación), pero una forma confiable de construir Surge XT en todas las plataformas es:
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
Esto construirá todos los activos binarios de Surge XT en el directorio build/surge_xt_products
y, a menudo, es una fórmula suficiente para hacer una construcción.
Nuestro git cómo explica cómo estamos usando Git. Si desea desarrollarse con su propia horquilla, consulte allí, pero la versión corta es (1) Bifurque este proyecto en GitHub y (2) clone su horquilla, en lugar del repositorio principal como se describió anteriormente. Así que presione el botón Fork
aquí y luego:
git clone [email protected]:youruserid/surge.git
y el resto de los pasos no cambian.
Cuando ejecuta el primer paso CMake, CMake generará archivos compatibles con IDE para usted. En Windows, generará archivos de Visual Studio. En Mac generará Makefiles de forma predeterminada, pero si agrega el argumento -GXcode
puede obtener un proyecto XCode si lo desea.
Los desarrolladores de Surge XT se desarrollan regularmente con todo tipo de herramientas. Clion, Visual Studio, VIM, Emacs, VS Code y muchos otros pueden funcionar correctamente con el software.
Debido a las restricciones de licencia, no se pueden redistribuir las compilaciones de VST2 de Surge XT. Sin embargo, es posible construir un VST2 de Surge XT para su propio uso personal. Primero, obtenga una copia local del VST2 SDK y descózalo a una carpeta de su elección. Luego establezca VST2SDK_DIR
para apuntar a esa carpeta:
export VST2SDK_DIR="/your/path/to/VST2SDK"
o, en el símbolo del sistema de Windows:
set VST2SDK_DIR=c:pathtoVST2SDK
Finalmente, ejecute Cmake de nuevo y construya los objetivos VST2:
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
Luego tendrá complementos VST2 en build_vst2/surge-xt_artefacts/Release/VST
y build_vst2/surge-fx_artefacts/Release/VST
respectivamente. Ajuste el número de núcleos que se utilizarán para el proceso de construcción modificando el valor del argumento --parallel
.
En Windows, la construcción con ASIO a menudo se prefiere para Surge XT Standalone, ya que permite a los usuarios usar el controlador de audio de baja latencia ASIO.
Desafortunadamente, debido a los conflictos de licencias, no se pueden redistribuir binarios de Surge XT que se construyen con ASIO. Sin embargo, puede construir Surge XT con ASIO para su propio uso personal, siempre que no redistribuya esas compilaciones.
Si ya tiene una copia del ASIO SDK, ¡simplemente establezca la siguiente variable de entorno y listo!
set ASIOSDK_DIR=c:pathtoasio
Si no tiene una copia del ASIO SDK en mano, Cmake puede descargarla para usted y permitirle construir con ASIO bajo su propia licencia personal. Para habilitar esta funcionalidad, ejecute su comando de configuración de cmake de la siguiente manera:
cmake -Bbuild -DBUILD_USING_MY_ASIO_LICENSE=True
Surge XT 1.3 Family se mueve a Juce 7, que incluye apoyo para las construcciones de LV2. Por una variedad de razones, no construimos LV2 ni de forma predeterminada ni en nuestra tubería CI. Puede activar la compilación LV2 en su entorno agregando -DSURGE_BUILD_LV2=TRUE
en su compilación inicial de CMake.
Surge XT usa pybind
para exponer las entrañas del Código de sintetizador a Python para el acceso directo nativo a todas sus características. Esta es una herramienta principalmente útil para los desarrolladores, y el repositorio de Surge-Python muestra algunos usos.
Para usar Surge XT de esta manera, debe construir la extensión de Python. Así es como (esto muestra el resultado en Mac, pero Windows y Linux son similares).
Primero, configure una compilación con enlaces de Python activados:
cmake -Bignore/bpy -DSURGE_BUILD_PYTHON_BINDINGS=ON -DCMAKE_BUILD_TYPE=Release
Tenga en cuenta que el directorio ignore/bpy
podría ser lo que desee. El directorio ignore
es útil, ya que se ignora a través de .gitignore
.
Luego construya el complemento Python:
cmake --build ignore/bpy --parallel --target surgepy
que debería dar como resultado que el Python esté presente:
% ls ignore/bpy/src/surge-python/ * so
ignore/bpy/src/surge-python/surgepy.cpython-311-darwin.so
En Windows, busque el archivo .pyd
en su lugar:
ls ignore/bpy/src/surge-python/Debug/ * pyd
y debería ver un archivo como surgepy.cp312-win_amd64.pyd
Ahora finalmente puedes comenzar a Python para cargar eso. Aquí hay una sesión interactiva de ejemplo, pero funcionará de manera similar en la herramienta de su elección:
% 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 ()
En Windows, ejecute sys.path.append("ignore/bpy/src/surge-python/Debug")
en su lugar, ya que la ruta es ligeramente diferente.
El Target Target surge-xt-distribution
crea una imagen de instalación en su plataforma al final del proceso de compilación. En Mac y Linux, el generador de instalación está integrado en la plataforma; En Windows, nuestro archivo CMake usa NUGET para descargar Innosetup, por lo que necesitará la CLI nuget.exe en su ruta.
Tenemos una variedad de otras opciones y objetivos de CMake que pueden permitirle desarrollar e instalar Surge XT más fácilmente.
Juce admite un modo donde se copia un complemento (AU, VST3, etc.) a un área de instalación local después de una compilación. Esto está desactivado de forma predeterminada con CMake, pero puede activarlo con -DSURGE_COPY_AFTER_BUILD=True
en el momento cmake
. Si hace esto en Unixes, la construcción de los objetivos VST3 o AU los copiará en el área local apropiada ( ~/.vst3
en Linux, ~/Library/Audio/Plugins
en Mac). En Windows intentará instalar el VST3, por lo que configurar esta opción puede requerir privilegios de administrador en su entorno de compilación.
En los sistemas que son UNIX AND NOT APPLE
, el archivo CMake proporciona un objetivo de instalación que instalará todos los activos necesarios en el CMAKE_INSTALL_PREFIX
. Esto significa que se puede lograr una instalación completa por:
cmake -Bignore/sxt -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build ignore/sxt --config Release --parallel 8
sudo cmake --install ignore/sxt
Y debe obtener una instalación en funcionamiento en /usr/bin
, /usr/share
y /usr/lib
.
Si está construyendo con Visual Studio 2019, use el indicador -A
en su comando CMake para especificar 32/64 bits:
# 64-bit
cmake -Bbuild -G " Visual Studio 16 2019 " -A x64
# 32-bit
cmake -Bbuild32 -G " Visual Studio 16 2019 " -A Win32
Si está utilizando una versión anterior de Visual Studio, debe especificar su preferencia con su elección del generador CMake:
# 64-bit
cmake -Bbuild -G " Visual Studio 15 2017 Win64 "
# 32-bit
cmake -Bbuild32 -G " Visual Studio 15 2017 "
Para construir un binario gordo en una Mac, simplemente agregue el siguiente argumento CMake a su ejecución inicial de CMake:
-D"CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
Surge XT se construye de forma nativa en sistemas operativos Raspberry PI de 64 bits. Instale la cadena de herramientas de su compilador y ejecute los comandos CMake estándar. Surge XT no se basará en sistemas Raspberry Pi de 32 bits, dando un error en el reverbio de Spring y en otras partes del código DSP. Si desea trabajar para solucionar esto, vea el comentario en cmakelists.txt o envíenos una línea sobre nuestra discordia o github.
Sin embargo, a partir de junio de 2023, el GCC en algunas distribuciones tiene un error aparente que genera una advertencia engañosa que promovemos a un error. Encontramos que Surge XT se compila limpiamente con gcc (Debian 10.2.1-6) 10.2.1 20210110
, pero no con otros. Surge XT también se compila con Clang 11. El error en cuestión toma el formulario:
/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];
Si recibe ese error y está trabajando en RPI, sus opciones son:
Construir con clang:
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
Para compilar cruzado para AARCH64, use la cadena de herramientas Cmake Linux para AARCH64, como se muestra en la tubería de Azure aquí:
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
Por supuesto, esa cadena de herramientas toma decisiones específicas. Puede tomar otras opciones siempre que (1) establezca la variable Cmake LINUX_ON_ARM
y (2) se asegura de que su host y su compilador de destino sean de 64 bits.
Surge XT Compiles cruzados a MacOS Intel de Linux y BSD.
libclang_rt
construida por su script build_compiler_rt.sh
. cmake -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-apple-darwin20.4-clang.cmake -DCMAKE_FIND_ROOT_PATH=<path_to_osxcross_sdk> -Bbuild
cmake --build build
Cada versión de Surge de 1.6 Beta 6 más o menos tiene una rama en este repositorio. Simplemente échale un vistazo y lee el ReadMe asociado.
Necesita instalar lo siguiente:
Para construir sobre macOS, necesita Xcode
, Xcode Command Line Utilities
y CMake. Una vez que haya instalado Xcode
en la tienda de aplicaciones, la línea de comando para instalar las Xcode Command Line Utilities
es:
xcode-select --install
Hay una variedad de formas de instalar CMake. Si usa Homebrew, puede:
brew install cmake
La mayoría de los sistemas de Linux tienen CMake, GIT y un compilador moderno de C ++ instalado. Asegúrate de que el tuyo lo haga. Probamos con la mayoría de los GCC mayores de 7 años más o menos y se estremecemos después de 9 o 10. También necesitará instalar un conjunto de dependencias. Si usa apt
, haz:
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
Puede encontrar más información sobre Surge XT en Linux y otras distribuciones similares a UNIX en este documento.
Además de los comandos de compilación anteriores, utilizamos tuberías de Azure para la integración continua. Esto significa que cada solicitud de extracción se construirá automáticamente en todo nuestro entorno, y una compilación limpia en todas las plataformas es un pre-requisito obvio. Si tiene preguntas sobre nuestras herramientas de CI, no dude en preguntar en nuestro servidor Discord. ¡Estamos agradecidos con Microsoft por proporcionar tuberías de Azure de forma gratuita para la comunidad de código abierto!