Remotify: an application forged out of frustration

I’ve been an Ableton user for quite a number of years now. 

I love to make trance & techno in my home studio, any spare time I get I’m in there working away on creating a new spine tingling Melody or driving bassline. Currently I own 8 Midi Controllers including the Akai MPD32, Novation Launchpad, Midi Fighter Twister and was blessed to be given an Ableton Push 2 as a christmas present from my generous family.

some of the midi controllers in my collection

When I bought one of my first controllers (Midi Fighter Twister) I already had an idea in my head of how I was going to control Ableton with it. What I love about it is it’s simply a box with 16 chunky encoders, the controls haven't been laid out with a specific purpose in mind leaving you to use your imagination in what you want to do with it.

midi fighter twister midi controller

After a couple of days getting to grips with the controller, I was using it one night and suddenly thought to myself “how the hell do I control the first 8 sends on the currently highlighted track?”. It was something I had wanted to do when browsing online for my purchase but had temporarily forgotten about. I couldn't see an option to do it in Ableton and after a few minutes searching online, it became clear that functionality for controlling various parameters on the highlighted/selected track couldn’t be done with the built in mapping engine. So this ruled out controlling those sends I wanted.

I was totally stuck :(

I would have given up there and then thinking it wasn't possible but I had seen other Midi Controllers such as the APC40 had selected track control so I knew it could be done. 

But how the hell were the companies who made these products doing it?

After a lot more searching, I came across someone talking about this thing called “Midi Remote Scripting”, they said it was what the midi controller manufacturers actually used in order to program their products for integration with Ableton. They also mentioned that selected track control functions could be added with it…

I was instantly sold!

I then spent the next few weeks learning about Midi Remote Scripts. At this point I was already very experienced in the world of coding, already being a website developer as my day job for a number of years. Despite this, getting to grips with Ableton’s python code was a serious job in itself, even for me!

 python code for a midi remote script

It soon became clear that writing one of these scripts was an insanely difficult job and any documentation online for it was hard to come by, outdated and confusing. So it wasn’t as though I could just google the answer to issues whenever I ran into them (which believe me was often!) Eventually, after about a month of broken scripts and headaches I had all but given up. Here’s my actual cry for help on the djtechtools forum back in 2015. As you can see from the forum thread, it begins with me being at a total loss and although doesn't fully illustrate just how frustrated I was at the time it shows me managing to put bits and pieces together and actually making my first fully working midi remote script. I named it “sendstorm” (y'know send instead of sand... well I thought it was clever anyway); a script for the Midi Fighter Twister which was based around controlling those first 8 sends on the selected track that I had always wanted. Although the original script is no longer available online, I recently rebuilt it in our Ableton MIDI Script Editor. You can download/import the script and use it yourself here: SendStorm / Midi Fighter Twister Ableton Script. 
This was a big achievement for me but soon I began getting requests from users asking for the script to be ported to other controllers. 
I managed to help out one person with a port to the BCR2000 controller. This was great but the whole task was extremely time consuming and filled with endless headaches.

"What if I created some sort of interface which people could use to build their own scripts?"

As I now had a basic understanding of writing midi remote scripts, my developer brain had kicked in… it seemed crazy to keep building scripts from scratch by hand. If I could develop some sort of App which gave people the ability to build their own scripts without the need to go through the pain of actually writing code themselves. I could help empower countless producers and performers to build the setups of their dreams with equipment they already own! I’m sure you’ve bought a controller which doesn’t quite do the thing you need it to. If you could just tweak its functionality yourself then you could control the exact parts of Ableton that you need to.

The concept was born... now how the hell is this supposed to work?

From this point, to our official launch in summer 2016 I had the massive task of not only designing the app and how it would work but actually developing a working prototype to launch with. It was hard enough writing a hardcoded midi remote script without if breaking constantly. Building what is essentially a framework to automatically generate this code for a working script based on countless variations selected by the user was a whole new ball game. I hired other developers at various points to work on specific aspects of the project which I didn’t have time to do. Holding down a full time developer job and working on this in my spare time meant I didn’t have time for everything and this honestly pushed me to breaking point a number of times.

