TheTechnobear's SSP/XMX development

Ahh… I get it now… brilliant…

I see you have color coded the 10 pages,a suggestion; maybe add the page number also in future update…

So page 0 is basically off!”?.. page one to 10 controlled by page selector…

I get fractions of 0,25 turning the knobs… and having to press and hold them down to get increment’s of 0,01 is there a way to reverse this?

It’s basically an cv Electra one supercharged… without labels…amazing… and of course much more… such as presets ect…

Just wow…

The wiki is not super clear… I will dive deeper and suggest an update once I have explored a bit more…

1 Like

pages - yeah, I perhaps should introduce a page title when my plugins use multiple pages.

sorry, I wont change that… as its the same in all my plugins(encoder = coarse, push encoder = fine)
and I find user interface consistency, super important.

sure, I can see in some plugins, it might be slightly better the other way around, but if you consider something like where I use it for pitch, its be terrible to have this flipped (imho)
anyway, even here it really depends what you are doing… often coarse is still the preferred option.

not really, I’d personally say, using a voltage store as ‘preset voltages’ is just one small use-case.
however, its probably the easiest one to explain :laughing:

off-topic: Ive now created a new announcement thread (without comments) here for my release announcements.

this way users can comment here on this topic about releases and yet users not visiting less frequently can still quickly find the release info.
hopefully, this’ll also encourage more feedback in this topic, which is the important bit too.

1 Like

Ok, I understand about consistency when it comes to the encoders. thanks…

I guess I got excited as I find the SSP missing a good module where I can perform and controls several perimeters on different modules on one page and the MAC is limited to 8 and is away from the preset page…

Thanks again…

page 0, is not ‘off’ , rather its the ‘global page’ , used for settings that refer to ALL banks of presets.
currently, this is only SELECT… but I could add others here.

btw: I may change this to 16 banks (aka pages), so 16 x 16… as Ive seen a few instances where 16 (or 8) makes more sense.

indeed, VOST can be used for this… it was one of the things I use it for.

as I said, if you want to simply map 16 values to the electra one controls, then use the electra one snapshots to change these values, then this is simpler to do with ATTN.
this was the reason I created ATTN… to allow users to map CC->CV quickly!

however, many don’t have controllers like the electra one, that can store CC values - so this is why they might prefer to use VOST.

for you, the main advantage of using VOST are :
a) the voltage are stored in the preset… so you don’t have to use the E1 snapshots.
(and I personally like this, as its all together in the preset)

b) you can modulate select
you cannot modulate E1 snapshots!

c) you can morph between voltage banks
again, no morphing between snapshots on E1, and even if it was added it would be lower resolution

d) higher resolution
32 bit resolution on SSP, though UI is 0.01. midi (learn) then maps 7 bit (0…127) to this.
my midi learn is currently 7-bit only
ATTN (and VOST) support (hi-res) slewing, so avoids ‘jumps’ , but still the steps are kind of limited by MIDI resolution.

so personally, what I like to do is store the voltages in VOST (for different values) , and then just map SELECT to a control on the E1.

but of course, the point of modular is its flexible, so different use-cases (and different users) will use things in different ways.

this is where I get confused as with 0.25 increments I get 8 different setting per knob without having to push the dial down, same with ATTN where 4 setting are possible without pushing the dial down and it’s not so useful for live performance ie filters, volume, brightness, damping ect… so as a performance module I don’t see how as it is impossible to hold down the dial and turn it harmonically playing live…

Anyway… much complexity;-) I properly just got fixated at one usage…

Thanks for your suggestion using the e1… I will try that once it’s back from repair…

Thanks

ATTN range is unipolar (0.0 to 1.0), whereas VOST is bipolar (-1.0 to 1.0) , hence full range is twice ATTN. that said, Ive been meaning to change ATTN also over to bipolar, so it’ll then be the same as VOST.

I might make the coarse/normal increment 0.1 on both (and leave fine as 0.01) , as 0.25 is a bit too coarse.

these values are chosen a bit by ‘feel’ …
I obviously do quite a bit of testing, so after a while in my presets, I get an idea of what works… and what feels too much/too little spinning of the encoder.

I will also say, I dont really like to go down to 3 decimal places… as the range just feels too much when using fine values… way to much spinning of the encoder.

what might be nice (eventually) is to do something like the ER-301, where for particular values you can edit them accurately, digit by digit… however, at the moment, I really do not have a consistent spare ‘shortcut’ in many modules to do this…
so, any combo I can think of, would not really work for some modules ( * ) as its already ‘overloaded’.
… and im, again, not willing to sacrifice consistency for such a ‘hack’ :wink:

thats the tricky bit, adding more functionality, without making it more diffcult for ‘non power users’ to use.

( * ) in particular PMIX, uses pretty much every key combo… in particular the ‘obvious’ one which is something with LS or RS and encoder.

It’s your creation and I fully understand that you have spent much time thinking these modules trough…

Would be great to have the resolution a bit less course… I for one would appreciate that :slight_smile:

Also depends on “style” currently I love to express with changing the brightness, position, harmonics and filters and with that also volume simultaneously I record these expressions and then trigger the expressions via the STE g2 while the g1 or S controls the voct via your quantizer… currently I use the MAC, I really like the encoders on the SSP. I use matrix 8’s for management feeding out into a cv looper externally in a droid module that can be triggered via the STE or buttons on the droid. needless to say I would love to be able to do this inside the SSP as I’m using 5 valuable outputs with my current setup… so hopefully the looper or a cv looper will arrive one day…

We all have different needs… ultimately these modules are your creations and I’m super happy your creations the way they are and I understand that are adapted to your needs… as they should be…I will adapt :slight_smile:

Thanks again for your consideration around making your “course” it a bit less course :slight_smile:

And thank you for all your answers… you are such a great help on this forum…

well you could do that with either VOST or ATTN.
of course, if you are using S&H, that’ll interact ‘interestingly’ (= not as you expect?) with slew/morph.

as for cv recording… thats kind of different again, Ive other ideas for that.

you may be able to use DLYD (when I release it :wink: ) for this… as it has a ‘freeze’ option. which basically means the loop stays the same…
however, DLYD goes way beyond simple freeze loop, as you have 4 taps each with feedback.

I need to check its ok with CV, in theory its ok… but I later added some filter options now, so need to check they dont ‘accidentally’ dc block.

anyway, I think cv recording, would be interesting as a separate thing - but we will see.

1 Like

Was just thinking… is there are way to use the dials as a latch button round robin kind of way?, Where let’s say level on pmix parameter would have different resolution depending on how many times you push the dial?First push 0.xx(red) second push 0.XX(blue) round robin style…

I guess your vst’s use this for resetting the settings to default now, so it won’t fit the system… but may be an idea for other modules as a way to quickly make a dial control different parameters not that we have a push dial…

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