TheTechnobear's SSP/XMX development

some technical details …

supporting the XMX which has a rather different form factor, and also having a new standalone application has required quite a few ‘steps’ to get there.
I mention some of these in this video (which provides some useful background to the following)

any how, as always, I like to release my work as open source, and this has not changes, so there are some important projects, which Id like to summarise here:

1. Technobear Plugins

the source for all my plugins, that work on both XMX and SSP, this includes TRAX.

2. TraxHost

this is actually a standalone application that can host SSP/XMX plugins
its called TraxHost, just because that is the default plugin it looks for, but it could just host CLDS or any other plugin.

3. PercCmd

I needed a way to be able to switch between applications on boot up of the SSP/XMX.
e.g. to allow you to press button 1 to start SYNTHOR, or button 2 to start Trax (standalone)

PercCmd is the application that does this, including remembering what you started last, and a few other things.
so rather than the XMX/SSP starting SYNTHOR directly, it now runs this instead, and then PercCmd will start the appropriate application.
this is configured in a file called perccmd.json

note: its only this config fie that cares about SYTHOR/TRAX , you can get it to start any arbitrary application.

note 2: there are failsafes in PercCmd that will default to SYNTHOR if it cannot find the config or applications required - just a QoL thing really.

4. RNBO support

I have new project for supporting RNBO for both XMX/SSP.

this will replace the former rnbo.example.ssp repo, upon release.

5. SSP_SDK

I needed to extended the SSP SDK to allow for some new features to support the ‘mini UI’ of the XMX and TRAX (SSP), this may be included in a future Percussa release, but for now, its important to use my version if you want to build plugins using the mini UI e.g. see RNBO support above :wink:

in fairness, you dont really need to worry about this , as my projects (including RNBO above) should already point to this. but I wanted to be ‘upfront’ about it.

note: my version 100% compatible with the SSP version, it just exposes new calls.


as you can see there are many pieces to this puzzle essentially what we get is

PercCmd → TraxHost → Trax (TB Plugin) → other TB Plugin

all with support for 2 different form factors.

2 Likes

known limitations

a) TRAX cannot be host withing XMX (only) Synthor
this is simply because there are not enough buttons.
SYNTHOR on the XMX uses button combinations (long press on sys button 1/2) that are needed by Trax and theres no ‘spare gestures’ left to have an alternative.

this is NOT a big thing really, as the XMX has less CPU/MEM than SSP, so hosting TRAX within Synthor would not work very well, its much better as a standalone application.

b) TRAX standalone not on SSP (yet)
there is nothing really stopping this, other than I need to decided on the best way for it to work.
(and of course, the mandatory messing about with details of coding ;))

there are two possibilities:
a) run as DUAL Trax
this is a standalone form of how I use on the SSP, and so is probably the simplest, but im not sure this is the most useful.

b) fullscreen trax
rather, than use the MINI ui’s as we do on the XMX, we could instead use the fullscreen versions of the plugins.
this means more work, as some additional ‘plumbing’, but also means creating a ‘fullscreen’ version of the trax features e.g. mixer.
this would be nice as potentially would allow fullscreen trax within SYNTHOR too.

but it is more work…
one of the reasons Ive avoided this, is really to get some feedback on Trax as it is currently, before doing more development, and also fixing issues found.

I should say a & b are not mutually exclusive, so it may be I do (a) first, then move to (b) afterwards.

we will see :slight_smile:

4 Likes

Wow, it’s big update!!
Thanks for your effort.

2 Likes

ok, spent some time updating and also testing RNBO support… and can confirm its now working on both SSP and XMX.

this has been tested with latest RNBO release 1.3.4.

this repo will replace previous repo : rnbo.example.ssp, once this release moves from beta → stable.

2 Likes

Ive been doing a good amount of testing on both XMX, SSP, Trax and Synthor, and Im pretty confident in the beta now, as Ive so far, not found any issues/bugs :slight_smile:

ofc, with around 30 modules * 2 hardware platforms * 2 software platforms (trax/synthor), its impossible to cover every combo.

but its been fun creating patches using so many different modules.
funny, when you put constraints on yourself (e.g. must use this module, in this way), patching can get quite creative.


one thing, left to do… is decide if I keep SFLT and SFFT in the release, and document if I do.
they always were experimental, and for testing out rnbo, but not sure how ‘useful’ they are, though they can sometimes do ‘something’ interesting.
given cpu load I see, I dont think id be able to improve using this approach, so its a bit of a dead-end.


I’ll see if I can get some more time for patching, and testing, and also give the community some time to see if they can find any issues ( as we all patch differently, focus on different modules etc)
but overall, seems promising at the moment.

2 Likes

Thank you for the hard work on all this. I did want to report back for me and my SSP at least I am running what i can assume is the latest version of Synthor on my SSP using the update found at Update 13072022 [Superbooth 2022 SD Card image - Fixes for USB Audio, Sample rate switching, ASIO Support] . When trying out the beta release My SSP would crash and restart whenever I tried to access the following plugin settings. DUAL, GRA4, LOOP,PVCA, SFT,SFLT and TRAX. I tried a fresh install on two SD cards to make sure that wasn’t an issue but the issue remained the same for me at least. again thank you for all the dedication to the development on this. On a side note i messaged Bert about having severe encoder skip on my SSP ( they skip backwards ) he said to message you about the part number due to him moving offices. I’m not sure if you happen to have this information on hand i would appreciate it.

Cheers

yeah, don’t panic … as above, I’ve replicated the issue on the released version of SYNTHOR.

and, Im hoping in next hour or so to have a ‘workaround’ - details shortly, watch this space :laughing:

encoder : yes, I replaced mine with
Bourns PEC11R - 4020F - S0024

these are readily available :slight_smile:

1 Like

OK, spent the last couple of days determining why the RELEASE version of synthor, would crash when loading my (beta) plugins, as reported on this topic

important note: this ONLY affects the SSP, XMX build was fine.

the issue :

after much testing etc, I determined the issue was the released version of Synthor (13072022) will load any plugin using Juce 8.xx, previously we were using Juce 7.xx
even the most basic plugin e.g. the example included in the ssp-sdk.

unfortunately, juce 7.xx is no longer supported and will not build on newer OSs eg my Mac :wink:

the odd part of this, was Id not noticed the issue, as I had my own build of synthor, which is ‘identical’ code to the released version. but worked fine !
also, in the same vain, these plugins work fine on the released version of the XMX synthor/trax.
why?

I believe the issue is NOT actually a code issue, rather that the released synthor was built with a much older version compiler, and this is somehow incompatible with new juce code that makes use of new language features from a more modern compiler.

note: generally, it does not appear to just be new build tools/compiler, as Im able to compile a test non-juce based plugin using modern build tools, and it works fine.

the solution:

I think mid-term the solution is a new build of synthor,
no code changes are necessary, it just needs to be rebuilt using modern compilers.
I’ll talk to Bert about this.

the workaround:

I’ve built a version of the plugins using Juce 7.0.12 (the last version of 7x), using a linux machine.

I had to use linux, as above, my usual macOS dev box, is no longer supported by Juce7.
I also had to revert a bunch of changes that are specific to Juce 8.

usually, I’d not do this, as its mid-term, its wasted dev effort, as the main line dev is the ‘right way’ forward. however, I wanted to get a better grip on the underlying issues, and ensure there wasnt anything else within my plugins.

overall, whilst Ive done (very) limited testing, it should be fine, as the code changes to revert to juce 7, were mostly to move away from depreciated functions, rather than functional changes.
so Im pretty confident it should be good to go.

also, as so far Ive not found any bugs, this workaround could stick around for this release.
as I wont have code divergence from the main dev branch.

1 Like

Wow thank you for the lighting fast response my friend and for the info on the encoders. Very much appreciated!

Cheers

1 Like

cool… it’d be great if you could download the updated plugins, and given me the green light that they are ok now :slight_smile:


replacing the encoders, one word of caution.
the old ones are v. difficult to get out - I’d advise getting a pro to do it , as any damaged caused would not be covered by warranty, and its an expensive bit of kit to damage.

whilst i’d replaced pots/encoders on a few other synths without issue, these I could get out. the existing solder wouldn’t melt properly. even with a dedicated desolder station. so I ended up sending it away to be done.
however, Im not a pro, you might be… but just wanted to give a heads up jic.

1 Like

Thank you again for the prompt responses. I just want to verify https://www.dropbox.com/scl/fi/y6ity0lo4jcc5u3hhthyz/tb_plugins_ssp.zip?rlkey=shwop8wy2c1z0d5tnvctdacnb&st=pxaob7eb&dl=0 is where I downloaded them from again. They still exhibit the same issue for me unfortunately. Unless I didn’t get the download link correct.

Thank you for the tip on the encoders. Im no pro either I do have a dedicated rework station and desolder station as im a ham radio guy and like to tinker with SMD repairs but I may take your lead and do the same if i run into the same issue.

sorry, my mistake… uploaded the wrong file .
try again now

https://www.dropbox.com/scl/fi/xwf9rp9rq5xzz93yy2f63/tb_plugins_ssp.zip?rlkey=z6o4l1c40v6aplq3plq6fs31c&st=jysw0vs0&dl=0

No problem at all!

So I can load them all, I am able to get into the settings of TRAX for example the bug i got but i cannot replicate on command is when exiting the plugin I get a crash. I loaded up several of the named ones above i was having the open crash issue with and they all allow me to enter the plugin setting but i cannot replicate the crash i had on exit. It did happen 4 times but at random moments always upon exiting a plugin and now i cant get it to crash so im not sure the cause at all. I don’t want you to waste dev effort on this if this is something that needs a update to synthor itself im sure your efforts are more needed elsewhere! I just wanted to let you know my findings. If there is anything else i can do to help debug please feel free to let me know I feel you’ll be able to replicate the issue though on this version of synthor with enough mucking about inside the plugins.

EDIT: I did manage to reduplicate another crash by adding TRAX to a empty page then entering TRAX to adjust settings , Exiting TRAX and then trying to Delete TRAX off the page. Same with CLDS, PLTS, SFFT so far so i assume it maybe affecting the named ones still showing an issue.

Hope this helps

ok, lets take TRAX out of the picture… as I seemed to have a more general problem with plugins within synthor… (and frankly TRAX is complex ! )

let use CLDS … as its been around for a long time :slight_smile:

so, I just tried this, and indeed seems whilst now the CLDS is loading ok, and you can bring up the UI ok (fixed) it appears deleting the plugin now crashes!
this appears to be a juce 7 specific issue…
(as juce 8 build does not crash either on release or my build of synthor when deleting plugin)

1 Like

indeed i thought the same so i tried CLDS, PLTS, HARM, they had the same issue for me as well upon trying to delete or even replace it once its been opened once to adjust any setting.

I have a VM and build environment setup that ive built the QVCA test with thanks to your write up but that’s about my limitations :smile: I had Loveable.dev and GPT help with a mock of a plugin that i did get to work in SSP but I cant take the credit for that all i did was prompt it with what i was trying to accomplish in SSP as a test. the rest is over my head :exploding_head:

OK, Ive found a fix, and released a new version of the beta (3) for SSP.

as above, appears to be an side effect of using juce 7, and things not cleaning up properly when run under synthor - something not present in juce8. so Ive put something in place which appears to resolve the issue.

known issue

however, it doesn’t appear to work for plugins loaded within TRAX.
ie if you load multiple plugins with synthor, which can include TRAX, all is good.

but if you load plugins within TRAX, then when you remove TRAX, it’ll crash.
(I’d expect the same will likely be true of DUAL)

as the issue I believe is loading plugins within a plugin (as trax/dual do).
the reference counting does not appear to work in this case.

honestly, Im not sure Im going to be able to resolve this…

this is not really within my code, its all being caused by how juce, binaries being compiled with different compilers. the misalignment is causing issues.
(which is why I didn’t have any issues with current compilers and juce 8, which all ‘line up’)

1 Like

understandable thank you for all the work again! Could by chance share a link here and ill try it out. i couldn’t find it in the repo the link there is broken.

EDIT: I found it i just had to clear cache and cookies. sorry for the confusion. I appreciate it again for the speediness

1 Like

did you get a chance to try this out @Atoms ?
I’d like to finalise the release, possibly this weekend - but obviously, I can only do this if I know this is working on the released form of Synthor.

yes sir i did! and it does work exactly as it should outside the confirmed known issues. ill be available to test the next iteration once you finalize it just let me know i would be more than happy to.

1 Like

ok, so Ive release a new beta for SSP , which can also be considered a ‘release candidate’.
if no issues are found over the weekend, then I will release this after.

note: the following only relates to the SSP , XMX is unaffected.
Ive not had any reports of issues with XMX plugins / trax, so the xmx version will move from beta to release at same time as SSP version.

this beta/rc resolves the known issue with Trax, and takes a new approach to the underlying ‘issue’ :slight_smile:


so, I had a discussion with Bert, as I wasn’t very happy with the ‘hacked’ build we used for Beta 3.

it didn’t feel like a sustainable approach, and also its not how Ive been using the plugins/trax during development - so Im trying something different…

with agreement from Bert, I’m including an unofficial version of Synthor, that is my build.
this uses newer build tools, and so is compatible with my plugins ‘unaltered’, so Im not longer hacking anything.
the advantage of this approach is two fold.
a) this build of synthor is the one I used during development, so Im releasing on something Ive been using for quite a while.
b) moving forward, I can continue to use latest versions of build tools and things like juce.

what does ‘unofficial’ synthor mean?

  • unsupported by Percussa
    any bugs / issues you find must be tested against the official release 13072022 to be reported.
    frankly, whilst Ive not had any issues with this build , I cannot 100% guarantee the build doesn’t have any side effects.
    so rename/keep backup of the official version, just in case you need to test.

  • functional identical
    it’s “just” a rebuild of the same source code as released, don’t expect any changes in functionality.
    its sole purpose is to use these new plugins.


anyway, from my testing, this solution fixes the issues we were facing, which were becoming time consuming activity to track down and try to ‘workaround’.

so Im pretty happy :slight_smile:


as above, if there are no further issues spotted over the weekend, then this will become my release.
if you install/test now, its unlikely this will change again, as the release will be this zip file as is.

nothing more to say other, than give it a go, and enjoy

Mark

2 Likes