TheTechnobear's SSP/XMX development

I was playing around with the new module VOST and my patch was simple to test it out

DCG>VOST in A and activate VOST in/out A > DATA in A and activate A in DATA

I get the changes I make on the DCG indicated on the mini scope going into the VOST but it does not sample and hold or store the voltage in the out part… out remains 0v…

Where am I making a mistake?

Maybe I misunderstand something… very likely… non the less I totally see the potential as a very very powerful module if I get its purpose right…

Could it be integrated with fore example plaits and rings or any other of your midi controllable vst’s, by allowing some internal MIDI communication? Mostly to get the midi feed back like we get when connecting an external midi controller… but inside the ssp… a MAC midi (MAMI) if you like… internal midi controller like the Electra one… I’m not sure how much work this would be or if at all possible…

In all cases… The VOST opens up possibilities that is making my head spin… so very good idea not releasing all your new creations at once…

Again thanks for all your work…

yeah, VOST doesn’t work like that … perhaps the wiki description is not clear ?
(its not a sample and hold module … you can use SHQ4 for that :slight_smile: )

to use VOST you do not need any DCG…
you store the voltage within VOST, if use use pg+/- , you will see 10 pages of 16 voltages, that you can set… which page is used, is changed by select (param or cv)

the inputs are used for something different :slight_smile:
these turn VOST into kind an (16) attenuverter, e.g. OUT 1 = IN 1 * VOLT 1,
but of course, you can still use select to change those ‘volt N’ between the pages.

midi - sorry, second part of your question…
yes, ALL my plugins support midi learn for all parameters (*) using my MIDI page, accessed via both shift buttons (RS/LS)

press LS+RS, activate learn, press LS+RS (to return to ui)
twiddle parameter, twiddle midi knob (cc only currently) repeat as many times as you want.
press LS+RS… de-activate learn, press LS+RS (to return to ui)

note: with VOST , volt/page combo is different , so page 1 / volt 1, is different to page 2 / volt 1
so you could learn these individually… though that 160 (potential different cc’s :wink: )

if you just want a simple midi controlled attenuverter or one page of voltages… you can use ATTN.

(*) there are a couple of which are not ‘parameters’ eg which page you are looking at.

btw, for those wanting to see some of this functionality or have questions.
… things like midi learn are shown in my video on the SSP
link here to my channel

also there is going to be a livestream on YouTube with MATTHS next Monday
Monday 6th June , 7pm (CET) , 6pm (BST) , 5pm (UTC)

we’ll be posting an official announcement of this, once we have the YouTube link!
but book it in your diary now :slight_smile:

if we don’t get around to answering all questions then (time limits detail we can go into) , then if people are still hungry and interested - I could do my own livestream after that one.

EDIT: ah, link is good now

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