Hi! I follow this thread and understand that you already have a lot of things going on. This is commendable and deserves a lot. We have a huge number of interested people here. I suggest that we start testing all this together and write about any problems or shortcomings in order to bring it to a stable and convenient operation. For Windows, can you show, record a short video instruction on how to run this whole thing? The more people can see it now and test it, the faster we can all work comfortably. Together, we are a force.
OK, I’m posting a quick guide on how to set up the script to run on Windows. It will run on Mac as well, the biggest difference being that Mac users don’t need a third-party app in order to get virtual MIDI ports as they can just use the IAC Driver for that.
The script is set up for the X-Touch One but it should also work on other single fader controllers if you rename a couple of lines in the code. I will mention how to do so below.
-
We need to set up virtual MIDI ports. I used loopMIDI but you can use another application if you like.
loopMIDI | Tobias Erichsen -
Launch loopMIDI, delete the port it creates for you, and create two new ports, name them loopMIDI Port IN, and loopMIDI Port OUT. If you’re not using loopMIDI it would be easier if you still used these port names as they are coded into the script.
-
Install Python from the Microsoft Store (don’t get the one from the Python website as that could complicate some things). This version of the script works on Python 3.
-
Open a Command Prompt (by typing cmd in the taskbar) and type
pip install mido
-
Next type
pip install python-rtmidi
-
Download the script: Dropbox - Hackie_Mackie_base.py - Simplify your life
6b. This step is only for those not using an X-Touch One. Open the script with something like Notepad. You’ll notice ‘X-Touch One’ written twice near the top. In your DAW, look at the MIDI Ports for the exact name of your controller (in Cubase this is in Studio Setup → MIDI Port Setup) and use that name to replace both instances of ‘X-Touch One’ in the script. Save and close.
-
Run the script by double-clicking it. It’ll run as long as the window stays open.
-
In Cubase open Studio Setup and under MIDI Port Setup untick everything next to loopMIDI and your Mackie controller. If you’re not using Cubase do the same in whichever DAW you’re using.
-
In Mackie Control - for the MIDI Input choose loopMIDI Port OUT, and for the MIDI Output choose loopMIDI Port IN. I did not mistype that, the ports need to be reversed like that.
Alright, if everything was done correctly you should now hopefully have full auto-banking. As mentioned in an earlier post, if you use a large amount of tracks, find this line in the script ‘if(7> bankCounter >=0):’ and increase the value from 7 to the number of banks you’d like to use. Also, in ‘if(bankCounter >= 15):’ increase the value for the maximum amount of jumps to the number of banks you chose times 2. You can also adjust the sleeptimer to a lower value to make it work faster, at a CPU cost.
That’s awesome. Thanks for making this a bit more accessible than I did.
I still hope Steinberg notices this though, as I want them to make this integrated as an option in their implementation of mackie controllers so it can be done better.
Absolutely. Steinberg definitely need to implement this. They must have noticed by now. This currently seems to be the most popular thread in the feature request section.
You guys are great fellows! It really works very well. I also managed to run and even had time to test this script. Audio tracks, midi, instrumental, fx tracks were switched well in all directions. The only thing I noticed is that it does not recognize the main master track. It’s just that the scoreboard says “Select Track” and does not allow you to perform actions on the controller. And one more observation, there are buttons for switching channels and banks on the controller itself, so when we have crossed one bank of 8 channels on the selected tracks, it does not allow us to cross the bank to the next 8 channels and in the opposite direction as well. But this is just something that I noticed in general, of course, it is not critical. Just maybe someone will want to finish it all. As I understand it in this form, if you add this code somehow to the general firmware, then this will be a full-fledged modified product. And so with the launch of the code itself, work with complete delight!
Are you using an X-Touch? It has a Master button on the controller itself.
I would really love to see Steinberg follow Logic’s initiative by implementing increased Mackie controller support/functionality - Auto Banking is a basic necessity! I understand that Steinberg probably doesn’t see it as their issue, but the reality is they could address this, as Logic has done years ago, and it would make many users happy.
Thanks for the work on the script by the way
Awesome that you also got it going.
Master isn’t a track that belongs in a bank with mackie control.
It is, like @MC89 mentioned, a button you just push on the controller to go to master mode.
Same situation occurs if you select midi tracks, or a folder. This is why the script needs a max number of jumps, or it’d just infinitely jump around and scan for banks if you have an invalid track selected.
As for the bank buttons on your controllers, they wont really work with this script running, because if you hit bank up/down, the script will force you right back again
I was thinking I could work on that as well. Such as track buttons changing to the next track once you are on the last track in the bank, and hit next track (this is super easy to detect).
Bank buttons could in theory also switch to next bank, and select the first track in the bank. This is slightly less smooth to do, but all is doable.
I do need to re-write a lot of the logic from scratch though I think, as this script was really just a proof of concept, and it contains a lot of trial and error figuring out functionality.
To make it work better and faster I can also scan through banks and make a record of track names in the banks, and then use that in the jumping logic. This will improve the speed dramatically. It should basically keep all jumps more or less instant.
There’s another tweak I need to do as well to improve performance, and that is to only listen to midi when they arrive, and not constantly check the midi buffer for new messages.
This is doable, but it is also a little tricky, as a lot of this depends on messages coming and being sent in a certain order. I just need some time for this to fall in place.
I might start another round of coding in a few weeks when summer holidays start here, and I’ll definitely ping people in this thread for input and testing if I get going.
Yes, I’ve figured it out now. I have a Behringer X Touch One.
That would be great. I will be ready to test all the new developments that you have written to improve and bring to an ideal work with this device. I wonder when it will have a closed form, is it even possible to add this code to the main firmware somehow, in order to work, for example, without running a Python file?
+1 Would be great to see this improvement added at some point.
Yep I still have my hopes up that this is being watched by Steinberg, now that we know it is a pretty trivial thing to actually do.
Please devs, this feature is so long overdue! this would enhance our workflows drastically
I just thought I’d mention. I just re-visited the Eucon app for Ipad and, it auto banks no problem! Also it ha improved immensely over the last year and has become a VERY useful controller app. It also seems very stable and it’s free! Worth a check out …
Hi. Thank you for your contribution.
However, I cannot download the source cord file you provided.
Dropbox said there is a error downloading the file.
Is it my problem? could you check the link availability if possible.
Thanks.
I’m kinda amazed we have a bunch of people who managed to make use of the script I made.
The windows adaption/guide seems to have worked out nicely as well.
Hopefully this wont be needed for much longer if Steinberg does pick up on this. We did at least get a decent number of votes in.
It works fine for me but here’s an alternate link.
The link and script both works!
Oh my god. Thank you guys so much!!
First of all thanks a lot for making the script. I was wondering if somebody else got the same problem when installing. I installed everything but got the message
line 3, in
import mido
ModuleNotFoundError: No module named ‘mido’
Tried to reinstall but unfortunately the message keeps popping up.
Did you install mido separately? pip install mido should work.
It’s been so long since I was working with this now, so I can’t quite recall, but is it possible you have environment variables set up incorrectly? Or that pip installed it for python 3 or something?
Sorry I can’t really recall good ways to troubleshoot python now since I don’t do much coding in my spare time anymore.