surge-synthesizer / surge Goto Github PK
View Code? Open in Web Editor NEWSynthesizer plug-in (previously released as Vember Audio Surge)
Home Page: https://surge-synthesizer.github.io/
License: GNU General Public License v3.0
Synthesizer plug-in (previously released as Vember Audio Surge)
Home Page: https://surge-synthesizer.github.io/
License: GNU General Public License v3.0
now that @baconpaul got the AudioUnit running, I spent a bit of time yesterday fooling around with the GUI-less Surge.
after loading VmbA > Surge
and trying to move some sliders, I'm getting no effect on the audio by moving the following:
so Macro Parameters and Global / FX parameters do not seem to affect the sound.
Maybe this is a case of needing the UI to enable something, but there's a start.
Luckily, Logic Pro X lets me hide these two chunks of nonfunctional sliders, after which I'm presented with:
Now, these are more responsive. The following work
Scene A Common:
Scene A Osc:
.. That's one page more page down, more to go..
Out of these, a couple work:
Scene A Osc Mixer
Scene A Filters:
Scene A Envelopes:
Scene A LFOs
and after that, we're left with these guys:
Looks like "Scene B" is MIA/DOA or needs some sort of button to enable.
Looking at these results, we're definitely on the way, but maybe there's something that needs to be toggled ON, for Filters, LFO, FX, Filter Envelopes, OSC2 & OSC3 to work.
Your thoughts, @kurasu ? Do most of these need to be "toggled ON" to work?
For the sake of my own memory, this is what Surge looks like:
Is there some documentation about that?
Is there some way premake5.lua could be used to get the submodule dependencies in the GitHub repo?
Hi,
I was not able to compile the VST3 version using High Sierra and XCode 9.4.1 so far, since I ran into multiple issues. Surely it is because I have no idea what I am doing :)
Example: vt_write_int32BE('sub3');"
. This works if the compiler has right semantics but could be just as well truncate (e.g. just take 's'). No well defined semantice in C++ standard AFAIK.
Everything is basically wrong there. You could define byte arrays that have the data already in correct byte order (i.e. big endian in the example) and have named costants for them (e.g. SUB32_BE
). In addition fixing the compiler warnings that gives a minor performance improvement as you don't end up doing useless byte order conversions constantly...
And that would also be fully cross platform, works both little and big endian hardware platforms.
So, I started with these:
premake5
from https://premake.github.io .premake5
to /usr/local/bin/premake5
git clone https://github.com/kurasu/surge.git
git submodule update --init --recursive
Update to recommended settings
for surge-au
-> Choose Perform Changes
Update to recommended settings
for surge-vst2
-> Choose Perform Changes
Update to recommended settings
for surge-vst3
-> Choose Perform Changes
After this, Xcode says:
surge-vst2
pluginterfaces/vst2.x/aeffect.h file not found
surge-vst3
Use of undeclared identifier 'kHorizontal' in SurgePatch.app
(and Apple Clang error, too many errors emitted, stopping now)`
surge-au
plugin.h file not found (called by aulayer.h, in file aulayer_presets.cpp:1:
. (isolated to #34 )
however, at least we're up and running, somewhat.
How do I fix these issues, please? These don't seem to be referenced in #3 so please don't close this ticket, please, @kurasu :)
The plug-in (VST2) causes crashes when removing Surge from a track or quitting Ableton, only displaying the generic "has stopped working" Windows error message.
suggestion: when .vst / .vst3 are baked, check out what https://github.com/Tracktion/pluginval says? :)
I installed Surge with the windows binary from the release page here. When I put the plugin on a midi track in the ableton live, it's loaded, it makes sound and I can even access the parameter list, but there's no Plug-in Edit button for opening the GUI. I assume that ableton sees Surge as a GUIless plugin.
I tested it on other hosts that I can get my hands on (Reaper 5, Studio One 3) and there was no problem.
(FYI, I couldn't find any option for selecting the vst plugin folder path during the installation, and it took me a while to find out that the dll was installed on the folder C:\Program Files\Common Files\VST2. I just copied the file to my designated folder and all is good, but I think that the installer can get more polished.)
getting this error when running build-osx.sh
xcodebuild: error: 'surge-vst2.xcodeproj' does not exist.
not sure how to proceed?
Right now all files but the dll are stored in local appdata, which imho is not clean and adds complexity, fi when making backups or moving to another pc.
Would be nice to have the option to have the "surge" folder alongside with the dll (maybe the dll could detect that folder when its present and use that instead of appdata).
Cheers
The VST2 plugin loads now but I get a flood of these when I try to activate it:
Renoise Plugin Server LOG> VstPlugs: Caught exception in VSTPlug::ParameterValue
Implement me, probably
And then Renoise eats up almost all resource of my machine and I have to kill the process.
I tried the 3 releases of the installer, both vst2 and vst3, tried to re-start the computer, but none of them are displayed on my Ableton 8, windows 8, I'm so disapointed, any ideas to make it work ?
Four files within the vst3sdk/pluginterfaces/base
folder try to include files in the subfolder pluginterfaces/base
( so basically referencing vst3sdk/pluginterfaces/base/pluginterfaces/base
).
The files in question are the following:
funknown.h references
#include "pluginterfaces/base/fplatform.h"
#include "pluginterfaces/base/ftypes.h"
#include "pluginterfaces/base/smartpointer.h"
smartpointer.h
references
#include "pluginterfaces/base/fplatform.h"
coreiids.cpp
references
#include "pluginterfaces/base/funknown.h"
#include "pluginterfaces/base/iupdatehandler.h"
#include "pluginterfaces/base/icloneable.h"
#include "pluginterfaces/base/ibstream.h"
iupdatehandler.h
references
#include "pluginterfaces/base/funknown.h"
All these issues "seem to get fixed" by removing pluginterfaces/base/
from the include.
but how does something like this get fixed in the repo however?
In file included from /Users/esaruoho/work/surge/vst3sdk/pluginterfaces/base/funknown.cpp:17:
/Users/esaruoho/work/surge/vst3sdk/pluginterfaces/base/funknown.h:19:10: fatal error: 'pluginterfaces/base/fplatform.h' file not found
#include "pluginterfaces/base/fplatform.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiling VST2 and VST3 of Surge
After this, Xcode says:
surge-vst2 pluginterfaces/vst2.x/aeffect.h file not found
surge-vst3 Use of undeclared identifier 'kHorizontal' in SurgePatch.app
(and Apple Clang error, too many errors emitted, stopping now)`
apparently this wchar_t * has been mentioned by @kurasu in this issue:
https://github.com/kurasu/surge/issues/3#issuecomment-424832588
I discovered this gem when it became open source, and now I'm exploring it.
I can't seem to control Surge with my Nektar controller. The pitch of the keyboard works fine but nothing else: not velocity, pitch bend, mod wheel or any other fader or knob.
Hello
I'm new at iOS development so far. For now, i'm using Xcode 10.1 on MacBook Air'13 with apple developer id and iOS 12.1 on iPhone7. App is crashing when it is launched and displays the message "iPhone has denied to launch the app."
Previously i was using macOS High Sierra but now when I've updated to Mojave 10.14.1 and reinstalled Xcode 10.1, it's still showing the same error.
Moreover, I've tried all the other solutions available on Google but nothing is worth it!
Is there any way to cope with this problem?
Interestingly, the 64-bit macOS AudioUnit which can be built by following the PR #69 does not show with Renoise 64Bit v3.1.1.. I wonder what's up with that.
Any ideas?
Getting this Value Conversion issue
on surge-au/libs/xml/tinyxmlparser.cpp
line 928, with the bit of code saying
int tagIndex = tag->length();
shooting
Implicit conversion loses integer precision: 'std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::size_type' (aka
'unsigned long') to 'int')
After proceeding from making a tiny fix ( #79 ) - the next error while trying to get surge-vst3
built with macOS is:
linker command failed with exit code 1 (use -v to see invocation) clang
Now, I can't even click it so that xcode would suggest a fix. any ideas?
After attempting to build surge-vst3
, Xcode stops building because of Apple Clang Error: Too many errors emitted, stopping now
. What's the solution?
Selecting the preset Monosynth > "Banjo remains" crashes the plug-in.
Windows 10 64-bit v1803
Surge 1.6.0b2
Describe the bug
No context menu (containing all the wavetables for easy selection) is shown when right-clicking the wavetable name.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Right clicking the wavetable name should open a context menu with all the wavetables.
Desktop (please complete the following information):
Additional context
Context menu doesn't work in VSTHost either. Switching via the tiny arrows works though.
I was able to build the VST2 for Win32/x86 in VS2017, but it exhibits glitches with some presets, most notably "Polysynth - FM Poly 1".
Steps to reproduce the behavior:
This does NOT happen with the 64-bit build. There may be an underlying bug which mainly manifests in the 32-bit version for some reason.
A question for you guys - any ideas if original documentation of Surge might exist somewhere on your drives?
I am, of course, referring to the contents of http://vemberaudio.se/download/surge.pdf
I'm ready to type it up to Markdown format by hand, but would rather not, if such documentation exists already. It's no bother if it doesn't, but just trying to find out if it's there or not first before embarking on this endeavour.
So std::filesystem isn't on Xcode 10 and the surge has a stubbed out implementation. I fixed a few bugs to get things running but directory iteration still returns "." and ".." in a way which leads to it showing up in menus.
So the trick is to filter appropriately in the hand crafted mac only directory iterator.
The repository includes a submodule to the VST 2.x SDK files, which is not allowed.
See the license in the header:
// This Software Development Kit may not be distributed in parts or its entirety
// without prior written agreement by Steinberg Media Technologies GmbH.
I launch Renoise like this:
VST_PATH=$PWD renoise
And get this to the terminal when doing rescanning plugins:
Renoise LOG> VstPlugs: Instantiate FAILED (failed to open the DLL: '<XXX>/target/vst2/Release/Surge.so: undefined symbol: _ZN6VSTGUI8soHandleE') !!!
With a tool such as nm
it is easy to define that, yes, it is an undefined symbol. It is also a symbol that is unused by the plugin, which can be easily deduced with git grep
.
Thanks for DAW's like Ardour, Renoise, Bitwig and or Tracktion - Linux made its mark in the music world. Many plugin vendors did start already porting their products (check U-HE for example).
It would be great to have Linux build of this synth,
Describe the bug
Context menus doesn't work
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A menu
while attempting to compile with Xcode 10.1, I get this:
seems like a plugin.h
is called by aulayer.h
. i'm not sure where to get that file from. any ideas?
@JureKR ?
I see there's a bit of activity here. Any objections to merge this one?
kmatheussen@d144305
It compiles now, but I get some linking errors. It might work just to use a newer version of VSTGUI or gtkmm than I did, but I don't have time right now. Getting it in probably reduces work of others working later.
I renamed endian.h because the compiler included a system header called "endian.h" instead of this one.
”Filter Width Pan Slider doesn't invalidate properly”
I'm slightly confused. I'm using #69 by @baconpaul and i'm actually seeing an empty slot for Pan
- yet there doesn't seem to be a slider there? What am I missing?
Does a slider exist? @kurasu ?
Hi guys, how do I find these files?
error: Build input file cannot be found:
'surge/vst3sdk/vstgui4/vstgui/vstgui_mac.mm'
** BUILD FAILED **
error: Build input file cannot be found:
'surge/vst3sdk/public.sdk/source/vst/vstsinglecomponenteffect.cpp'
** BUILD FAILED **
error: Build input file cannot be found:
'surge/vst3sdk/vstgui4/vstgui/vstgui_uidescription_mac.mm'
** BUILD FAILED **
"An error occurred! To register a new account at KVR Audio please contact us with your username and email address and we'll check it out."
I.e. README.md should include instructions how to contact KVR Audio. Otherwise, it is impossible to create an account and participate to the development discussions.
Following the work in #58 and the subsequent pull request in #59 I can build an audio unit on my mac which opens in logic and plays sounds and switches between presets, but has no UI. That's all in that PR or you can get it on the @baconpaul fork of Surge on branch au-build.
So I have done a branch off of that branch to get the ui working, called au-build-ui. It contains all of au-build (so makes a working plugin) but also starts including the work to go from carbon to cocoa. As of now, it has the hooks to successfully have the AUVal tool ask for a cocoa UI, and then when it asks for the UI, enter objective c code, do something with the cocoa runtime (in this case, leak an NSURL), fprintf to stderr, and then go on its way with no UI. You know, small steps. But premake5.lua generates the Xcode to include the objective C and the two interoperate and link and run, so I should be, in theory, off to the races to bounce back and forth.
My basic plan of attack now I have this working is to figure out how vstgui and nsview interact using some combination of the vst sdk source, a worked example in a juce plugin, and a few other places. I hope, have the vstgui stuff all work "eventually" using the subclass trick that's already in the SurgeGUIWhatzit class. I'll keep notes here as well as a record of what I did if anything works or if I have anything working. But if someone reading this has done what I'm about to try before, please do let me know! And if you actually know how to do this, aulayer_cocoaui.mm in src/au on that branch is the place to be.
Finally if maintainers don't want me keeping record of how I got this thing working in GitHub issues please do just let me know. Apologies if the intermediate steps are too spammy.
Thank you for this good synth! It is not copyed nor installed any vst file. I don't find it, in any site of the disk. Please your help.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
Describe the bug
Seems like the channels doesn't work (it needs to bypass the channel mechanism in this mode) and the pitch-bend range doesn't get set properly either
Hello, what about mac version? I looking forward for it. TNX.
As this synth is last updated around 2008 or 09-ish (I don't know when version 1.5.1a was released), the code must have been dated for use with processors that are in the retail market at that time, and might not play nice with today's processors like AMD's Ryzen series (in market since early 2017), as well as Intel's recent seventh and eighth generation Core i3/5/7/9 processors.
We need to optimize the code in order to ensure that the synth will work perfectly with modern processors.
The synth's underlying code will need to be modified or (if necessary) rewritten, in order to take full advantage of new CPU instruction sets found in recent processors (including AVX2, AVX512, BMI1 and BMI2).
Hello,
I'm less of a programmer, more a designer. I would love to give Surge a new look, but besides the bitmaps, there aren't any resources. Could you please provide the SVG files (or optionally the PSD, but since I'm working with Affinity designer this would not be ideal) for it and maybe point out how to change the GUI within the code?
Currently, I've loaded all bitmaps into one .afdesign file, but I have to stick to the original proportions.
Have a nice one,
Leo
Use of GPL3 means no one can ever use any of this code in a closed-source application. Does Steinberg's new "dual license" permit no alternative? This code could be more widely usable if at least some of it -- at least the parts which don't depend on the VST SDK -- could be governed by a less-restrictive license such as MIT or BSD.
Hi!
So I just got the audio unit code to link on macOS. Don't have it packaged but have it linking. There are a few larger things I had to do to do this.
The code I have isn't really mergeable yet I don't think. (I did some radical things like remove the VST target in my premake for now for instance). And I have no idea if it works. But if you want to see what I did the whole thing is pushed on this fork (https://github.com/baconpaul/surge/tree/au-build) and you can just check that out by cloning my fork and hopping on to branch au-build.
There's a few bit things which were wrong in addition to the minor bits and bobs I already put in other issues (like the OBJC_PROTOTYPE and the missing header I did a PR for). The amounted to 2 enormous things
In order to build an AU V2 you need the AUPublic and PublicUtility code from the audio toolkit available. This is actually referenced in the premake5.lua (look https://github.com/kurasu/surge/blob/c6ad95dfa051649f5647b0064fe8b0548680c08a/premake5.lua#L460 at that line) but the source wasn't in lib. The source actually isn't all that easy to find but luckily other GitHub projects have it included so I did the following
So great now we have all the code we need to build an AUV2. But the other problem was that class names had changed since src/au too today. So go through and replace all the sub3_synth with SurgeSynthesizer and all the names_like_this with namesLikeThis, comment out one place I couldn't figure out in presets for a link error and put in a fix me, and
voila! A linking surge-au.
So anyway I'll keep picking on this some but if others are working I thought they may want to know how close I got and look at the code in my branch.
Hope this is helpful. Welcome all comments.
Surge is great and incredibly powerful, but I hate squinting!
It would be really nice if there was an option to resize the GUI, to make labels easier to read and to make it a bit easier to click the right areas during live situations. The best example I can think of off the top of my head is Serum, which allows you to set the GUI scale anywhere from 50% to 400%.
Doesn't have to look smooth or pretty, simple nearest-neighbor pixel doubling (quadrupling, octupling, etc) would be fine for those of us with high resolutions but whose monitors are far away from our performance hardware.
At the moment the code base is filled with a chaotic set of coding conventions. It would be good to have a well defined coding to which new commits would compared against. This would also make the patch review process more lean.
In order to move fast with this I would recommend to use some well defined style known to work in cross-platform projects e.g. https://webkit.org/code-style-guidelines. We could start for example with WebKit conventions and refine as we go.
Naturally, the existing code is how it is but this would be the convention for all future changes.
Other things to consider: the subset of C++ used (and related things like RTTI, most projects that aim for maximum portability do not use RTTI), external dependencies (are these allowed or not and in which circumstances) etc.
Should allow for per-voice control of
Compatible hosts (at the moment) would be Cubase and Bitwig.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.