-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rewrite GUI with cross-platform toolkit #37
Comments
What are your thoughts about the toolkit to use for the new UI Nick? As for cross-platform, it should be noted that at least the current amsynth GUI works with FreeBSD and TrueOS. JUCE doesn't seem to support FreeBSD currently, at least the version included with Helm requires some patching to get it to build. I've yet to get JUCE to build under TrueOS but I've read someone else has had success in getting JUCE running under FreeBSD, some years back. |
@danboid thanks for the info, a shame to hear that JUCE does not work out of the box on BSD. JUCE is the most "obvious" choice for the UI rewrite as it's suitable for embedding into plug-ins and has a lot of adoption in audio software. Do you know of any BSD-friendly alternatives - for example those used by other plug-ins you have running on TrueOS? |
Hi Nick! I don't really have any better suggestions for you sorry but Qt is an option as I have got Rui's samplv1 working under Ardour OK. I would like to see JUCE gain FreeBSD support ideally, if only so I can run Helm and Noisemaker. I've just posted to their forum now to ask about it: |
Jules (the JUCE dev) has replied. He says he'd be willing to accept patches to get JUCE building under FreeBSD as long as they're not too major but of course that means it doesn't have any existing support, as I thought. I am currently trying out FreeBSDs Linux binary compat support trying to get Chrome to work. If that works out the then it'd be easier for me just to use a Linux build of amsynth with a Linux DAW. Not ideal but better than having to dual-boot, if it works. |
http://lists.lv2plug.in/pipermail/devel-lv2plug.in/2016-March/001593.html Possible options: |
Nice to have: a display of the waveform when altering oscillator shape |
iPlug 2 looks cool but it only supports creation of basic UI with knobs and buttons. Features like the preset navigator (#90) would not be feasible with iPlug 2. Right now I think the realistic options are JUCE or VSTGUI |
Hello! GTK2 is now EOL and will slowly get demoted/removed from distribution repositories. I know this is a difficult decision to make - I don't offer any solutions - but I figured it might help to make it known. Thanks for your great work! |
@ainola thanks for the info, once any distributions drops GTK2 that will definitely force the issue. I think JUCE is the way to go as it has a lot of momentum, good documentation, and a sizeable developer community on its forum. Porting is quite a big undertaking, so finding the time & motivation is the difficulty. |
Hi, Nick! In my opinion, both Qt and DPF are excellent for cross-platform, especially on Windows.
|
Thanks @AnClark !
I feel the ability to create a "preset navigator" is quite an important requirement, as the number of preset now included with amsynth is crying out for this feature. It seems like many of of "lightweight" toolkits don't have the building blocks required for this - e.g. scrollable areas / lists and text input fields, but I could be wrong. I considered updating to GTK3 as a stop-gap but Ardour is sticking with GTK2 for now, and amsynth needs to be compatible with it :-) |
Hi Nick! Have you ever heard of https://github.com/Immediate-Mode-UI/Nuklear or https://github.com/ocornut/imgui ? Nuklear is implemented in a single header. |
I'm a big fan of lightweight so AVTK sounds nice but I'd never heard of it before now. Has it been proven? Many Linux plugins use JUCE so that seems like the safest bet, shame its so bloaty! |
I think you should also add a license/cost column to your comparison rubric. In the Audio Programmer and SFZ Discords chats, other developers have mentioned the used of third-party code can change the license/cost of your plugin. For example JUCE if you use the free version I believe your code has to be released as GPL? |
AVTK doesn't have wide adoption, but it is used by the OpenAV plugins - https://github.com/openAVproductions There is a column for licenses... amsynth is GPL, so JUCE's GPL license is ideal. I'm not sure what the implication of integrating more liberally licensed code into amsynth would be. In the worst case I could re-license my code, but would then have to remove contributed code unless those authors agreed to re-licensing. I've started experimenting with using DPF
|
Quick update - a good start has been made on a JUCE version of the GUI. Until it's ready for CI builds it will be in this fork - https://github.com/nickdowell/amsynth/tree/juce Since a complete rewrite will take a while I am considering leaving the standalone version in this mixed GTK / JUCE state and focusing on getting a first release with GTK-free plugins. Not sure whether DSSI is still required - does anyone still use that? |
Partially blocked by juce-framework/JUCE#1171 |
That's how bug reporting is supposed to be done ie solving the problem for the devs. Thanks for the updates Nick! |
It looks like you’ve pretty much narrowed it down to JUCE. Size is not as important as future-proofing. Drive space is cheap. A well supported and well documented cross-platform toolkit would go a long way toward encouraging development support and project longevity in the long run. I think you are on the right track. 🙂👍🏼 |
If anyone is interested in trying out the JUCE version of amsynth, it would be great to get some feedback at this stage! All the plugin versions of amsynth (DSSI, LV2 & VST) now use JUCE instead of GTK and implement most of the old functionality (except the tooltips which have not yet been reimplemented.) The standalone app is currently a hybrid (JUCE synth UI inside a GTK2 shell) and has a known issue with keyboard shortcut handling (which appears to be a bug in JUCE.) I only have one Linux install and a handful of host apps to test with, so it would be great if anyone could try out the plugins and report any problems. Note: JUCE is included as a git submodule so it's important to use the git clone --recursive --branch juce https://github.com/amsynth/amsynth.git Of if using an existing clone, use |
I didn't get as far as a successful
|
Do you have the GNU Autoconf Archive package |
Hi,
Finally got some time to try and build it.
It seems to be building in Ubuntu Studio 22.04. And the vst runs in
Waveform PRO 12.1.8
See attached pictures. Tomorrow I will do some more experiments.
Regards
Tjeu
…On Mon, Jan 23, 2023 at 8:07 PM Nick Dowell ***@***.***> wrote:
If anyone is interested in trying out the JUCE version of amsynth, it
would be great to get some feedback at this stage!
All the plugin versions of amsynth (DSSI, LV2 & VST) now use JUCE instead
of GTK and implement most of the old functionality (except the tooltips
which have not yet been reimplemented.)
The standalone app is currently a hybrid (JUCE synth UI inside a GTK2
shell) and has a known issue with keyboard shortcut handling (which appears
to be a bug in JUCE.)
I only have one Linux install and a handful of host apps to test with, so
it would be great if anyone could try out the plugins and report any
problems.
Note: JUCE is included as a git submodule so it's important to use the
--recursive option when cloning the juce
<https://github.com/amsynth/amsynth/tree/juce> branch of the amsynth repo:
git clone --recursive --branch juce https://github.com/amsynth/amsynth.git
Of if using an existing clone, use git submodule update --init after
checking out the juce branch.
—
Reply to this email directly, view it on GitHub
<#37 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAO7MUA6SYBVKGK3U4UKQ3DWT3JG7ANCNFSM4CQKLOBQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
groetjes
Tjeu
|
Is there anything more to building the JUCE version than running: ./autogen.sh I've just ran |
At the moment only the plugs-ins have been fully moved over to JUCE... The standalone still uses GTK for the menus and preset selector, but the main control panel is JUCE. It will take a little while longer to get the remaining bits moved across! |
Quick update: the A couple of features are missing: configuring MIDI channel, polyphony, and pitch bend range. |
UpdateThe standalone app has now been fully ported to JUCE, GTK is no longer used for anything 🎉 and this is now merged onto the The only feature that hasn't been ported is the Audio / MIDI config dialog, which I wasn't happy with anyway. The plug-in builds now have full access to the installed presets, as well as most of the menu items like Copy, Paste, etc. I think there's a bit more polish needed before making an official release, but it would be great to get feedback from anyone that's interested in testing this rebuild 😄 |
Are there any build instructions? I installed the
I've tried running |
Sorry for the lack of documentation around git submodules! I've updated To do it manually, |
You meant Closer but still no amcigar:
|
Yep 🤦 Looks like you need to install
|
Please update the README with some build instructions for Debian/Ubuntu users, or create an INSTALL file for this. I've got further now but
|
Oops, that's a bug in the output message, the LV2 build itself is working regardless. |
For future testers; on a Debian system the full build dependencies can be installed with:
|
Progress
Bugs to be fixed
warning: patch:Set for unknown property
emitted when opening LV2 UI in ArdourFeature requests that are blocked by this:
Requirements for new GUI implementation:
The text was updated successfully, but these errors were encountered: