Sending keystrokes to another app


    Mar 21 2006 | 11:19 am
    Hi all.
    I'm looking to create a patch that takes midi input and converts it to keyboard shortcuts in order to control Pro Tools. Essentially, I would like to know if it is possible for Max to emulate typing to another app, kinda like the key object in reverse.
    Thanks a lot,
    Simon

    • Mar 21 2006 | 12:04 pm
      i'm pretty sure this would be impossible... but I've been surprised before.....
    • Mar 21 2006 | 12:23 pm
      Check if the aevent object is available for the version of Max you're
      working with. David Zicarelli wrote it ages ago, but IMS it was
      unsupported, so no guarantees.
      If you do have it, you will still have to do some fairly low-level
      work at the receiving end.
      Finally, this all assumes you're on Mac OS. You don't say.
      The short answer: can be done, but no one said it would be easy.
      -- Peter
      -------------- http://www.bek.no/~pcastine/Litter/ -------------
      Peter Castine | +--> Litter Power & Litter Bundle for Jitter
      |....................................................
      p@castine.de | iCE: Sequencing, Recording, and Interface Building
      pcastine@gmx.net | for Max/MSP
      pcastine@bek.no | http://www.dspaudio.com/ Extremely cool
      4-15@kagi.com |....................................................
      | home|chez nous|wir|i nostri http://www.castine.de/
    • Mar 21 2006 | 2:30 pm
      how about using apple script? you could send apple script messages to pro
      tools...
      just an idea, never tried it.
      good luck,
      jens
      jens doering:::::::::: http://www.jensdoering.com/:::::
      2av - media art::::: http://www.2av.de/ :::::::::::::::::::
      jerry lusion:::::::::::: http://www.jerry-lusion.com/::::::
      e.stonji:::::::::::::::::: http://www.estonji.com/:::::::::::::
      hp.stonji:::::::::::::::: http://hpstonji.estonji.com/::::::::
      e:gum:::::::::::::::::::: http://www.egum.net/::::::::::::::::
    • Mar 22 2006 | 8:59 am
    • Mar 22 2006 | 10:36 am
      I don't know if thats possible, maybe some java library?
      But for ProTools, what do you want to control which is not controlable
      via Midi? I never had problems to communicate the essential needs to
      ProTools.
      All start/stop/continue/record and location is possible with MMC (Midi
      Machine Control)
      Stefan
      --
      [][] [][][] [][] [][][]
      [][][][][][][][][][][][][][][]
      Stefan Tiedje
      Klanggestalter
      Electronic Composition
      &
      Improvisation
      /~~~~~
      \ /|() ()|
      ))))) )| | |( \
      /// _/)/ )))))
      ___/ ///
      -------------------------x----
      --_____-----------|-----------
      --(_|_ ----|-----|-----()----
      -- _|_)----|-----()-----------
      ----------()------------x-----
      14, Av. Pr. Franklin Roosevelt,
      94320 Thiais, France
      Phone at CCMIX +33-1-57 42 91 09
    • Mar 22 2006 | 9:47 pm
      I wouldn't mess around trying to do this in Max. It can be done on
      the Mac via the shell object, a lot ot escaping, and osascript, but
      it's finicky, clunky and slow.
      I think the old AEvents object was (and is?) OS 9 only.
      On the Mac, MIDIPipe (google it) can be used to script, or send
      keystrokes to, any app via AppleScript. To send keystrokes for
      non-scriptable apps, a MIDIPipe AppleScript Trigger tool looks like
      this:
      on runme(message)
      if (item 1 of message = 144) then -- note channel 1
      if (item 2 of message = 127) and (item 3 of message = 0)
      then -- note 127 velocity 0
      tell application "Logic Pro" to activate -- app must
      be in foreground to receive keystrokes
      tell application "System Events"
      tell process "Logic Pro" -- process name as per
      Activity Monitor
      keystroke "n" using {command down, option down}
      keystroke "x"
      -- etc
      end tell
      end tell
      end if
      end if
      end runme
      --
      John Pitcairn
      ------------------------------------------------------------ --------------
      Revolver Design | Opus Locus | Auckland, New Zealand
      ------------------------------------------------------------ --------------
    • Mar 23 2006 | 12:57 pm
      On 22-Mar-2006, at 22:47, John Pitcairn wrote:
      > I think the old AEvents object was (and is?) OS 9 only.
      What if the original query *is* about OS 9? Or even OS 8? Or, for
      that matter, System 7?
      Simon has never even said whether he's working on XP or Mac, so all
      suggestions are being made in a vacuum.
      You're right that aesend and aereceive have probably never been
      Carbonized, but the hardest part would probably be finding the old
      source code. The next hardest part is probably adapting to changes in
      the Max API. IMS, The actual AppleEvent stuff is essentially
      unchanged for Carbon.
      Cocoa might be a little more effort.
      Cheers,
      Peter
      -------------- http://www.bek.no/~pcastine/Litter/ -------------
      Peter Castine | +--> Litter Power & Litter Bundle for Jitter
      |....................................................
      p@castine.de | iCE: Sequencing, Recording, and Interface Building
      pcastine@gmx.net | for Max/MSP
      pcastine@bek.no | http://www.dspaudio.com/ Extremely cool
      4-15@kagi.com |....................................................
      | home|chez nous|wir|i nostri http://www.castine.de/
    • Mar 23 2006 | 11:29 pm
      you can do this without max on XP using
      on MacOS X you can send system events to other apps (including
      keystrokes)
      using applescript. so you have two options
      - have max listen to MIDI and talk to applescript
      - have applescript listen to incoming MIDI events
      the first one can be done with the tap.applescript object.
      I do not now of an applescript extension that listens to MIDI
      HtH
      -jennek