Softube Console 1 Total Integration

Official support for: bitwig.com
RELATED
PRODUCTS

Post

Yeah, there were/are a lot of broken things in the 2.0 API. I went half mad finding a combination that worked.
The way I do it now is to step through all devices when a track is selected until one is called [DESK] and then lock onto that.
[DESK] is a chain device that contains whatever you want to control.
Everything is done through remote controls preset pages.
I had to introduce a time delay in this stepping, since the observers were updating in unpredictable ways.
Also, the new API system - while making a lot of sense and being a step in the right direction - is still riddled with bugs and as you say, inconsistencies. Some of those are getting fixed but others are too random to even report.
I'm in contact with Nick and Alexandre but it will probably take a while to mature some more.

- I found the new enum to be totally useless ATM.
- SelectNext etc. are somehow borked and only work tuesdays. I use
cursorDevice.selectDevice(deviceBank.getDevice(currentDevice+1));
and keep a counter myself...

It's advisable to only use 2.0 stuff - you can force it by declaring
host.setShouldFailOnDeprecatedUse(true);

As for Console 1: I talked to a guy from Softtube at the Berlin Superbooth and it seems the whole system is pretty much proprietary and you probably would have to do USB port hacking or something like that to make it work yourself. Not my thing.

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

ThomasHelzle wrote:Yeah, there were/are a lot of broken things in the 2.0 API. I went half mad finding a combination that worked.
The way I do it now is to step through all devices when a track is selected until one is called [DESK] and then lock onto that.
[DESK] is a chain device that contains whatever you want to control.
Everything is done through remote controls preset pages.
I had to introduce a time delay in this stepping, since the observers were updating in unpredictable ways.
Also, the new API system - while making a lot of sense and being a step in the right direction - is still riddled with bugs and as you say, inconsistencies. Some of those are getting fixed but others are too random to even report.
I'm in contact with Nick and Alexandre but it will probably take a while to mature some more.

- I found the new enum to be totally useless ATM.
- SelectNext etc. are somehow borked and only work tuesdays. I use
cursorDevice.selectDevice(deviceBank.getDevice(currentDevice+1));
and keep a counter myself...

It's advisable to only use 2.0 stuff - you can force it by declaring
host.setShouldFailOnDeprecatedUse(true);

As for Console 1: I talked to a guy from Softtube at the Berlin Superbooth and it seems the whole system is pretty much proprietary and you probably would have to do USB port hacking or something like that to make it work yourself. Not my thing.

Cheers,

Tom
Haha, thanks Tom - that's exactly the experience I've been having, and exactly the same approach I've been taking. I actually made the preset name configurable as a user-exposed variable in the script, so people can define what the preset is called that they'd like to control (but then it will assume specific mappings/macros exist after that).

I've had the same issues that you've described as well - selectNext/Previous() doesn't work reliably, especially with repeated calls in the same function. I did want to introduce a delay between them as you mentioned, and my first attempt was to observe one of the hasSelectedDevice methods, and in there select something again - sort of an attempt at recursion with hopefully a built in delay between the host and the script. This didn't work. May I ask how you introduced a delay between making selections?

Post

Interesting you had the same experience. Yeah, it's borked but not in a way that can be reported.
One day the script worked, the next it didn't...

I use host.scheduleTask(delayedSearch, 100);
to call a function that checks for the existence of the device we want in the cursorDevice.name().addValueObserver, so that all observers have actually updated when the check runs. If the device isn't found and there are more devices in the chain, it jumps to the next one which changes the name so it's time-delayed recursive...

Dale used the Midi Twister at first too BTW...

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

ThomasHelzle wrote:Interesting you had the same experience. Yeah, it's borked but not in a way that can be reported.
One day the script worked, the next it didn't...

