Se você é um músico que deseja usar o Surge XT, faça o download do binário apropriado do nosso site. A equipe de sintetizador de surtos faz lançamentos regulares para todas as plataformas suportadas.
CI: Release: Release-XT:
O Surge XT é um sintetizador híbrido gratuito e de código aberto, originalmente escrito e vendido como um produto comercial por @kurasu/claes johanson no Vember Audio. Em setembro de 2018, o CLAES decidiu lançar uma versão parcialmente concluída do Surge 1.6 sob o GPL3, e um grupo de desenvolvedores o aprimora desde então. Você pode aprender mais sobre a equipe em https://surge-synth-team.org/ ou se conectar conosco na Discord.
Se você também deseja participar de discussões, testes e design do Surge XT, temos detalhes abaixo e também na seção de colaboradores do site Surge XT.
Este readme serve como a raiz da documentação do desenvolvedor para o Surge XT.
Congratulamo -nos com desenvolvedores! Nosso fluxo de trabalho gira em torno dos problemas do GitHub neste repositório e conversas em nosso servidor Discord. Você pode ler nossas diretrizes de desenvolvedor em nosso documento de guia de desenvolvedores. Se você deseja contribuir e é novo no Git, também temos um git como fazer, adaptado ao desenvolvimento do Surge XT.
O guia do desenvolvedor também contém informações sobre testes e depuração em hosts específicos em plataformas específicas.
O Surge XT usa o CMake para todas as suas tarefas relacionadas à construção e requer um conjunto de ferramentas gratuitas para construir o sintetizador. Se você tem um ambiente de desenvolvimento configurado, quase definitivamente tem o que precisa, mas, se não, verifique:
Depois de configurar seu ambiente, você precisa verificar o código do Surge XT com o Git, pegar submódulos, executar o CMake para configurar e execute o CMake para criar. Seu IDE pode suportar cmake (mais sobre isso abaixo), mas uma maneira confiável de criar o Surge XT em todas as plataformas é:
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
Isso criará todos os ativos binários do Surge XT no diretório build/surge_xt_products
e geralmente é uma fórmula suficiente para fazer uma compilação.
Nosso git como explica como estamos usando o Git. Se você deseja desenvolver a partir do seu próprio garfo, consulte lá, mas a versão curta é (1) bifurcar este projeto no Github e (2) clonar o garfo, em vez do repo principal, conforme descrito acima. Então, pressione o botão Fork
aqui e depois:
git clone [email protected]:youruserid/surge.git
e o restante das etapas permanece inalterado.
Quando você executa a primeira etapa do CMake, o CMake gera arquivos compatíveis com IDE para você. No Windows, ele gerará arquivos do Visual Studio. No Mac, ele gerará o Makefiles por padrão, mas se você adicionar o argumento -GXcode
poderá obter um projeto Xcode, se desejar.
Os desenvolvedores do Surge XT se desenvolvem regularmente com todos os tipos de ferramentas. Clion, Visual Studio, Vim, Emacs, VS Code e muitos outros podem trabalhar corretamente com o software.
Devido a restrições de licenciamento, as construções do VST2 do Surge XT podem não ser redistribuídas. No entanto, é possível construir um VST2 de Surge XT para seu uso pessoal. Primeiro, obtenha uma cópia local do VST2 SDK e descompacte -a em uma pasta de sua escolha. Em seguida, defina VST2SDK_DIR
para apontar para essa pasta:
export VST2SDK_DIR="/your/path/to/VST2SDK"
Ou, no prompt de comando do Windows:
set VST2SDK_DIR=c:pathtoVST2SDK
Finalmente, execute o Cmake de novo e construa os alvos 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
Você terá plugins VST2 em build_vst2/surge-xt_artefacts/Release/VST
e build_vst2/surge-fx_artefacts/Release/VST
respectivamente. Ajuste o número de núcleos que serão usados para o processo de criação, modificando o valor do argumento --parallel
.
No Windows, a construção do ASIO é frequentemente preferida para o Surge XT Standalone, pois permite que os usuários usem o driver de áudio de baixa latência da ASIO.
Infelizmente, devido a conflitos de licenciamento, os binários do Surge XT que são construídos com ASIO podem não ser redistribuídos. No entanto, você pode criar o Surge XT com a ASIO para seu próprio uso pessoal, desde que não redistribua essas compilações.
Se você já possui uma cópia do ASIO SDK, basta definir a seguinte variável de ambiente e pronto!
set ASIOSDK_DIR=c:pathtoasio
Se você não tiver uma cópia do ASIO SDK em mãos, o CMake pode baixá -lo para você e permitir que você construa com a ASIO sob sua própria licença pessoal. Para ativar essa funcionalidade, execute seu comando de configuração do CMake da seguinte forma:
cmake -Bbuild -DBUILD_USING_MY_ASIO_LICENSE=True
Surge XT 1.3 Family Moves para Juce 7, que inclui suporte para construções do LV2. Por vários motivos, não construímos o LV2 por padrão ou em nosso pipeline de CI. Você pode ativar a construção LV2 em seu ambiente adicionando -DSURGE_BUILD_LV2=TRUE
na sua compilação inicial de cmake.
O Surge XT usa pybind
para expor as entranhas do código Synth ao Python para acesso nativo direto a todos os seus recursos. Esta é uma ferramenta principalmente útil para os desenvolvedores, e o repositório de pítone de surge mostra alguns usos.
Para usar o Surge XT dessa maneira, você precisa construir a extensão Python. Veja como (isso mostra o resultado no Mac, mas o Windows e o Linux são semelhantes).
Primeiro, configure uma construção com as ligações do Python ativadas:
cmake -Bignore/bpy -DSURGE_BUILD_PYTHON_BINDINGS=ON -DCMAKE_BUILD_TYPE=Release
Observe que o diretório ignore/bpy
pode ser o que você quiser. O diretório ignore
é útil, pois é ignorado via .gitignore
.
Em seguida, construa o plugin Python:
cmake --build ignore/bpy --parallel --target surgepy
o que deve resultar em Python .dll estar presente:
% ls ignore/bpy/src/surge-python/ * so
ignore/bpy/src/surge-python/surgepy.cpython-311-darwin.so
No Windows, procure o arquivo .pyd
:
ls ignore/bpy/src/surge-python/Debug/ * pyd
E você deve ver um arquivo como surgepy.cp312-win_amd64.pyd
Agora você pode finalmente começar o Python para carregar isso. Aqui está um exemplo de sessão interativa, mas funcionará da mesma forma na ferramenta de sua escolha:
% 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 ()
No Windows, execute sys.path.append("ignore/bpy/src/surge-python/Debug")
, pois o caminho é um pouco diferente.
A surge-xt-distribution
cria uma imagem de instalação em sua plataforma no final do processo de construção. No Mac e Linux, o gerador do instalador é incorporado na plataforma; No Windows, nosso arquivo cmake usa o NuGet para baixar o Innostup, para que você precise da CLI do Nuget.exe em seu caminho.
Temos uma variedade de outras opções e metas de cmake que podem permitir que você desenvolva e instale o Surge XT com mais facilidade.
O Juce suporta um modo em que um plug -in (Au, Vst3, etc ...) é copiado para uma área de instalação local após uma compilação. Isso está desativado por padrão com o cmake, mas você pode ativá -lo com -DSURGE_COPY_AFTER_BUILD=True
no tempo cmake
. Se você fizer isso no Unixes, a criação dos alvos VST3 ou Au os copiará para a área local apropriada ( ~/.vst3
no Linux, ~/Library/Audio/Plugins
no mac). No Windows, tentará instalar o VST3; portanto, definir essa opção pode exigir privilégios de administrador em seu ambiente de construção.
Nos sistemas que são UNIX AND NOT APPLE
, o arquivo cmake fornece um destino de instalação que instalará todos os ativos necessários no CMAKE_INSTALL_PREFIX
. Isso significa que uma instalação completa pode ser realizada 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
E você deve obter uma instalação de trabalho em /usr/bin
, /usr/share
e /usr/lib
.
Se você estiver construindo com o Visual Studio 2019, use o sinalizador -A
no seu 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
Se você estiver usando uma versão mais antiga do Visual Studio, deve especificar sua preferência com a sua escolha do gerador de cmake:
# 64-bit
cmake -Bbuild -G " Visual Studio 15 2017 Win64 "
# 32-bit
cmake -Bbuild32 -G " Visual Studio 15 2017 "
Para construir um binário gordo em um Mac, basta adicionar o seguinte argumento CMake ao seu CMake Run inicial:
-D"CMAKE_OSX_ARCHITECTURES=arm64;x86_64"
O Surge XT aumenta nativamente em sistemas operacionais Raspberry Pi de 64 bits. Instale sua cadeia de ferramentas do compilador e execute os comandos CMake padrão. O Surge XT não será construído em sistemas Raspberry Pi de 32 bits, dando um erro no reverb de mola e em outros lugares do código DSP. Se você deseja trabalhar para corrigir isso, consulte o comentário no cmakelists.txt ou envie -nos uma linha em nossa discórdia ou github.
Em junho de 2023, no entanto, o GCC em algumas distribuições tem um bug aparente que gera um aviso ilusório que promovemos para um erro. Encontramos o Surge XT compila de maneira limpa com gcc (Debian 10.2.1-6) 10.2.1 20210110
, mas não com outros. Surge XT também compila com Clang 11. O erro em questão assume o formulário:
/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];
Se você receber esse erro e estiver trabalhando no RPI, suas opções são:
Para construir com 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 cruzar-se para a AARCH64, use o CMake Linux Toolchain para aarch64, como mostrado no oleoduto do Azure aqui:
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
Obviamente, essa cadeia de ferramentas faz escolhas específicas. Você pode fazer outras escolhas desde que (1) defina a variável cmake LINUX_ON_ARM
e (2) garantir que seu host e seu compilador de destino sejam de 64 bits.
Surge XT Cross-Compiles para MacOS Intel de Linux e BSD.
libclang_rt
criada pelo 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 versão do surto de 1.6 beta 6 tem uma filial neste repositório. Basta dar uma olhada e ler o Readme associado.
Você precisa instalar o seguinte:
Para construir no macOS, você precisa de utilitários de linha de comando Xcode
, Xcode Command Line Utilities
e cmake. Depois de instalar Xcode
na App Store, a linha de comando para instalar os Xcode Command Line Utilities
é:
xcode-select --install
Existem várias maneiras de instalar o CMake. Se você usa homebrew, você pode:
brew install cmake
A maioria dos sistemas Linux possui cmake, git e um compilador C ++ moderno instalado. Verifique se o seu faz. Testamos com a maioria dos GCCs com mais de 7 anos e gulgs após 9 ou 10. Você também precisará instalar um conjunto de dependências. Se você usar apt
, faça:
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
Você pode encontrar mais informações sobre o Surge XT no Linux e outras distros do tipo Unix neste documento.
Além dos comandos de compilação acima, usamos oleodutos do Azure para integração contínua. Isso significa que toda e qualquer solicitação de tração será construída automaticamente em todo o nosso ambiente, e uma construção limpa em todas as plataformas é um pré-requisito óbvio. Se você tiver dúvidas sobre nossas ferramentas de IC, não hesite em perguntar em nosso servidor Discord. Agradecemos à Microsoft por fornecer a Pipelines do Azure gratuitamente para a comunidade de código aberto!