Controlling Yamaha TF consoles

1,446 views
Skip to first unread message

micpool

unread,
Mar 26, 2024, 11:30:45 AM3/26/24
to QLab
Hi

I recently tried to control a Yamaha TF rack console using the  methods described in the Yamaha University  document 

QLab Setup Guide for CL/QL/TF Series


and failed to get anything to work. The problem seemed to be that none of the Python scripts were recognised. It almost looked like Python was not available on the computer I was using.

I found a workaround using the TF mixer module in Bitfocus Companion which seems to work very well and is actually far easier for scene recall as it doesn't require a seperate script for every scene. , but would be interested to know if anyone has the method in the  Yamaha University document working on a recent OS with a recent version of QLab 4 or 5.

Thanks

Mic


Rich Walsh

unread,
Mar 26, 2024, 11:42:37 AM3/26/24
to ql...@googlegroups.com
Python doesn’t come with the macOS any more, see for example: https://www.macrumors.com/2022/01/28/apple-removing-python-2-in-macos-12-3/.

Run "python —version” in Terminal and you’ll see it’s not there…

Rich

micpool

unread,
Mar 26, 2024, 11:58:42 AM3/26/24
to QLab
Hi Rich

That was the conclusion I came to, 

Does that mean that the Yamaha document is now obsolete? Perhaps they should remove it or add a note so that users don't waste hours trying to get it to work? Or is there an easy way to install a compatible version of Python?

I wonder how the companion module is communicating with the TF?

Mic

Chris Ashworth

unread,
Mar 26, 2024, 12:04:04 PM3/26/24
to micpool, ql...@googlegroups.com
Side-note: 

Considering that it took Yamaha (if I recall correctly) more than a year to publish the scripts after their engineers first wrote them (involving many managers, many lawyers, and mailing me a thick folder full of legal papers), I would not hold my breath about them updating it or un-publishing it...

micpool

unread,
Mar 26, 2024, 12:15:20 PM3/26/24
to QLab
Why they dropped MIDI control  from the TF's without a practical alternative really is beyond understanding. The TF Rack has a great form factor and iPad control  for touring small plays but getting it to play with QLab is a complete pain in the butt.

The ease with which you can completely erase all a  TF's programming  by pressing the Connect button on  an editor running on an iPad or computer and missing that the Data Sync is set to PC to TF rack by default the first time you run it is also hilarious, but not in a good way!

Mic

Rich Walsh

unread,
Mar 26, 2024, 12:20:21 PM3/26/24
to ql...@googlegroups.com
I think there’s an installer? https://www.python.org/downloads/release/python-3122/


From a very quick skim of https://github.com/BrenekH/yamaha-rcp-docs?tab=readme-ov-file found via https://bitfocus.io/connections I’d say it looks like Python is only doing the heavy lifting of sending some TCP text strings to a network socket? I’m just guessing though, but if I’m right could you just send plain text TCP from QLab 5?

Rich

micpool

unread,
Mar 26, 2024, 12:30:33 PM3/26/24
to QLab
On Tuesday, March 26, 2024 at 4:20:21 PM UTC Rich Walsh wrote:

From a very quick skim of https://github.com/BrenekH/yamaha-rcp-docs?tab=readme-ov-file found via https://bitfocus.io/connections I’d say it looks like Python is only doing the heavy lifting of sending some TCP text strings to a network socket? I’m just guessing though, but if I’m right could you just send plain text TCP from QLab 5?

It certainly looks possible. Unfortunately, I don't have a TF to try it, apart from the one I hired that is whizzing around the country. (And that show is on QLab 4 so no TCP).

Mic

Richard Williamson

unread,
Mar 26, 2024, 12:59:58 PM3/26/24
to QLab
I've managed to send the same commands without python thanks to some help from Gareth Fry - the below apple script worked for and MRX-7 scene recall - and I think the TF uses the same protocol

Note that the line break after “run mode" is important - without it it doesn’t work

set sceneToRecall to 1
do shell script "echo 'devstatus runmode
ssrecall " & sceneToRecall & "' | nc -w 1500 10.1.20.34 49280"

Richard

--
--
Contact support anytime: sup...@figure53.com
Follow QLab on Threads: https://threads.net/@QLabApp
User Group Code of Conduct: https://qlab.app/code-of-conduct/
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qlab/f813f36d-c3ff-4f1b-b67f-926b7598105dn%40googlegroups.com.

micpool

unread,
Mar 26, 2024, 3:34:54 PM3/26/24
to QLab

Thanks Richard.

The only thing I’m not understanding is the large value (1500)  after the -w.  


Mic

Richard Williamson

unread,
Mar 26, 2024, 7:15:18 PM3/26/24
to ql...@googlegroups.com
To be honest I was trying to make it work in the middle of the night so it’s possible I messed around - I’m not sure whether that timeout is ms or seconds but I suspect it could be experimented with 

Richard 

Sent from my iPhone

On 26 Mar 2024, at 19:34, micpool <m...@micpool.com> wrote:



Rich Walsh

unread,
Mar 26, 2024, 7:36:36 PM3/26/24
to ql...@googlegroups.com
It might come from the Yamaha Python code for scene recall (recall_a.py):

import sys
import socket

host ="192.168.0.128"
port =49280

args = sys.argv
no = int(args[1])

# connect socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((host,port))

# Recalls a scene
command = ("ssrecall_ex scene_a " + str(no) + "\n").encode()
s.sendall(command)

# receive a message before closing socket
s.recv(1500)

# Closes socket
s.close ()

You might think s.recv(1500) is a timeout, but it’s actually a buffer size: https://docs.python.org/3/library/socket.html#:~:text=socket.recv(bufsize%5B%2C%20flags%5D). 5 would be a better setting for nc timeout.

You should be able to use “\\n” inside an AS text string for echo to achieve the line break without having an actual line break in the script. 

I think the protocol might be slightly different for MTX, etc: “ssrecall” vs “ssrecall_ex”; I also suspect the devstatus line isn’t going to be necessary for the TF series. Interpolating from what the Python feels like it’s doing, something like this should work?

set sceneToRecall to 1

do shell script "echo 'ssrecall_ex scene_a " & sceneToRecall & "\\n' | nc -w 5 192.168.0.128 49280"


Rich

On 26 Mar 2024, at 19:34, micpool <m...@micpool.com> wrote:

gcooke

unread,
Mar 27, 2024, 11:09:30 AM3/27/24
to QLab
Apologies if this is tangential or not exactly related:

I am wondering if there is a Qlab script for the CL5/3/1 User Defined Key function: Scene-INC RECALL(recalls the scene of the next existing number).

We use this function constantly on our CL3 to quickly recall mic mutes with one "keystroke" in a theatre production.

It would be GREAT if there was a INC RECALL script assigned to a hotkey in Qlab so that scenes could be quickly recalled remotely.

I thought about using the Python scripts, but then shied away, both due the Mic's posts in this thread and that we would have to recall specific scene #'s.

Thanks!
-George

Rich Walsh

unread,
Mar 27, 2024, 11:59:45 AM3/27/24
to ql...@googlegroups.com
It’s hard to be sure without a console to hand – only so much you can do in the offline editor – but I would say that:

  • MIDI can only be used to recall specific scenes via Program Change; control change (including NRPN) can’t be assigned to any scene recall functions
  • There is no SysEx command for INC RECALL
  • User defined buttons can not be triggered by MIDI
  • There is no TCP command for INC RECALL documented anywhere Google knows about

There are 3 options:

  1. Try to capture what is sent between CL Editor and the console when you press the INC RECALL button (I’m assuming it has one: I only have QL Editor installed, and can’t go online to a console to try this at the moment)
  2. Construct an elaborate script that increments a MIDI Program Change cue each time it's sent, storing a best guess at the last scene recalled on the console – but that could rapidly go wrong
  3. Use the GPI on the console to achieve INC RECALL, and a MIDI to GPO box to generate the contact closure – or OSC and https://www.nemesis-research.com/osca-o4

Rich

micpool

unread,
Mar 27, 2024, 12:12:24 PM3/27/24
to QLab
You can do this from Bitfocus  Companion easily. by programming a button on the emulator to execute the action yamaha-rcp: Scene/RecallInc in the Yamaha RCP/CL/QL Connection Library and sending OSC from QLab to Companion to press that button. (Well, easily if you know how to use Companion and control it with QLab)

