TheTechnobear's SSP/XMX development

it’s an interesting idea, and Im definitely open to new ideas.

however… you basically, have hit the problem I mentioned… Im already using pretty much all the UI elements…

but lets review the UI … perhaps we can think of something?

current TB UI review

enc turn = value change
push enc = reset
push + turn = fine

button 1-8 : binary functions/parameters for module
up/down : parameter row
right/left : page
LS + RS : midi/module options

theoretically LS & RS are ‘free’
but in practice they aren’t since Ive needed this in PMIX to switch between ‘groups’ of channels.
so, whilst not a generic function…
however, I suspect , this is going to be a frequent use case…

the reason is simple…
due to the 4 encoders, its natural to group everything in 4s. (e.g 4 channels)
this means, I tend to treat buttons 1-8, as 2 rows of 1-4 , to match encoders.
so you can now see… there are no buttons really left to do ‘other functions’
hence, PMIX using LS/RS!

this is a shame… as certain LS/RS would be a good place to add extra functionality.

note: GNPR buttons are NOT available for module use.
possibly P could be made available… but if it was, Id use this as a replacement for LS+RS,
because frankly I dont like this 2 button combo much… but its all that was available.

my thought on possible changes

a) replace LS+RS with P…

I’ll check if @bert is happy with this.
we don’t want to allow use of G/N/R as they have dedicated functions, and we dont want a user to get ‘stuck’ in the module view… but P really is not needed, once you are in P mode.
so I think it’ll be ok - and would be a great improvement imho.

b) LS / RS usage.

one option is to have a ‘generic’ use for these, and then things like PMIX can ‘override’ this behaviour.
I need to thing about this, and also what the usage exactly would be.

the main issue is… it needs to be a function I don’t mind ‘loosing’ in PMIX.
a lesser issue is also consistency i.e. users wondering why function doesn’t work in PMIX.

basically, this means it needs to be function that is more ‘nice to have’, rather than essential and/or doesn’t make sense in cases like pmix (so is no loss to ux)

so, not sure about this one… really I think overall id prefer to leave LS/RS as ‘module specific’ buttons.

c) push = reset → push = edit

again, need to review this…
as I mention previously, one feature I like on the ER 301 is that it has an ability to dial a value in precisely.

one idea I have is… push encoder would bring up an ‘overlaid’ panel, which is pretty big (half size of screen) with BIG numbers showing 4 digits, each encoder then changes that digit (push resets to 0)
note: the decimal place would be dependent on the scale… ie sometimes it would be 0.123 or it might be 10.21, 100.1.
now because we are in a different mode… I can ‘reuse’ all the buttons.
so Id have one for close, and could have one for ‘reset’ , but even max/min etc.

the principle behind this idea here is when we are in this mode , we are 100% focus on dialling in this parameter, not any other module function!

note: all changes to this parameter would of course be ‘live’ , so you can hear the difference its making.

what are the ‘cons’ of this idea?
the main one is reset become multi step. press encoder - press reset, press close.
ok, I could include a reset & close, but thats still 2 steps.

MOST of the time, I don’t thats an issue, but in some case it’s really nice to be able to reset quickly.
pmix is a good example of this, its nice to be able to set levels quickly…

so there we are back to a similar question - perhaps PMIX (and others) diverge from other modules?

I would say PMIX is a bit different from other modules - its quick performance focused, so its not meant to feel like you are ‘dialling in parameters’ , but rather you perform with it.

again, perhaps this is a special case - where the UX needs to be more focused on quick use, rather than lots of parameters, and dealing things in.
however, I do not think this is a UNIQUE case, e.g. I could see that CART (upcoming module) is similar, some of the ‘pleasure’ in using the module is its immediacy.
so sometimes, we need to trade immediacy for flexibility in SOME modules.

in fairness, I already have a bit of a distinction between 'standard ’ UI modules, that use a common metaphor, and ones like PMIX which have a rather different (albeit related) UI.
note: under the cover they share a my ui framework, but just can be specialised.

so I quite like this approach,

conclusion , tl;dr;

the current UI is crowded, its hard to find ‘space’ for other features.
I want the UI across my modules to be consistent.

Im pretty happy with the UI as is, and frankly, Ive a lot of UI experience, so did think this through quite well before using the model I came up with :wink:

sure, Ive made some choices e.g. coarse has priority over fine (push) , people may prefer the other way around - but honestly, there are pro/cons both ways, neither is right - and I’m generally happy with my choices.

however, Im open to ideas, and generally do review things constantly - looking for different/better ways.

I do think perhaps I can allow a bit more ‘wiggle’ room by treating the modules with more performance oriented UIs slightly differently to other modules.
(I know when designing a module where the is a focus around performance)