head in hands captain picard

I had countless frustrating evenings were I made absolutely no progress and almost quit the whole project. I would always come back to it though as I was driven on by my passion to make this idea a reality, I knew it could help so many people so couldn't give up!

We finally launched the first version of Remotify in July 2016.

It contained a number of awesome features including selected/highlighted track control for all mixer functionality, device control (we've since expanded this with our Advanced Device Control release) and UI features such as 'Midi Learn' which was a big achievement for the project as it used some quite cutting edge web technology to achieve.

remotify app

After initial feedback, it quickly became clear that there was a lot of functionality which people desperately wanted adding so it was only then that I began to get a real sense of the work still to do. The Ableton/Music Production community are extremely vocal and have pulled apart every aspect of the app along the way. This usually happens late at night in a personal email to me as I’m about to go to bed lol. At first this was quite stressful, especially after I had worked so damned hard to get it launched (grumble) but I learned to use these comments / suggestions / complaints as indicators of what we need to work on next and our user's feedback is now a core part of the development process. As a user of the App myself, I have my own ideas too but I’m just one person so I usually let the majority decide. The more features we release, the more we come up with or are suggested to us. My aim is to make Remotify a feature packed essential requirement for all Ableton producers and performers out there. The great thing now is I’m receiving more and more messages where people have successfully created the exact script they had dreamed of and that to me means we’re succeeding!

The next step - what if it was a Desktop app instead?

At some point in 2018 we had gone as far as possible with the web app. We were becoming extremely limited by how tightly our App integrated with Live's API Framework. For many feature requests (such as the ability to set the max volume of a track to 0b) we needed to de-couple our code from their framework and essentially build our own framework. To allow for this we needed re-write the backend of the App from scratch,. At the same time we also made the decision to build a totally new Desktop based front end which allowed users to install their scripts directly into Live, save and work on multiple scripts within the UI. We also had the awesome idea to separate the settings of each controller from the script building process, this would mean that users would only need to configure their controller's MIDI settings once and then be able to continuously build new scripts for it. Our desktop app 'Control Surface Studio' was born and launched at the start of 2019. This has been a massive learning process in itself, we have came up against many unexpected issues but as always we let our valued users guide us as much as possible in our quest to bring the power of Ableton script building to every producer and performer out there.

oh one last thing, thinking of a name for your business is hard…

It’s a lot trickier than you would think. 
I went through every name I could think of related to music production, performing, controlling etc but everything was used. I researched other ways to come up with names and began to get a little bit more abstract. Taking the lead from websites that have names, nothing to do with their actual business (google, skype, uber etc) I came up with some odd ones. I almost went with “honcho” at one point, thinking it sounded like a fun, techy brand. Until I searched the name online and found that it’s also the name of a certain men’s adult publication, "probably best not to get confused with that" I thought :/ In the end I was combining words together and landed on “Remotify”. It worked and “you never know” I thought, people might even use it to describe the act of building a midi remote script i.e. “I’m just remotifying my controller, I'll see you at the club in a bit” or something like that. So, which controller are you thinking of “remotifying” next? :)


Control Surface Studio User

I have mapped my two Kontrol F1s but have gotten stuck on mapping the actually launch pads of this controller is there any tutorials for that? Cant find any.

Control Surface Studio User

This was a nice read, and a true testament to your commitment to saving the community from having a complete mental breakdown! Thank you for keeping us sane and in the groove, CSS was worth every penny.

paul oord
Free User

I tried the web application but is is impossible to work with:
- black font on black background is invisible!
Please change the design to normal black and white, visible for young and old...
(Chrome on Mojave)

paul oord
Free User

The web application behaves strange at times:
- loading different .json files after each other leads to errors: a file with 8 channels after a 16 channel file ads up to a 32 channel script. Might be due to some caching 'here or there'.