From the other posts in this thread, you can see that the general consensus is that anything you can do via Companion,  you should be able to do in QLab 5 directly from a script using TCP.  If any of us  had a CL  to hand one of us  could probably work out a definitive way to do this in an hour or so.

Of course, most functions of a CL/QL can be controlled directly and simply through MIDI using either the table which maps CCs to Yamaha functions or the slightly more complex NRPN method, but I can't see either the Assignable Buttons or Scee Increment/Decrement in the list of parameters that can be controlled in this way (unless it's an option in the Sc Recall Mapping Page, which again I would need a CL in front of me to check).

I assume the reason you don't want to recall specific scene numbers is because you are inserting scenes as and when required changing all the subsequent numbers when you do. 

You can make a Scene Increment button in QLab  like this:


ScInc.jpg

Workspace and screen recording attached

Scene Inc.qlab5
QLab Sc Inc Button.mov

Rich Walsh

unread,
Mar 27, 2024, 7:43:15 PM3/27/24
to ql...@googlegroups.com
I had another go at Google and refound https://github.com/bitfocus/companion-module-yamaha-rcp/blob/master/CLQL%20Parameters-1.txt. I think this should work:

do shell script "echo 'MIXER:Lib/Scene/RecallInc \\n' | nc -w 5 192.168.0.128 49280"


I’ll try it myself next time I’m near a console.

The form "MIXER:Lib/Scene/RecallInc” also appears in the DM7 OSC protocol, which seems promising.

Rich

gcooke

unread,
Mar 28, 2024, 5:17:13 AM3/28/24
to QLab
Thank you!  I may be able to try this today.

I also played around with Companion so that's an option.

-George

micpool

unread,
Mar 28, 2024, 5:27:18 AM3/28/24
to QLab

Regardless of what methods are used to control Yamaha Consoles that lack a MIDI or OSC protocol, there is no  easy way to do a simple single parameter change from 1 value to another over time.

This is like going back to the stone age.

What were Yamaha thinking?

Mic

Sam Kusnetz

unread,
Mar 28, 2024, 10:00:57 AM3/28/24
to ql...@googlegroups.com
On Mar 28, 2024 at 5:27:18 AM, micpool <m...@micpool.com> wrote:
What were Yamaha thinking?

While the QL series of consoles is a genuine lower cost alternative to the CL series, the TF series is really a very different animal, and feels like Yamaha tried to keep it as far downmarket as possible. I don’t really consider them an option for any kind of detailed work.

Yamaha has always been a little unusual about remote control, though, right? The time spent arguing with a DM1000 about MIDI ports is time I’ll never get back...

sk

Sam Kusnetz (he/him) | Figure 53


Ivan Birthistle

unread,
Mar 29, 2024, 9:08:42 AM3/29/24
to ql...@googlegroups.com
Hi Mic,

I have a couple of TF1 consoles here if you want me to try anything for you.

Ivan

--
Contact support anytime: sup...@figure53.com
Follow QLab on Threads: https://threads.net/@QLabApp
User Group Code of Conduct: https://qlab.app/code-of-conduct/
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qlab/f813f36d-c3ff-4f1b-b67f-926b7598105dn%40googlegroups.com.


--
Ivan Birthistle
Head of Sound
The Lir,
Pearse St.,
Dublin 2

(01)8964536
087 6699192

www.thelir.ie

Registered Charity Number: 20076689

Rich Walsh

unread,
Apr 15, 2024, 2:14:22 PM4/15/24
to ql...@googlegroups.com
Spent a small amount of time with a QL1 today. This works:

do shell script "echo 'ssrecall_ex MIXER:Lib/Scene 99 \\n' | nc -w 5 192.168.1.12 49280"


This does not:

do shell script "echo 'MIXER:Lib/Scene/RecallInc \\n' | nc -w 5 192.168.1.12 49280"


I can’t find a form that will do RecallInc…

I wasn’t able to Wireshark what’s going on between QL Editor and the console today, but I don’t think it’s SysEx-in-disguise like it was with an 01V.

Rich
Reply all
Reply to author
Forward
0 new messages