YES PLEASE !!!ST8 wrote:@hofmann2k
that is totally doable, i'll try and sort out a test script over the weekend that just pipes raw midi too and from a udp socket,
wow this would really help me out right now..
YES PLEASE !!!ST8 wrote:@hofmann2k
that is totally doable, i'll try and sort out a test script over the weekend that just pipes raw midi too and from a udp socket,
Honestly, its not for me personally. People using synths usually have CC controls for more immediate stuff. The sysex is useful for tweaking rare parameters which depending on their sound require real-time or not.ST8 wrote:Latency will be of the order of 60-100ms im afraid, the remote scripts are not designed to be strictly timed. Theres no threading (threads are killed or knocked to 60ms refresh), and no select module, so your stuck with processing incoming data in a 100ms refresh function.
I'm not sure what sysex is used for on a lot of synths and the likes, do you need strict timing? 60ms should be fine for updating displays and the likes though.
Ah. Thanks for the explanations. I'm not too worried about losing automap, I made my own. Theoretically with sample accuracy, but there's always the delay of incoming MIDI.ST8 wrote:Yer your right this applies to all midi, certainly not just to sysex, so you should be able to talk to any channel, its just a nibble on the first byte of midi data.
For receiving midi data (ie from controller -> Midi Script) there is a specific callback, but i think this is still limited to around 60ms.
I think note data is passed directly to ableton and not interfered with so timing is strict, however CCs do go into a midi remote scripts. So yes my understanding is that automapped parameters do respond on around a 60ms timescale.
PS: Also bear in mind that you'll loose any automap functions as i dont think you can map the same port to more than one midi remote script
My ProjectX example script shows how to manipulate the "red box". I use a Framework SessionComponent with mappings for left & right and up & down, and also override _on_selected_track_changed to automatically set the box focus to the currently selected track. The required code is fully commented at my site.hoffman2k wrote: As far as I am aware, there's only one mystery left in the API. The red ring and offset calls/functions. Anybody got the code for the SessionComponent? I believe that is where those functions lie.
Hi ST8 :)ST8 wrote:For receiving midi data (ie from controller -> Midi Script) there is a specific callback, but i think this is still limited to around 60ms.
I think note data is passed directly to ableton and not interfered with so timing is strict, however CCs do go into a midi remote scripts. So yes my understanding is that automapped parameters do respond on around a 60ms timescale.
Code: Select all
def refresh_state(self):
ControlSurface.refresh_state(self)
self.schedule_message(5, self._update_hardware)
Code: Select all
def schedule_message(self, delay_in_ticks, callback, parameter = None):
""" Schedule a callback to be called after a specified time """
assert (delay_in_ticks > 0)
assert (callback != None)
assert (dir(callback).count('im_func') is 1)
self._scheduled_messages.append({'Message': callback,
'Delay': delay_in_ticks,
'Parameter': parameter})
SweetST8 wrote:Ok heres an initial draft, not tested it fully. This listens on port 5000 for raw midi data. udpsend send 12 134 151 etc in pure data (i think its the same in maxmsp?). It'll also return any ccs from your controller on port 5001 if set to receive midi too.
http://monome.q3f.org/changeset/latest/ ... format=zip
Drop the sysex folder into your MIDI Remote Scripts folder
on mac: /Live x.x.x/Live.app/Contents/App-Resources/MIDI Remote Scripts
on win: c:\progs\ableton\live x.x.x\Resources\MIDI Remote Scripts
You'll also probably need python 2.5.1 installed. If you're on osx 10.5.8 its already installed, if you're on 10.6 you need to install.
If you send a message of length 5 bytes starting with a 0, it'll update the selected region in live.
ie udpsend 0 0 0 3 4 = x offset, y offset, width, height