I’ll look into P replacing LS+RS , though it needs a synthor change, I think it’s a nice one to do.

I don’t think I’ll re-use LS/RS, I think modules a bit of ‘space’ in the UI for custom functions.

parameter edit panel
it’s something Ive been considering for a while in different forms even though its going to take a fair bit of time to implement !
(I not only need to create panel, but intercept ALL ui events to stop them messing with existing ui code)
however, Im quite keen on doing this one, as I do think it would be a really nice addition to the UI for a few different reasons.

however, I should also say… when it comes to UI changes,
Id need to implement/prototype them, and play with the a bit, before deciding if I think they work or not.
UI/UX is all about ‘feel’ , and even the best UI ideas/designs sometimes just don’t feel right when you actually try them on the hardware.
(though in fairness, usually my experience tells me when they are likely to work, and hence worth that dev effort to try ! )

what about long press (or short press) the encoders ?

Yeah possible …
I’m not a huge fan of differentiating long vs short press actions. ( or single vs double clicks) as some users notoriously have difficulties with it.

that’s said, if I used a large time difference it could work for my ‘edit dialog’ … ie long hold brings up edit seems ‘reasonably’ intuitive.

1 Like

well i rest my case… you have clearly thought alot about this… and it is totally fine as it is… And i trust any changes will only make it better…

1 Like

Suggestions:

  • CLKD, a clock (internal, cv and midi) with clock division and multiplication
    -would be nice to have probability and swing

  • COMP, a simple compressor with sidechain input.
    -Is this a stereo compressor? If so, is the side chain also stereo or mono? If stereo, is it dual mono compressors or “stereo linked”

  • DLYD, a multi tap delay with 4 taps which can have time modulation.
    -possible to add a “send / receive” in the feedback loop?

love your work!

&e

I’ll take feature requests via early access… as they get released.
Id prefer not to have suggestions before they even get released :wink:

but…


CLKD - unlikely, I’ll go this route…
Id prefer to keep modules simple, and then gain functionality with other modules , where possible.
probability, can be achieved with SHQ4 (rand/sh) and logic.
swing, can be achieved using delay modules.
so id like to build out functions in these kind of modules where necessary rather than to add into one (overly complex) clock module.

I recognize in eurorack we have things like PNW doing this, but thats because they sell you ONE module, rather than providing you we a ‘set of tools’ to build your own thing.
modularity, allows for much more creativity !

note: for sure I make exceptions to this… but this is my general philosophy for modular.


COMP - indeed its stereo with a mono sidechain input.
( i think inR is normalled to inL)
not quite sure what you mean by stereo linked, would be good to give examples of what difference you mean.

do you mean the peak measured across both channels?
iirc, they are evaluated and compressed separately.
this is the most flexible really… as you dont have to treat as stereo but can use as dual mono.


DLYD
anything is possible, its all ‘just development time’ :wink:

as for feedback loop, yes and no…
like most things, I did consider this, but the issue is sample buffer delays.

the ssp (like almost all dsp systems) uses sample buffers (128@48k) , there is no (current) way to add functionality at the sample level.
so a feedback loop would be out of phase by (at least *) one sample buffer, this can cause significant ‘quirks’

again, as per my post in this topic , I could add (variable) delay compensation, but this will cause added confusion for user (DLYD will be create larger delays that you expect) and you’ll still have to be careful to get the timing correct, it also adds quite a bit of complexity to the code.

so as above, of course, ‘anything is possible’ with sufficient development time…
but I have to juggle that with :

  • free time I have available
  • my perception of where to best spend that time
    (i.e. what’s best ‘value’ for the whole community… and my own use-cases)

(*) likely more, due to the processing order of modules in the SSP currently, its more likely to be two.

anyway, as I said at the top, once the modules are released, and users can get to play with them in real world scenarios … that’ll be a good time to judge what’s really needed, and if there are glaring holes :slight_smile:

k, early access for CLKD and LOGI for ko-fi supports :slight_smile:

see TheTechnobear : Release Announcements (no comments) - #3 by thetechnobear

CLKD , this is something I really have missed on the SSP , a way to have a central clock that was quick an easy to use, and also provided clock divider/multiplier functionality - its really a staple of modular patches.
with 8 outputs usually its enough on its own, but of course you can have more than one, and chain them.
it also has a mode where it can work with wonky clocks (for divisions)

LOGI, is a natural companion for CLKD ! CLKD + LOGI is an easy way to create rhythms.
but of course, Id highly recommend thinking out of the box here… combining other gates signal e.g. from a sequencer or midi, or even a sample and hold (SHQ) yields some pretty dynamic results.

have fun with these, see where you can take them :slight_smile:

3 Likes

Hi @thetechnobear, first of all, thanks for your awesome modules - they really make the SSP shine.

I have a suggestion regarding the new CLKD module. I’m using a Doepfer A 160-2 Clock Divider in my rack a lot. Besides the usual clock divisions (2,4,8,16,32 etc) it lets you dial in prime numbers (2,3,5,7,11 etc), which to my ears makes a lot of sense musically.

I couldn’t find a way to alter the current “power of 2” divisions in CLKD.

Would it be possible to press and turn an encoder to change the division range by 1? So dialing from 16 to 17 to 18 etc? IMHO it would make the module more versatile.

1 Like

for sure, the clock mechanism Ive implemented allows for any kind of division.
so the main issue, is I didn’t want lots of intermediate values that make no real sense for day to day use, hence the approach Ive used.

I’ll think about it though… as I do like using prime numbers for polymeters and polyrhythmic uses.
However, that leads me to think, perhaps, this should not be part of CLKD, rather a EUCLID module which could be driven by CLDK.

I’ve mentioned this before… but I’ll re-state, as its relevant.
when designing modules, its always a balance of flexibility/functionality and complexity.
I try to keep some of the complexity down, and increase flexibility by separating disparate functions into separate modules… this is the true spirit of module (imho)


I think often where we get sidetracked (me included :wink: ) is when we look at Eurorack modules.
something like PNW, has a ton of functions in what is essentially a clock module.
but the only reason this is true, is because its sells more of ONE module, it makes that module more attractive… (and is made possible by using digital tech to create multi functional modules)

if ALM had separated out EUCLID from PNW, they have a few issues.
the Euclid module would be more dev and distribution costs, and would have stiff competition from other modules… it would also not make PNW more ‘attractive’.

this is why Eurorack manufactures add new (kind of related) functionality to existing modules, rather than following the classic module route. this also has started to build an expectation in users of more functions in a single module…

as for doepfer, well the original a 160 did not have this feature, it was a much simpler module, again they are kind of following this trend.

anyway, point being… with virtual module, we do not have to go down this route…
we dont really need multifunctional modules within a multi functional module :wink:

… though, I make quite a few exceptions to this already :wink:

1 Like

Thanks for your insights. I fully understand your design choices. And I still can use my A-160-2, right? :wink:

1 Like

wow, where has time gone… I’ve completely forgotten to do the next release…
(k, its summer, so not really doing so much inside at the moment)

anyway… back in action - just released CLKD/LOGI as public release.

I’m going to put out a new EA release very soon… It will contained COMP/DRUM

I need to create wiki documentation, and also want to rebuild and test on the new SSP release from yesterday… so been busy updating everything here.
Hopefully, it’ll be tommorow, assuming I don’t get distracted by other things.

2 Likes

k, as promised EA release has been done containing DRUM and COMP (see this post

as I said, summer has kind of caught me napping a bit, the next EAP will be in about two weeks (probably last weekend of July) - and will contain, what is probably my favourite new module :slight_smile:

2 Likes

I get an error when I click this link?

Fixed, though it merely linked to my release post :slight_smile:

1 Like

oops, EAP was delayed this weekend…
partly because of time constraints on my side, but also because I wanted to take the opportunity of updating all plugins to use latest juce released (7.0.1) , and of course had to update all the documentation on SSP wiki.

so, now for the good news…

  • it’s all now prepared to go, done docs, built, all looking good.
  • as its been 3 weeks, since last… decided I’ll release 3 modules this time !

those modules will be:

  • CART : cartesian sequencer inspired by Make Noise Rene.
  • SRVB : simple reverb
  • HARM : 16 band harmonic oscillator

as Ive mentioned before, CART is now my favourite SSP module… it took a huge amount of work to create but Im so happy with the result…
I just love it, its equally fantastic as a quick n’ simple easy to use sequencer, or a creative inspiring sequencer… combined with CLKD/LOGI - it just is a beautiful musical journey.

I’ve never had Rene, but whenever, I saw videos on it, I was always … wow, I need this. Make Noise did something very special with it… its no surprise its a ‘classic’ in Eurorack.

so thrilled to have its inspiration on the SSP !

so yeah… its worth the wait :slight_smile:
… when is EAP released? this Friday, so you can have it for the weekend.
its all prepped to go, so I just need to upload and do the ko-fi post etc.

(if somehow I forget, and its not up by this Saturday, feel free ping me to remind me :wink: )

I’ll likely release the final 3 (DLY, LDRF, OMOD) , a couple of weeks after that.
(I’ll try to prepare it, so its ready to go… but hard in this warm summer we are having !)

Hell yeah! Can’t wait to try it out. Can CART be clocked by an external source like an Octatrack ?

Yup :slight_smile:

Use CLKD to take a midi clock into a conventional clock trig into CART.
CLKD is ideal companion, as you can do things like take a different speed clock for X and Y , and imagine what that does for C :slight_smile:

Also CART is completely happy with random ‘ticks’ - can be fun to use one CART for gates , to drive another CART , mix in LOGI ( and snakes) and you have an engine that’s ever changing but totally predictable.

1 Like

Thank you So much! I cannot wait!!!

so CART is a spinoff / re-make/re-model of René 2 ?

it’s inspired by RENE 1 and a bit of RENE 2 :slight_smile:
I wanted the simplicity/ease of use from Rene 1,
but needed a number of things from Rene 2 (but without some of its complexity)

but bare in mind:

a) RENE code base is NOT open source/available.
so ALL code is my own, and my implementation of how I believe RENE works from the manual…
b) I don’t own, and have never used RENE
so its my interpretation of how it works…

given the above, you can see how its my interpretation…
pretty much its how I would LIKE Rene to work, what I think makes it special given what I ‘know’ ( basically read in the manual, seen in videos etc) … if thats true of Rene hardware or not, I cannot say 100%

I also have taken some ‘liberties’ in my interpretation…
with hardware modules like Rene, they have to have a certain level of self contained functionality to justify their price/place… e.g. you cannot expect a user to have 2 Renes , or need/want another module along side it… as it implies more $$$, but this is at the cost of ‘modularity’
with software modules, this is not true - so an exact clone is ideal/needed… as you can use modularity without extra cost.

this is one of the reasons, Ive not done the whole Z layer aspect of Rene 2, frankly, I think on the hardware module its confusing, both in UI and concept - some times simple is better, less is more esp. if you can achieve similar using other modules.

similarly there are UI differences…
Ive implemented scales within CART, rather than just selecting notes on the ‘grid’ as Rene does…
On Rene, MN approach is nice, because not only is it flexible, but the touch pads make it quick.
On the SSP it feels a bit ‘clunky’, and scale selection felt quicker and more natural.

If anything, I see this divergence actually increasing… so its not something I apologise for, nor regret.
e.g. Ive implemented the Rene CV and MOD inputs, just because I wanted (personally) to see how they felt, and how Id used them ‘as designed’.
but reality is, CART could pretty much ditch most of the (confusing) FUN page, and I could just implement every ‘mode’ as separate CV inputs… ie. you wouldn’t not have to choose only 1 CV and 1 MOD mode, but rather could combine them.

this would be much more powerful than Rene… again the different between hardware and software, extra CV = $$ and panel space for Make Noise, but costs ‘nothing’ for the SSP.

similarly, I actually think the way X/Y CLK is used to derive C , is pretty basic on Rene.
(so much so, I confirmed it with Tony @ Make Noise :wink: ) - I originally implemented a much more interesting way… so I may add that, perhaps optionally, as a future update.

so yeah, Rene is inspiration only, from a module Ive always wanted.
at this point in time, I wanted to have it close enough for me to get a feel for it, and not to (imho) lose its feel, and what makes it special … but not slavishly ‘clone’ it.
I dont know if Ive achieved that, but I am happy that CART (as its own thing) is great.

again, Id like to re-iterate, CART took me a LOT of time to code…

Rene is a complex beast, even researching how it works, took time, esp. due to an ‘imperfect’ manual, as I say, I had to reach out to Tony at one point for clarification… as many YouTube videos just ‘gloss’ over workings… as often to USE something, doesn’t require you to know HOW it works.
then from that research, I then had to implement… with so many inputs and interactions between modes etc, this required a lot of work , and inevitably during my testing and using, I had to re-work things when I was not happy with how things ‘combined’.
so yeah, it took many weeks of development over a longer period of time… as Id put in down occasionally, just to get a break, and also ‘fresh eyes’ on the problems and goal.

But Im happy with the result… as I say, I now use it on pretty every SSP patch… not only for traditional sequencing functions, but also for modulation (tip: use glide when using as a sequenced modulator :wink: )

I’ll also say, it gave me a much better appreciation for the work Make Noise have done on Rene, sure some may find it a bit daunting, but its no doubt a classic. definitely worth the 550 euros!

I’ve considered buying one… but ironically, Ive learn that I love the simplicity of Rene 1 over Rene 2, but Rene 2 has some features Id miss… thats why CART is kind of a hybrid of the two.


btw: I should point out, that Rene is not the only cartesian sequencer around… but rather the most well known/classic in Eurorack :wink:

2 Likes