TDAbleton - TouchDesigner Ableton Connection

I will look into that possibility and also why those OSC nodes are taking so much time!

Have you found a solution for the cooking issue.
Alternatively, I was wondering if an OSC patterns list was available so we could bypass TDAbleton on TD’s side and output directly in a oscCHOP?

@barouet A couple things coming in the new version (1.21.0). Send Only mode on each component turns off incoming osc completely. Also, turning off Timeslice mode will make osc only cook when values are coming in. Hopefully this will help you.

There is no way to bypass TDAbleton completely, because it is the mechanism by which requests are made to Live for osc data. However, if you find ways to make the components more efficient, do let me know!

Great, thanks! Send Only mode should fix most of my worries concerning performances.

If you want maximum speed from TD to Live, definitely use the rack components and the mapper component.

Howdy,

I’m trying to debug an error i’m having with receiving the midiclip info from
ableton … .the text port says: (below)

Basically the midi clip info isn’t making in to touch…

any thooughts / tricks / clues on sorting this ?

Thanks!

[info]
TDableton: 1.20
TD: 18580

It looks like you’re trying to ask info about a MIDI pitch range that Live doesn’t like. What are your MIDI range parameter settings for the clip slot component? You can send your set and toe if you like. ivan@derivative.ca

Hi there, don’t mean to fill up the thread asking about connection issues, but this one is really driving me nuts!

Short version: Connects on laptop, not on desktop.

  • Used the same (latest) installation file for TouchDesigner on both
  • Same installation of Live Suite 10.1.0 on both
  • Latest Win10 64 on both
  • Followed installation instructions correctly on both
  • Laptop connection between TD and Ableton is virtually bulletproof on default settings, open one, then the other and they instantly see one another and I get the prompt to add a Master.
  • Desktop connection is non-existent or just confusing. The closest I’ve got is: On the default settings it sometimes shows in Ableton as being connected (yellow light) if I manually add a TDA_Master to the Master track, but will then not be connected at the TD end. Never been prompted to add master by TD on desktop. Attempted with a myriad of random port numbers. Attempted after multiple restarts. Attempted with other USB control surfaces unplugged (Push 1, MPK Mini Mk2, two random old casio keyboards through MIDI to USB adapters) and/or disabled in Live’s preferences to leave TouchDesigner as the only control surface. Cannot ping from TD, nor use any controls. Textport output is as follows:

[code]python >>>
/project1/tdAbletonPackage/tdAbleton : Requesting connection to Ableton Live.
python >>>

TDA Remote Script Error

Traceback (most recent call last):
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\Python/lib\SocketServer.py”, line 290, in _handle_request_noblock
self.process_request(request, client_address)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\Python/lib\SocketServer.py”, line 318, in process_request
self.finish_request(request, client_address)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\Python/lib\SocketServer.py”, line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\Python/lib\SocketServer.py”, line 652, in init
self.handle()
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py”, line 1797, in handle
self._unbundle(decoded)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py”, line 1779, in _unbundle
self.replies += self.server.dispatchMessage(decoded[0], decoded[1][1:], decoded[2:], self.client_address)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py”, line 1741, in dispatchMessage
reply = self.callbacks[addr](pattern, tags, data, client_address)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 332, in onMsgCommand
self.sendConnectInfo(client)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 437, in sendConnectInfo
self.sendSongInfo(client)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 487, in sendSongInfo
‘tracks[’ + str(tIndex) +’]’)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 571, in getTrackOrChainInfo
devices[key][‘chains’] = self.getChainsInfo(device)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 590, in getChainsInfo
chain.name, ‘chains[’ + str(cIndex) + ‘]’)
File “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py”, line 557, in getTrackOrChainInfo
if device.parameters[1].name == ‘ID_TDA_Ignore’:
IndexError: Index out of range

End TDA Remote Script Error

python >>> [/code]

Not sure what else to try!

The laptop connection is great, and am having lots of fun playing with this tool, but wondered if you could offer any advice? My laptop’s CPU load is pretty high with an Ableton set going at the same time as, say, pretty particles, so I’d love to play with it on the desktop.

P.S. I’ve seen people using this at the same time as Push so presumably the control surface clash thing is resolvable/a non-issue?

Thanks in advance for any advice you can offer.

Have you tried changing the port? There may be something on desktop already using the default one

@hendo433

Actually, looking at that error message again I see what might be the problem. Question… are you using the same Live Set in both situations? I’d like to see the live set you’re using that’s causing that error message. It seems like maybe you’re using a Max device with no parameters? Is that possible?

Hello,
i got this msg in textport
TDA Remote Script Error #
Traceback (most recent call last):
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/Python/lib/SocketServer.py”, line 290, in _handle_request_noblock
self.process_request(request, client_address)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/Python/lib/SocketServer.py”, line 318, in process_request
self.finish_request(request, client_address)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/Python/lib/SocketServer.py”, line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/Python/lib/SocketServer.py”, line 652, in init
self.handle()
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/OSC.py”, line 1797, in handle
self._unbundle(decoded)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/OSC.py”, line 1779, in _unbundle
self.replies += self.server.dispatchMessage(decoded[0], decoded[1][1:], decoded[2:], self.client_address)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/OSC.py”, line 1741, in dispatchMessage
reply = self.callbacks[addr](pattern, tags, data, client_address)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/TDA.py”, line 332, in onMsgCommand
self.sendConnectInfo(client)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/TDA.py”, line 425, in sendConnectInfo
self.sendSongInfo(client)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/TDA.py”, line 494, in sendSongInfo
self.send(client, chunk, ‘/info/songDump/chunk’)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/TDA.py”, line 264, in send
client.send(message)
File “/Applications/Ableton Live 9 Suite.app/Contents/App-Resources/MIDI Remote Scripts/TouchDesigner/OSC.py”, line 1226, in send
raise OSCClientError(“while sending: %s” % str(e))
OSCClientError: while sending: [Errno 55] No buffer space available

End TDA Remote Script Error

ªnyone got this issue before?

@zzz28

Never seen that one. I did a search on “errno 55 no buffer space available” and found some info. It’s some sort of networking error on your machine. I’m guessing your setup has some buffer size limit or something maybe? If you do some searching maybe you’ll find a solution… the udp server networking part is pretty invisible and tricky to debug. Please post again if you figure out what’s going on!

Wow - strange! Indeed, my default Ableton set on my desktop has an instance of the Lounge Lizard EP-4 plugin I use for quickly jotting down ideas on a Rhodes-style instrument. As soon as I deleted that channel, it immediately prompted me to add a TDA_Master!

I hadn’t even clocked that that could be an issue, so thanks for the guidance. When I first read your post, I thought that there might be a conflict with some Max device as you mentioned, but removing the Lounge Lizard VST channel seemed to sort it! Luckily, I have plenty of Rhodes-style VSTs…

Thanks for your response!+

Ha! That’s my bad. Never expected a device with zero parameters! I’ll fix that in future versions. Glad I could help.

Yo Ivan!

I’m hoping to find a way to dynamically rename / label the macro knobs in the TDA_MIDI_Effect_Rack, or any device really.

The idea is to take any tox with up to 8 customPar floats with descriptive parLabels, and I add my new tox as a child and have it automatically create a matching TDA_MIDI_Effect_Rack in a given track in my live set, and set the macro knob labels to match the custom parameter labels of the parent tox.

I’ve got it all working except for the dynamic labels. Changing the label in Ableton is visible immediately in Touch of course, but it looks like it’s not actually possible to set those names through the LOM from Touch. Here’s my console output:

SONG.tracks[0].devices[0].parameters[6]
<DeviceParameter.DeviceParameter object at 0x000000004BE974C8>

SONG.tracks[0].devices[0].parameters[6].name
u’Macro6’

SONG.tracks[0].devices[0].parameters[6].name = ‘weeee’
Traceback (most recent call last):
File “”, line 1, in
AttributeError: can’t set attribute

A quick look at the LOM reference confirmed that this property is read only. Some googling gave me hope that it might be possible to do this from inside the max4live device with something like the examples given here: https://cycling74.com/forums/renaming-a-live-dial

I would try editing the TDA_MIDI_Effect_Rack max patch but I’m a complete max noob and don’t even know where to look.

Do you know if it’s possible to set the macro knob labels from Touch?

Cheers mate!

On a related note, I discovered that renaming your macro knobs to something that contains a space had the unexpected effect of truncating the OSC channel received in touch at the first space character. The OSC message monitor in the Max device would read:

/rack/t0/my_device_name/nice macro

but the channel in the OSCinCHOP on the touch side would be:

rack/t0/my_device_name/nice

I’m completely new to max so I’m sure they way I’ve hacked this in is not the best solution, but just in case it is useful to someone, I’ve attached my version of TDA_Rack_MIDI_OSC.amxd - it now converts the macro knob label to lowercase and replaces spaces with underscores before appending it to the OSC path.

TDA_Rack_MIDI_OSC.zip (9.2 KB)

@mynameiscorey interesting! I will dig in tomorrow and investigate sending names. Also will check out your Max device. Thanks!

Hey there,

I just discovered TD and TDAbleton and it’s my favorite new toy already, so thanks heaps for that :heart_eyes:

I just wanted to report a few issues I had before I could get properly started, in the hopes it might be useful to anyone encountering the same problems. Sorry if these have been reported before, I did a quick search but couldn’t find them.

  1. TDAbleton won’t connect when it encounters some particular devices on some tracks, e.g. disabled (unavailable) M4L patches, and some Native Istruments VSTs in some circumstances (I had the issue with Battery 4, and Massive on some tracks - but not when it’s in a rack, weirdly). In these cases the following error appears in the Textport :

# TDA Remote Script Error #

 Traceback (most recent call last):
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 290, in _handle_request_noblock
	    self.process_request(request, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 318, in process_request
	    self.finish_request(request, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 331, in finish_request
	    self.RequestHandlerClass(request, client_address, self)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 652, in __init__
	    self.handle()
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1797, in handle
	    self._unbundle(decoded)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1779, in _unbundle
	    self.replies += self.server.dispatchMessage(decoded[0], decoded[1][1:], decoded[2:], self.client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1741, in dispatchMessage
	    reply = self.callbacks[addr](pattern, tags, data, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py", line 332, in onMsgCommand
	    self.sendConnectInfo(client)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py", line 437, in sendConnectInfo
	    self.sendSongInfo(client)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py", line 487, in sendSongInfo
	    'tracks[' + str(tIndex) +']')
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py", line 557, in getTrackOrChainInfo
	    if device.parameters[1].name == 'ID_TDA_Ignore':
	IndexError: Index out of range 

# End TDA Remote Script Error #

I was able to figure out what tracks were causing the issue by adding some logging commands to TDA.py, but it’s been tedious :sweat_smile:

  1. When I was able to bounce/remove the offending devices, the auto-renaming process for devices with duplicate names failed when it encountered tracks with duplicate names (yes, my project was messy). In that case the errors in the textport were :

# TDA Remote Script Error #

 Traceback (most recent call last):
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 290, in _handle_request_noblock
	    self.process_request(request, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 318, in process_request
	    self.finish_request(request, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 331, in finish_request
	    self.RequestHandlerClass(request, client_address, self)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\Python\lib\SocketServer.py", line 652, in __init__
	    self.handle()
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1797, in handle
	    self._unbundle(decoded)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1779, in _unbundle
	    self.replies += self.server.dispatchMessage(decoded[0], decoded[1][1:], decoded[2:], self.client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\OSC.py", line 1741, in dispatchMessage
	    reply = self.callbacks[addr](pattern, tags, data, client_address)
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\TDA.py", line 310, in onMsgListener
	    msg[4] if len(msg) > 4 else '')
	  File "C:\ProgramData\Ableton\Live 9 Suite\Resources\MIDI Remote Scripts\TouchDesigner\Listeners.py", line 70, in add
	    exec(fullCode, context)
	  File "<string>", line 3, in <module>
	AttributeError: 'Track' object has no attribute 'add_value_listener' 

# End TDA Remote Script Error #

python >>> 
Traceback (most recent call last):
  File "/sys/TDResources/popDialog/button2/panelexec1", line 14, in onToOff
  File "/sys/TDResources/popDialog/PopDialogExt", line 160, in OnButtonClicked
  File "/sys/TDResources/popDialog/CallbacksExt", line 186, in DoCallback
  File "/project1/tdAbletonPackage/tdAbleton/TDAbletonExt", line 670, in onDuplicateNamesPopup
  File "/project1/tdAbletonPackage/tdAbleton/TDAbletonExt", line 690, in autoFixDuplicateNames
TypeError: 'NoneType' object is not subscriptable

Fortunately that was easy to fix, I just renamed the tracks manually.
Anyway, now I’m all set and and ready to mess around with TDAbleton, thanks again for this incredible tool!

@themushroomsound I probably should have posted about these known issues. Will be fixed in upcoming versions.

1 Like

@mynameiscorey Checked out your changes to the rackMacroKnob and they look good. I’ll incorporate those into a future release. Thanks!

I also dove in again and tried to figure out a way to change names of macro knobs programatically. I couldn’t figure out a way, once again, but in case you want to keep trying, here’s some info…

The link you sent doesn’t help because those are Max objects. The Rack is a builtin Ableton object, so doesn’t have those attributes to change. The only way I know of to get at the Rack is through the LOM. Accessing LOM via Max is still very mysterious to me, but maybe there is a way to write those macro names in there that I haven’t discovered.

As far as experimenting with the LOM Rack through Python, it’s pretty easy. Attach a Live session to TDAbleton, make a new track at the top of Live, add a Rack, then use the TDAbleton Console (open from tdAbleton master component) to look at “SONG.tracks[0].devices[0]”. If you look at parameters 1-8 on that object, you can see the macro knobs’ names and values and stuff, but apparently no way to change names.

If you can figure this out I’ll add the feature to TDA and owe you a celebratory beer!