Giter Site home page Giter Site logo

se2juce's Introduction

Introduction

SE2JUCE supports exporting SynthEdit projects to C++ JUCE projects.

JUCE Projects

  • Can target more plugin formats than SynthEdit alone, like AAX, Standalone, VST2 and CLAP etc.
  • Hide all resources and SEMs inside a single binary file.
  • Can display the GUI you created in SynthEdit, or a custom GUI made with JUCE.

Note that using SE2JUCE is a complex, advanced proceedure that involves programming in C++ and having an understanding of CMake and JUCE. Also SE2JUCE requires you to have access to the source-code of any SEMs you wish to use. This may not be possible in some cases, especially with 3rd-party modules. 3rd-party module creators have no obligation to share their source-code.

Prerequisites

Install SynthEdit 1.5 Alpha. https://synthedit.com/alpha/?url=/alpha

Install Visual Studio or your IDE of choice. https://visualstudio.microsoft.com/vs/

Install CMake. https://cmake.org/download/

Getting Started with the PD303 example

clone SE2JUCE repo. https://github.com/JeffMcClintock/SE2JUCE

get JUCE. https://juce.com/get-juce/download

Optional:

clone SE2JUCE_Projects repo. This provides an example plugin you can copy. https://github.com/JeffMcClintock/SE2JUCE_Projects

(to export you own plugin, copy the entire PD303 folder, rename it and edit the two cmakelists.txt files, changing the plugin name etc)

Open SE

open project from SE2JUCE_Plugins/PD303/SE_Project/PD303.se1

"File/Export Juce" This will copy the project and it's skin to the 'Resources' folder of the JUCE project.

close SE

Open CMake GUI

Under "where is the source code" enter location of SE2JUCE_Plugins folder

Under "where to build the binaries" enter something like C:\build_SE2JUCE_Plugins (or anywhere you prefer to put the temporary files created during the build).

Click 'Configure", choose whatever IDE you prefer. Ignore the error message.

Look for the variables 'JUCE_FOLDER_HERE' and 'SE2JUCE_FOLDER_HERE' . Browse for your actual JUCE folder, and the correct SE2JUCE folder

click 'generate'

click 'open project' (your IDE should open)

build and try out the plugin

Missing modules

Once you start exporting your own plugins with SE2JUCE you will likely experince crashes due to the plugin not containing some module it requires.

To identify which modules need to be added to the project, run the plugin or standalone app in a debugger. ('Set as Startup Project' the Standalone, set Solution Configuration to 'Debug', press 'Start Debugging F5')

When you run the standalone, it will crash (assert) at the point where it is trying to load the missing modules. (hit 'Retry' to break into the debugger)

You should see in the 'Output' Window a list of the missing modules.

In the example above, it's the 'SE Keyboard (MIDI)' that is missing from the build.

Adding an additional module

To add an extra module to the build you will need access to it's source code. In the case of the keyboard, the code is in the SE2JUCE\SE_DSP_CORE\modules\ControlsXp folder, but not actually included in the build yet.

Open the SE2JUCE_Plugins\PD303\CMakeLists.txt file, look for the part that mentions 'Adsr4.cpp'. Add a additional reference to the new module you want to include. If the module has both GUI and DSP parts, add both.

Now open the file SE2JUCE_Plugins/PD303/Source/ExtraModules.cpp and add lines like the following.

Finally add the SE_DECLARE_INIT_STATIC_FILE macro line to each module file (if not already done)

Build and run the Standalone app. The Keyboard module now works in the JUCE plugin.

Presets

The plugin you build with SE2JUCE will save presets in xmlformat. Any preset the user saves will go to the folder:

Windows: C:\ProgramData\YourVendorName\YourPluginName\USER Presets

Mac: /Library/Application Support/YourVendorName/YourPluginName/USER Presets

Your plugin can also include read-only factory presets. To include any factory preset into the plugin binary, add it to the folder Resources/presets

Further help and information

SynthEdit - https://groups.io/g/synthedit

JUCE - https://forum.juce.com/

AAX - https://www.avid.com/alliance-partner-program/aax-connectivity-toolkit

CLAP - https://github.com/free-audio/clap-juce-extensions

VST2 - https://forum.juce.com/t/how-to-offer-vst2-plugins-now/39195

se2juce's People

Contributors

jeffmcclintock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.