Dynamically-loaded Remote maps for RE

Have any feature requests? No promise they'll get to Reason Studios, but you can still discuss them here.
Post Reply
User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

21 Feb 2017

Before the introduction of Rack Extensions, Remote maps didn't have to be very big to cover all the devices in Reason. Today, though, with hundreds of REs in the shop, a robust Remote map, such as those included with Nektar's Panorama and Impact series controllers, is a massive file, multiple megabytes in size.

This contributes noticeably to loading time, since Reason has to parse the Remote file for every single RE the Remote map includes, regardless of whether that RE has an instance in the current file or is even installed. What Propellerhead should consider doing is switching to a dynamically-loaded Remote map architecture, loading only the scopes for the current document and loading new ones as new devices are added.

User avatar
Data_Shrine
Posts: 517
Joined: 23 Jan 2015

18 Mar 2017

+1
I also feel as that remote mapping should already be implemented in RE. But it seems like it would be a huge roadblock for smaller devs.

User avatar
Catblack
Posts: 1020
Joined: 15 Apr 2016
Contact:

18 Mar 2017

Well REs have Remotables -- that is, items in them that Remote can control. The issue is getting those items to match up to the configuration of one's midi controller. (With an added level of complexity being how you group them for a limited number of knobs, faders and buttons.) And then you'll want a way to know what is mapped to what. It's actually an issue I've been thinking about for years.

I could sketch out a path for solving it, but it would take a an open source working group to really crack. You'd want a database of remotables with suggested groups or pages for controllers with 8 faders/knobs, groups with 16 faders/knobs, etc. So Remotemaps could be generated for various hardware configurations.

Then the next piece of the puzzle would be to report what each knob is mapped to which remotable at that moment. The solution would be similar to how Novation's Automap codec works, or how the Mackie control codec works.

In fact, thanks to a tip from Koshdukai and Electrofux over on the Remote dev forum, there is a utility called Midi Tools which will work with the Mackie Control codec that ships with Reason, and that will give you up to 4 floating windows which can tell you what is mapped to what. (I have not tried it because I've been too busy, but I can see from the code how it works.)

So to me it's a two pronged problem. Getting an inclusive remotemap (or a large 'suggested for your number of knobs' one.) And then a utility (preferably cross platform) which can display what remotable you have mapped to each knob.
If you ain't hip to the rare Housequake, shut up already.

Damn.

User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

30 Mar 2017

These are all really good ideas. As a first step, though, I think there's a much simpler place to start: When parsing a remotemap on startup (or when the device is plugged in), only parse the scopes first. So Reason gets to this line:

Code: Select all

Scope	Propellerheads	Subtractor
and goes ahead and parses everything in that scope because the Subtractor is part of Reason. Then it gets to this:

Code: Select all

Scope	Rob Papen	PredatorRE
And now it checks the list of currently loaded REs. Is PredatorRE installed? Yes? Ok, go and parse the rest of that scope. But now it gets to this:

Code: Select all

Scope	Rob Papen	RPDistort
Reason checks the list, and RPDistort is not on it. So it skips over everything in that scope, and jumps to the next scope. And so then it skips RPVerb, SubBoomBass, and so on, and skips everything for all the other developers whose REs are not currently installed.

At least for Nektar users, this would probably save 30 seconds of beachball every time we start Reason. :lol:

User avatar
Oquasec
Posts: 2849
Joined: 05 Mar 2017

30 Mar 2017

Infinite precount until a midi note has been hit is another good idea, but I notice daws with routable transport bars can not do that.
Is that a C++ limitation?
Producer/Programmer.
Reason, FLS and Cubase NFR user.

househoppin09
Posts: 536
Joined: 03 Aug 2016

30 Mar 2017

"Routable transport bars" meaning...?

User avatar
Carly(Poohbear)
Competition Winner
Posts: 2871
Joined: 25 Jan 2015
Location: UK

30 Mar 2017

The current remote map size is just over 3 Meg, not exactly that big and if your system is taking 30 seconds then I would say something else is wrong, takes about 6 seconds on my little laptop.

It will not be any quicker with what you are suggesting, in fact if anything it would take longer, as the file will be read line by line anyway to work out if the the next line = scope, then you will checking if to load or not, if you load on when you access a RE, the whole file could be read again to get to the part to load so that could slow things down a lot if you flip between RE's. Having it in a database could speed things up but then you will have the overhead of running the DB.

With regards to a DB, I did have thoughts about releasing the mappings we do via a DB so you could have multiple mappings for one device and you choose which one you want to use, also thought the compiled remote map file that it produces only match the devices you have.

User avatar
fieldframe
RE Developer
Posts: 1037
Joined: 19 Apr 2016

02 Apr 2017

I timed it just now and I'm getting about 20 seconds on a Core i7-based MacBook Pro. I am using the OEM map though, not your custom ones (which I have been meaning to try), so maybe that will be faster.

I guess none of us really know the internals of Propellerheads' remotemap parser, so it's academic at this point what specific architectural choices would be faster or slower. All I know is that it's a less-than-ideal situation loading the entire store's worth of mappings every time Reason starts, and that there's probably a more efficient way.

Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests