Bitwig Performance Twister: Midi Fighter Twister + TouchOSC

Post Reply New Topic
RELATED
PRODUCTS

Post

Hi folks,
let me introduce you to Bitwig Performance Twister, a new controller script that I have developed for the Midi Fighter Twister (MFT). Since the MFT does not have a display, I have added the possibility to use a device like an iPad to show what you can do on the MFT. Additionally, that gives us the possibility to create our own Hans Zimmer-like touch screen. The display runs on TouchOSC. That makes it possible to let it run in on many different devices.

I have developed this script for my own use. And I am really happy with the result. Especially the integration between the MFT and a touch screen. In my opinion, it gives you the best of both worlds: having a great device with many encoders and button (-> haptics) and a great device to show what's going on and to trigger commands (visual feedback). Moreover, the touch surface can be configured very easily on TouchOSC.

Let me introduce you this script with this video. There I show you the highlights, all six different modes and also how to configure your own touch screen.




Bitwig Performance Twister is free and open source and available on GitHub.

Some useful links for the Bitwig Performance Twister
▶️ User documentation: https://github.com/Markram71/Bitwig-Per ... /README.md
▶️ How to use the OSC extension: https://github.com/Markram71/Bitwig-Per ... tension.md
▶️ A complete list of Bitwig commands: https://github.com/Markram71/Bitwig-Per ... ommands.md
▶️ The Midi Fighter Twister: https://store.djtechtools.com/products/ ... er-twister
▶️ TouchOSC: https://hexler.net/touchosc

Post

This looks great. I will be checking this out in the next few days/weeks. Thanks for your contribution!

Post

markram71 wrote: Wed May 15, 2024 6:20 am Hi folks,
let me introduce you to Bitwig Performance Twister, a new controller script that I have developed for the Midi Fighter Twister (MFT). Since the MFT does not have a display, I have added the possibility to use a device like an iPad to show what you can do on the MFT. Additionally, that gives us the possibility to create our own Hans Zimmer-like touch screen. The display runs on TouchOSC. That makes it possible to let it run in on many different devices.

I have developed this script for my own use. And I am really happy with the result. Especially the integration between the MFT and a touch screen. In my opinion, it gives you the best of both worlds: having a great device with many encoders and button (-> haptics) and a great device to show what's going on and to trigger commands (visual feedback). Moreover, the touch surface can be configured very easily on TouchOSC.

Let me introduce you this script with this video. There I show you the highlights, all six different modes and also how to configure your own touch screen.




Bitwig Performance Twister is free and open source and available on GitHub.

Some useful links for the Bitwig Performance Twister
▶️ User documentation: https://github.com/Markram71/Bitwig-Per ... /README.md
▶️ How to use the OSC extension: https://github.com/Markram71/Bitwig-Per ... tension.md
▶️ A complete list of Bitwig commands: https://github.com/Markram71/Bitwig-Per ... ommands.md
▶️ The Midi Fighter Twister: https://store.djtechtools.com/products/ ... er-twister
▶️ TouchOSC: https://hexler.net/touchosc
This looks great! Great work! And thank you for making this public/free for everyone, including that very detailed video. I don't have a Midifighter Twister (yet), but as a touch osc fan, i always love to see such detailed work, really fascinating :)
I built a Looper for Bitwig! :) https://www.youtube.com/watch?v=-z5ywDo2bU0

Post

Thank you for the amazing work. I can connect Midi Fighter Twister to Bitwig without problem. But now stuck in the TouchOSC part. Do I need to install DrivenByMoss first?

Here's what I've done:
1. Put BitwigPerformanceTwister.bwextension & DrivenByMoss.bwextension in Bitwig Studio/Extension
2. Add Midi Fighter Twister as a controller
3. Add OSC as a controller
4. 192.168.178.37 in Bitwig
5. 192.168.178.31 in iPad/TouchOSC/OSC/Host
6. Port: 8000, 9000 respectively
7. Hit "Play" in TouchOSC

Still can't make it work. Don't know what to do next. Anyone with success could help?

Image

Image

Image

Image

Post

