Xojo > Juce conversion questions

Hello. I put a significant effort into a Xojo standalone app that turns out to not work because Xojo is very poor for midi timing. It basically can’t do much at the same time. 1 metronome and 1 midi track and it’s bogged down. So I’m thinking of converting it to Juce. Can I assume that Juce is going to be far superior for midi recording and playback of at least 3-4 tracks? Has anyone every attempted to move from Xojo and found any shortcuts? It has custom classes for graphics for note display and graphic note editing. It needs midi recording. Since Juce seems like hard coding in C++ this seems like a total do over if I want it to work.


Generic question 1. Is there any method of graphic viewing a project short of building? I see tutorials where they have to build and load a DAW every time to view changes. If so is there a drag and drop of knobs or sliders, text fields, buttons.

Reading this, I wonder what you are actually want to do? You talk about a standalone application in the first post but then mention a DAW in the second post which is obviously only needed if you want to run a plug-in. As JUCE can be used to build both, the answer depends a bit on what you want to build.

Generally, I don’t really know Xojo but a quick google search revealed that it is based on BASIC, right? I don’t think that there is any easy way to port such code to C++. If you are experienced you can of course integrate e.g. a JUCE processing core built as a static library in any kind of application written in any language that allows integration of C libraries, but I’m not sure if that is a good advice for you, this totally depends on your skill level and the complexity and structure of your application.

Regarding a WYSIWYG GUI editor: There is no officially recommended/supported solution to that, the current JUCE state-of-the-art approach is hard coded C++ GUI code. This gives you flexibility for highly custom GUIs but can be a lot of work for other use-cases. You can try to use the Projucer live build engine to achieve JIT compiling of your GUI code, although I stick to traditional recompilation as I don’t use the Projucer. There is a deprecated WYSIWYG GUI editor in the Projucer which has been deprecated and is disabled for new projects – I would not recommend using it. Furthermore there is no support for native widgets in JUCE.

Still there are community-driven solutions that add such functionality to JUCE through third-party modules, I saw e.g. @daniel’s Foleys Plugin GUI Magic being mentioned in this context here and there (although I never used it and I’m not sure if it’s suited for standalone applications), just search the forum a bit.

1 Like

Thanks. The Xojo stand-alone app I built is unrelated to the plugin/DAW. You answered the question though. You must build it to “see” it.

Off the subject a little. it could be of benefit for concept purposes (and it is rather trivial) to create a non functional app that allows you to drag from a Library of images (buttons sliders text knobs etc) onto a screen and have the XY for each object above the object. Then at least you could see and know all your XY relative to the plugin window. In other words make a graphic of all known objects in Juce and park them in an area. Drag them in and resize if needed. The XY is above the object as well as pixel width/height. Then create your project visually to start. Save the preset of the layout.

Since you can load in a C library into Xojo I am going to explore if it is possible to build the midi note recorder and player and import it into the Xojo project. And there are basic to C++ conversion tools but I believe that would still be a major undertaking. Probably easier to let someone that is fluent in Juce/C++ translate the entire project. Or start over.

That Foley GUI Magic looks really cool, I’ll check that out. I was thinking along the lines of a standalone app that you could set the size for the Juce GUI/Plugin, then have a library of objects as images(screenshots for reference) and drag and drop the objects to the GUI area. Then right click on the object to get the code which automatically copies to clipboard to paste in Juce. I’m not far along enough to know if there is something already just as easy.

Hi, I am the creator of PluginGuiMagic :slight_smile:

First, yes it works for standalone applications as well. The factory that creates all Components can be added in any Component, even in sub components to nest them.

Your approach is doable, and actually quite easy. The problem is only, that refining is always starting from scratch, if I understood your idea right. Also it would not help for resizeable layouts. Here is the FlexBox approach superior, since it will always distribute the Components after your definition, even when you add, reorder or remove individual components.

I plan in future to add Grid and proportional coordinates as well, that would allow even more layout strategies.

Good luck for your project!

1 Like

Thanks for the reply @daniel If someone on your end offers zoom for an hour for a fee to get a quick tutorial please let me know.

Hi @Tzodmusic, we can certainly arrange that.

For now let me link a few resources:

Let me know if there is anything else or PM me

Here is a screenshot from the Xojo midi recorder that I want to convert to Juce. The basics are:

1 - Record in midi via USB keyboard or qwerty
2 - 2 tracks only needed for record. Melody track and chord track
3 - metronome needed for reference click when needed in record or play
4 - Edit notes by dragging end of note to any length
5 - delete or mute any note with mouse
6 - quantize input or post record to standard values
7 - swing with a slider to set swing factor
8 - set a key and have notes appear as user defined color for 1/3/5 , 2/4/6/7 , non scale
9 - zoom vertical or click button to move display up or down by notes or octaves
10 - zoom horizontal and click button to move display left right by bar or beat
11 - set screen divisions
12 - text field above each bar that allows lyrics
13 - text field above each bar that allows user notes
14 - button to toggle between melody or chord track view
15 - export midi file
16 - import midi file
17 - scrolling playhead
18 - place playhead anywhere by mouse and play from playhead position
19 - mute either melody or chord track mute metronome
20 - set tempo text field
21 - add a note that is only for text (doesn’t play a note)
22 - right click brings up edit popup with selectable predefined user comments

This is a writing and educational tool. It only needs 2 tracks, one for melody and one for chords. Maybe a third track for extra. It will allow to export melody or chords as midi file in case I want to load into logic etc. There is other functionality that isn’t important for this discussion. The problem is Xojo is bad for playing music. It is possible to load C++ libraries from Xojo app like having a C++ helper behind the scenes. However Juce would allow much better looking GUI even though this is not to try compete with any DAW or midi recorder.

I’m looking to see if anyone has an opinion on if this is something I could get done by someone. I don’t want to code this. Since someone could use my current Xojo version as reference it would be a matter of taking that and recreating.

Thoughts appreciated!

Screen Shot 2021-01-05 at 7.35.44 PM

Screen Shot 2021-01-05 at 7.37.04 PM