I use host.scheduleTask(delayedSearch, 100);
to call a function that checks for the existence of the device we want in the cursorDevice.name().addValueObserver, so that all observers have actually updated when the check runs. If the device isn't found and there are more devices in the chain, it jumps to the next one which changes the name so it's time-delayed recursive...

Dale used the Midi Twister at first too BTW...

Cheers,

Tom
Awesome thanks - that's exactly what I wanted to do (time-delayed recursive search by device name). I've already got the observer set up and the logic worked out, but like you said - it simply doesn't always work, haha. I'll look into host.scheduleTask().

Good news on the Midi Twister. I think my OSC layout will work well as a prototype/test for this script, and if it's pretty solid I'll look into a dedicated controller. I *really* prefer knobs for something like this. You have to look at glass while touching it, and I like to close my eyes while turning knobs for adjustments.

Post

I already have a Midi Twister simulator in Lemur if you want it.
While writing the script I used it instead of the Twister...

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

Hmm, I don't own Lemur (have considered it occasionally) but I appreciate the offer. This is excellent information already, so I'll get working on it more later. I'm pretty sure I'll be tailoring it a lot to what I specifically want, but try and keep it open enough in case other people want the same thing.

With your communication, do you get the impression that the API will become more and more solidified/reliable in the near future? :/

Post

shadiradio wrote:do you get the impression that the API will become more and more solidified/reliable in the near future? :/
Overall: sure, near future: ... no idea.
The more scripters report problems and repeatable bugs to Alex and Nick, the sooner they will be fixed, especially if they are simple to reproduce. They are both brilliant devs, so as soon as we can nail stuff down, it should be a fast process to eliminate it.

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

ThomasHelzle wrote:
shadiradio wrote:do you get the impression that the API will become more and more solidified/reliable in the near future? :/
Overall: sure, near future: ... no idea.
The more scripters report problems and repeatable bugs to Alex and Nick, the sooner they will be fixed, especially if they are simple to reproduce. They are both brilliant devs, so as soon as we can nail stuff down, it should be a fast process to eliminate it.

Cheers,

Tom
Hopefully before my 12 months of upgrades expires!!

Post

:lol:

Post

ThomasHelzle wrote:I use host.scheduleTask(delayedSearch, 100);
Just wanted to say thanks again - my first test using a recursive scheduled task works great. I went with 50ms as it worked without failure - any reason why you chose 100ms? Just curious if you ran a bunch of tests to arrive at that. Thanks Tom!

Post

It felt more stable here, but it may depend on the rest of your script.
Whatever works :-)

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

You both seem very intelligent, but I literally have no idea what the f**k you're talking about.

Post

totheatom wrote:I literally have no idea what you're talking about.
Bitwig has an open Java Script Controller API which can be used to write/script/program a "connection" to pretty much every hardware controller that is sending normal Midi/SysEx etc. and make it do whatever you want, as long as Bitwig supports it.
Softtube Console 1 isn't such an open/normal system though, so we deviated a bit from the original topic discussing other controllers and how to make them work as alternatives.

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post

Got it. Thanks. On that note, would you be able to make a recommendation for what you believe is the most capable mixer/controller currently available for the platform? I'm desperate for one and unsure of the direction in which to proceed. I recognize that the Console 1 is not a mixer, but rather a supplementary piece to speed up workflow, which is highly intriguing.

Regarding something with proper faders, etc., it seems the Behringer X-Touch, Presonus Faderport 8, Mackie MCU Pro (the most mature and expensive), and the various QCon offerings are the best options currently available, unless I'm missing something? I'm really not blown away by any of them, but I was on board with the idea of a QCon Pro X. However, I've read a lot of forum posts about relability issues with that unit.

I'm really hoping to find something that will be as all encompassing as possible because the constant back and forth between my MIDI controllers and the screen/mouse are really affecting productivity. Appreciate any insight and advice you can share as someone who best understands the current state of the platform. Thanks!

Post