Hi bbaasszz,
yes, getting the OSC part to run is definitely a bit more tricky. It also took me a while to figure it out. A few points on that:
  • You don't need to install the Moss OSC controller. I have included Moss' work inside the Bitwig Performance Twister script. So remove the OSC controller.
  • Make sure you know the IP addresses of your setup (computer and ipad. From what I see it looks OK. But make sure they have not changed over time.
  • You might want to try to run TouchOSC and Bitwig on your computer. TouchOSC is also available on Mac or Windows. With that you limit the complexity by having both application on the same machine and then there is no need for OSC communication to go through a network. In that case you need to set the IP address both within the script and TouchOSC to 127.0.0.1
  • In case you can get the setup working on the same machine, see bullet above, but not via the network, make sure both devices, computer and iPad, are within the same network and can talk to each other.
  • You can also try to test each direction individually, i.e. 1. Bitwig->Script->TouchOSC and 2. the other way around. I have experienced it that one way works and the other way did not work.
Hope that helped. Would be great if you could share your experience here for other to learn, as well.

Cheers
Martin

Post

Bitwig 5.3 beta 1
MacOS 15.1.1
touchosc-1.3.6.216

selecting 'channel strip mode' crashes all plugins and the audio engine.

Post

First of all, many thanks for your hard work! I have tested it on both Windows 11 with latest Bitwig beta and with 5.1 on an old MacOS. I have tested under 2019 and 2023 MFT firmware with the provided configuration template. In all cases, I have the same issue.

When I switch from initial mode (Mixer), the top-left button doesn't work in Bitwig. After checking in another midi tool, this knob, only, sends on channel 5. When I switch back to Mixer mode, it works by sending on channel 1. I don't see any reference to channel 5 in MFT Utility. Any idea?

Post

monolithx wrote: Thu Jan 30, 2025 5:54 pm When I switch from initial mode (Mixer), the top-left button doesn't work in Bitwig. After checking in another midi tool, this knob, only, sends on channel 5. When I switch back to Mixer mode, it works by sending on channel 1. I don't see any reference to channel 5 in MFT Utility. Any idea?
Hi monolithx, I am sorry, but I cannot replicate this behavior. Yet, fyi, in the last mode, the user mode, all knobs send on channel 5. That is bank 4 of the Midi Fighter Twister. Maybe it helps if you reset the first knob with the Midi Fighter Utility? Sorry, I cannot help further.

Post

guitarfrenzi wrote: Sat Nov 23, 2024 12:14 pm Bitwig 5.3 beta 1
MacOS 15.1.1
touchosc-1.3.6.216

selecting 'channel strip mode' crashes all plugins and the audio engine.
I just tested 5.3 Beta 6 and this problem seems to be fixed.

Post

Thanks a lot for all your work!! It's so cool to extend moss own works.
Rn i'm curious about something. I'm trying to build upon your touchosc map work and i'm using your extension.
I want to be able to scroll thru the tracks banks. Right now tracks 1-8 are being controlled by touchosc but i want to be able to go bank+ to select track 9-16.

When using moss extension i can do this with
/track/bank/page/{+,-}
but when i switch to your extension it doesnt work anymore using this command and i see in your manual that you have control like this
General Select next track Select next track
General Select previous track Select previous track
or track selection by track number like
Project select_track1 Select track 1
Project select_track10 Select track 10
Project select_track11 Select track 11
So i'm not sure how to proceed.
When i use my touchosc setup built with your extension i cannot use /track/bank/page/{+,-}
but then you don't have control for bank in the bitwig commands you provided.
And idk why moss command isnt usable with your script because some of them works. And it's a matter of going back to moss script only

i tried to do "Commands/BitwigAction Select next track" but it doesnt work i guess it has to do with the way my individuals tracks are set in touchosc ?

Post

markram71 wrote: Thu Jan 30, 2025 7:57 pm
monolithx wrote: Thu Jan 30, 2025 5:54 pm When I switch from initial mode (Mixer), the top-left button doesn't work in Bitwig. After checking in another midi tool, this knob, only, sends on channel 5. When I switch back to Mixer mode, it works by sending on channel 1. I don't see any reference to channel 5 in MFT Utility. Any idea?
Hi monolithx, I am sorry, but I cannot replicate this behavior. Yet, fyi, in the last mode, the user mode, all knobs send on channel 5. That is bank 4 of the Midi Fighter Twister. Maybe it helps if you reset the first knob with the Midi Fighter Utility? Sorry, I cannot help further.
Solved! Knob's hardware issue. MFT QA doesn't seem at its top, 2nd unit touching knobs still change value without turn.

Anyway, I had a look at your code, especially DeviceHandler class. Is there a way to lock MFT to a given device (could be project remote if needed) on a given track without following user UI selection. All my tries failed.

Edit: OK, I did it. Can pin/unpin any device to MFT :tu: Still not very familiar with Bitwig API, but very cool to be able to navigate in project while fixing MFT.
(very basic pin management, not sure if I need to pin the track, but enough for now. Back to music!)

DeviceHandler:

Code: Select all

...
// Mark interest in pinned states so we can safely read their values later (pin/unpin toggle)
this.cursorDevice.isPinned().markInterested();
this.cursorTrack.isPinned().markInterested();
...
case MFT_Hardware.MFT_BANK3_BUTTON_08:	
	if (msg.isLongClick()) {
		boolean currentlyPinned = cursorDevice.isPinned().get();
		cursorDevice.isPinned().set(!currentlyPinned);
		if (cursorTrack != null) { // Also pin/unpin the track
			boolean trackPinned = cursorTrack.isPinned().get();
			cursorTrack.isPinned().set(!trackPinned);
		}
			showPopupNotification((!currentlyPinned ? "Pinned" : "Unpinned") + " device and track");
	}else { //short click            	
		myDeviceParameterPage.selectLast();					       
		parameterPageButtonClicked = true;
	}
	return true;

Post

Thank you so much for your work and for sharing this! You've given my MFT a new lease on life. It took me a few hours to set it up, but it was definitely worth the effort. The MFT is working perfectly. The only issue is that some of the OSC buttons don't seem to trigger any action in Bitwig. For instance, the button for "Add 1 Bar" isn't working. Do you have any idea what might be causing this?

Post Reply

Return to “Controller Scripting”