We tried the Behringer X-Touch first, and I was really fascinated by it in a bad way.
It has large motor faders but they are not high-rez even if they are set to pitch bend, which would be 14 Bit in theory. So 10 cm for 128 steps... :-(
The faders make very annoying, high-pitched noises.
The unit is huge, fat and (to me) ugly.
Build quality isn't good, it feels very cheap, button and especially fader caps are really bad (which is silly).
The editor is only available for PC so far - it's okay otherwise.
We decided to send it back.
It actually feels like several steps down from the BCF2000 which wasn't the hottest controller either, but at least could send high-res data...

We looked at several other options then.
- The Faderport 8 probably is good, but it has no rotaries.
- The Asparion D400 looks great, seems high quality, but the layout wasn't to Dales taste - encoders should line up with faders for him. That would be my personal favourite otherwise next in line.
- Mackie is quite expensive.
- Avid Artist Pro is also expensive (and later I heard from somebody that for the price it's actually crappy built). I personally do not like Avid as a company and wasn't sure how well it would work as a general controller.
- The Softtube Console 1 is mostly a hardware controller for their own plugins in supported DAWs and (I read) for some of UAD. We wanted an open system and also motor faders. I personally do not like proprietary systems.

So - although we were sceptical, we opted to try the ICON Platform M.

Pros:
- Much smaller than the Behringer X-touch (feels like a fourth of the bulk). Thin and not as deep, so you could put it behind your typing keyboard for instance. Sits really nicely on the table and looks and feels good. I enjoy the design.
- Much better quality, the top is metal, sides and bottom is sturdy plastic.
-Buttons feel good, not too clicky, not too little resistance. All but 6 can be lightened up (red) from the script.
-Rotary knobs could be a bit larger in diameter (we consider exchanging the caps or "extending" them with 3D-printed elements) but feel quite good and sturdy. They are rastered which is fine, but the raster isn't aligned to the value changes....
- Fader caps are much more stable than the Behringer ones (also touch sensitive and sensitivity is user adjustable).
- Motor fader noise is much more "normal" than the Behringers, they just sound like "moving stuff" sounds. When all of them move from automation it is well audible, depending on how loud you play back your tracks, but it is not an especially annoying sound. I got used to it fast and assume that there isn't anything better below 300$ or even 500. Next best is probably the Faderport.
- Nice jog-wheel, we use it for fine-tuning values in our script.
- Support is really good. Initially we had several problems, but in the meantime we are at firmware 1.12 and they fixed most of the issues. Brian really tries to help, not something I take for granted with such an affordable controller.
- If you want, you can buy the Platform D display for it - we didn't.
- In the meantime, there is also an extender with additional 8 channels announced.

Cons:
- Editor ATM still only available for PC - you also need it for firmware updates so it's rather important.
- The motor faders sometimes do not reach their goal right away and then can get in a "creep mode" where they move very slowly - and sometimes whiny - along. Improved with Firmware 1.12 and I hope they can improve it further. Maybe the most annoying problem left.
- The faders move with rather different speeds. In my case, 4 of them move very fast and fluid, 3 are okay but slower and 2 lag behind and - at slow speed settings - crawl behind. I now found a speed setting where it's okay for me personally, but you can clearly see that it's not a highend controller at that - with better adjustment or quality control they could have a winner IMO.

Neutral (for us):
- No led-rings on the encoders.
- No LED bars for volume.

So to wrap it up:
We decided to stick with the ICON since it's pretty perfect in many areas and nothing else fits the specs we had, even for three times the price.
If you can live with some smaller issues, it has a certain charm, even with the imperfections.
Best to give it a try, units can be rather different so you may have to return one and hope for a better replacement in case you get a bad one.
Motor fader noise is very personal, so only you can decide, I find it acceptable and am usually very sensitive.

Dale plans to extend the script later on and release it to the public - ATM it's very specific to his mixing workflow.

Hope this helps,

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon

Post Reply

Return to “Bitwig”