<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.18.1">
</HEAD>
<BODY>
Dude I sent you this info already ... its called <A HREF="http://pywinauto.openqa.org/">pywinauto</A>, a Python automation suite for controlling Windows apps.&nbsp; You can send key and mouse events such as opening a file dialog, &quot;typing in the filename&quot;, and hitting enter.&nbsp; There are plenty of straightforward info in the documentation.<BR>
<BR>
I paired that with the aforementioned ixi software's <A HREF="http://pypi.python.org/pypi/SimpleOSC/0.2.3">simpleOSC library.</A>&nbsp; There are examples around.<BR>
<BR>
Once again. if you want a specific example, <A HREF="http://www.robotcowboy.com/projects/f2006/robotcowboy_v2/robotcowboy_button_box%200.1.zip">download the zip</A> on <A HREF="http://www.robotcowboy.com/?p=60">this page of my website</A> where I use PD to send and receive control signals to Python/pywinauto over OSC to control FLStudio.<BR>
<BR>
I know you a &quot;newb&quot; and all, but that dosen't mean you can't get your hands dirty and learn a bit.&nbsp; When I first put that all together I did not understand OSC and had never used Python or automation software before.<BR>
<BR>
On Tue, 2008-05-06 at 22:54 -0400, Hugh Sung wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    We're having a neat discussion about this in the Pure Data forum now:<BR>
    <A HREF="http://puredata.hurleur.com/sujet-1686-fiddle-piano">http://puredata.hurleur.com/sujet-1686-fiddle-piano</A><BR>
    <BR>
    jon2211 came up with a neat patch that demonstrates how well fiddle~ recognizes notes played on a piano within a given range, triggering a key text output.&nbsp; Another poster showed an example of modifying that to trigger with envelope/volume changes.&nbsp; Of course, we're still stuck with how to port the key stroke messages to an external application.<BR>
    <BR>
    Would someone be willing to write up a python script that can intercept Pure Data text echoes and forward them to other concurrently running applications, like PowerPoint or Word?&nbsp; This is the missing link in the puzzle - heck, i'd even be willing to pay someone if they could come up with a useful workaround!<BR>
    <BR>
    Keeping my fingers crossed...<BR>
    Many thanks as always!<BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    On Wed, Apr 30, 2008 at 6:11 AM, Olivier Heinry &lt;<A HREF="mailto:olivier@heinry.fr">olivier@heinry.fr</A>&gt; wrote:<BR>
    <BLOCKQUOTE>
        Le Tue, 29 Apr 2008 18:50:33 -0400,<BR>
        &quot;Hugh Sung&quot; &lt;<A HREF="mailto:hughsung@gmail.com">hughsung@gmail.com</A>&gt; a &#233;crit :<BR>
        <BR>
        Python might bring you the right solution:<BR>
        <BR>
        <A HREF="http://www.rutherfurd.net/python/sendkeys/">http://www.rutherfurd.net/python/sendkeys/</A><BR>
        <BR>
        You can either send your letters/keystrokes from inside pd using the pyext external that loads your python script<BR>
        <BR>
        or send messages via OSC to a python script that implements the ixi software simpleOSC lib<BR>
        <BR>
        <A HREF="http://www.ixi-software.net/content/backyard.html">http://www.ixi-software.net/content/backyard.html</A><BR>
        <BR>
        ++<BR>
        <FONT COLOR="#888888">O.</FONT>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
        &gt; Here's one scenario i'd like to see:<BR>
        &gt;<BR>
        &gt; 1. &nbsp;Pedal assigned [PgDn] keystroke within Liquid Media, which triggers<BR>
        &gt; scene change<BR>
        &gt; 2. &nbsp;PD outputs letters A-Z, depending on either volume or pitch frequency<BR>
        &gt; ranges input from audio source (microphone into acoustic piano)<BR>
        &gt; 3. &nbsp;A given scene within Liquid Media would then interpret the PD-generated<BR>
        &gt; keystrokes and trigger image events based on letter key &quot;depressed&quot; by PD.<BR>
        &gt;<BR>
        &gt; You'd have the ease of image generation (a la Powerpoint) with the speed and<BR>
        &gt; power of PD to map the sound of acoustic music. &nbsp;Just my newbie imagination<BR>
        &gt; going here.<BR>
        &gt;<BR>
        &gt; On Tue, Apr 29, 2008 at 6:46 PM, Hugh Sung &lt;<A HREF="mailto:hughsung@gmail.com">hughsung@gmail.com</A>&gt; wrote:<BR>
        &gt;<BR>
        &gt; &gt; The pedals basically operate as programmable usb keyboard extensions,<BR>
        &gt; &gt; where you can custom assign any keystroke to any pedal (up to 12). &nbsp;I'm<BR>
        &gt; &gt; hoping that by assigning a certain set of keys to the pedals and reserving<BR>
        &gt; &gt; the rest for PD to control that everything can simply work together, if PD<BR>
        &gt; &gt; can output keyboard letters/numbers. &nbsp;Everything would run from the same<BR>
        &gt; &gt; computer. &nbsp;Again, please forgive me if i sound completely ignorant regarding<BR>
        &gt; &gt; what's possible with PD...<BR>
        &gt; &gt; Many thanks again!<BR>
        &gt; &gt;<BR>
        &gt; &gt;<BR>
        &gt; &gt; On Tue, Apr 29, 2008 at 6:13 PM, Andrew Turley &lt;<A HREF="mailto:aturley@acm.org">aturley@acm.org</A>&gt; wrote:<BR>
        &gt; &gt;<BR>
        &gt; &gt; &gt; The [fiddle~] and [bonk~] objects should let you capture all of the<BR>
        &gt; &gt; &gt; information that you are looking for. As far as getting that<BR>
        &gt; &gt; &gt; information from Pd to Liquid Media, that may be the tricky part. Your<BR>
        &gt; &gt; &gt; current pedals are sending keystrokes straight to Liquid Media. Do you<BR>
        &gt; &gt; &gt; know if there is a way to control Liquid Media via MIDI messages, or<BR>
        &gt; &gt; &gt; some sort of message sent via a socket connection (maybe OSC)? If so,<BR>
        &gt; &gt; &gt; then you might be able to use Pd to capture your pedal input and then<BR>
        &gt; &gt; &gt; combine that with the information from [fiddle~] and/or [bonk~] to<BR>
        &gt; &gt; &gt; send the appropriate information to Liquid Media. If the only way to<BR>
        &gt; &gt; &gt; control Liquid Media is through keystrokes, then you might need to<BR>
        &gt; &gt; &gt; write some software that intercepts the keystrokes from the pedals and<BR>
        &gt; &gt; &gt; changes them depending on what is going on in Pd.<BR>
        &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; andy<BR>
        &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; On Tue, Apr 29, 2008 at 12:18 PM, Hugh Sung &lt;<A HREF="mailto:hughsung@gmail.com">hughsung@gmail.com</A>&gt; wrote:<BR>
        &gt; &gt; &gt; &gt; I'm using a presentation program called &quot;Liquid Media&quot;, sort of like<BR>
        &gt; &gt; &gt; &gt; Powerpoint on steroids. &nbsp;Up to this point i had been using multiple<BR>
        &gt; &gt; &gt; foot<BR>
        &gt; &gt; &gt; &gt; pedals assigned to different keystrokes to trigger visual cues, like<BR>
        &gt; &gt; &gt; video<BR>
        &gt; &gt; &gt; &gt; clips, animated GIFs and the like, during live classical music piano<BR>
        &gt; &gt; &gt; &gt; recitals.<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; I'd like to incorporate the dynamic capabilities of realtime visual<BR>
        &gt; &gt; &gt; sync,<BR>
        &gt; &gt; &gt; &gt; with the ability to easily &quot;change the scene&quot;, as it were. &nbsp;i'm hoping<BR>
        &gt; &gt; &gt; that<BR>
        &gt; &gt; &gt; &gt; someone can help me come up with a combined solution where PD acts as<BR>
        &gt; &gt; &gt; an<BR>
        &gt; &gt; &gt; &gt; audio trigger controller, triggering keystroke events based on pitch<BR>
        &gt; &gt; &gt; ranges,<BR>
        &gt; &gt; &gt; &gt; dynamic peaks and rhythmic events, and Liquid Media accepts those<BR>
        &gt; &gt; &gt; &gt; PD-generated keystrokes to trigger correlating visual cues. &nbsp;Each<BR>
        &gt; &gt; &gt; scene<BR>
        &gt; &gt; &gt; &gt; would comprise of specific trigger-able events, and the foot switch<BR>
        &gt; &gt; &gt; would<BR>
        &gt; &gt; &gt; &gt; allow for a manual &quot;change of scene&quot;. &nbsp;i'm hoping to accomplish two<BR>
        &gt; &gt; &gt; things<BR>
        &gt; &gt; &gt; &gt; with this combined approach:<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; 1. &nbsp;make it a little easier to incorporate visuals synced to audio<BR>
        &gt; &gt; &gt; events<BR>
        &gt; &gt; &gt; &gt; 2. &nbsp;allow for easy scene transitions, to better compliment the<BR>
        &gt; &gt; &gt; &quot;narrative&quot;<BR>
        &gt; &gt; &gt; &gt; structure of classical compositions<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; Hope this makes sense...thanks all for your input so far! (and<BR>
        &gt; &gt; &gt; patience!)<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; On Tue, Apr 29, 2008 at 2:45 PM, Dan Wilcox &lt;<A HREF="mailto:danomatika@gmail.com">danomatika@gmail.com</A>&gt;<BR>
        &gt; &gt; &gt; wrote:<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; As for forwarding keypresses and mouse events to an application ...<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; I have done this in Windows to control FLStudio (aka FruityLoops) by<BR>
        &gt; &gt; &gt; &gt; sending menu events and keypresses through python windows scripting,<BR>
        &gt; &gt; &gt; &gt; pywinauto, and osc in python.<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; I have info and code on my website. &nbsp;It should still work but it's a<BR>
        &gt; &gt; &gt; bit<BR>
        &gt; &gt; &gt; &gt; old (2006) and I don't use Windows anymore.<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; On Tue, 2008-04-29 at 13:05 -0400, marius schebella wrote:<BR>
        &gt; &gt; &gt; &gt; &gt; fiddle~ comes with pd (look in the &quot;extra&quot; folder), there is a help<BR>
        &gt; &gt; &gt; &gt; &gt; patch that will explain how it works.<BR>
        &gt; &gt; &gt; &gt; &gt; hope this helps.<BR>
        &gt; &gt; &gt; &gt; &gt; marius.<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; Hugh Sung wrote:<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; i'm not familiar with that program - can you provide a link to<BR>
        &gt; &gt; &gt; fiddle~,<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; or any other program that can easily do what i'm looking for with<BR>
        &gt; &gt; &gt; all<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; the various parameters?<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; Many thanks!<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; On Tue, Apr 29, 2008 at 12:50 PM, marius schebella<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; &lt;<A HREF="mailto:marius.schebella@gmail.com">marius.schebella@gmail.com</A> &lt;mailto:<A HREF="mailto:marius.schebella@gmail.com">marius.schebella@gmail.com</A>&gt;&gt;<BR>
        &gt; &gt; &gt; wrote:<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; Hugh Sung wrote:<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; Actually, this isn't for speech recognition - i'm trying to come<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; up with a simple way to use key triggers to activate visuals.<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; For example: if the piano plays A440, i'm presuming PD can be<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; configured to recognize that pitch with a microphone input and<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; then echo out a text string - the letter &quot;A&quot;, perhaps.<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; in that case, you best use fiddle~. what's the other program? does<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; it accept network communication? then you can send the letters<BR>
        &gt; &gt; &gt; over<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; tcp or udp connection (netsend).<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; marius.<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; --<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; Hugh Sung<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; <A HREF="http://www.hughsung.com">www.hughsung.com</A> &lt;<A HREF="http://www.hughsung.com">http://www.hughsung.com</A>&gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; <A HREF="http://www.TabletPCMusician.com">www.TabletPCMusician.com</A> &lt;<A HREF="http://www.TabletPCMusician.com">http://www.TabletPCMusician.com</A>&gt;<BR>
        &gt; &gt; &gt; &gt; &gt; &gt; <A HREF="http://www.musicmeetstech.com">www.musicmeetstech.com</A> &lt;<A HREF="http://www.musicmeetstech.com">http://www.musicmeetstech.com</A>&gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; &gt; ---<BR>
        &gt; &gt; &gt; &gt; &gt; Dan Wilcox<BR>
        &gt; &gt; &gt; &gt; &gt; <A HREF="http://robotcowboy.com">robotcowboy.com</A><BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; --<BR>
        &gt; &gt; &gt; &gt; Hugh Sung<BR>
        &gt; &gt; &gt; &gt; <A HREF="http://www.hughsung.com">www.hughsung.com</A><BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt; <A HREF="http://www.TabletPCMusician.com">www.TabletPCMusician.com</A><BR>
        &gt; &gt; &gt; &gt; <A HREF="http://www.musicmeetstech.com">www.musicmeetstech.com</A><BR>
        &gt; &gt; &gt; &gt; _______________________________________________<BR>
        &gt; &gt; &gt; &gt; &nbsp;<A HREF="mailto:PD-list@iem.at">PD-list@iem.at</A> mailing list<BR>
        &gt; &gt; &gt; &gt; &nbsp;UNSUBSCRIBE and account-management -&gt;<BR>
        &gt; &gt; &gt; &gt; <A HREF="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</A><BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; &gt;<BR>
        &gt; &gt; &gt;<BR>
        &gt; &gt; &gt; _______________________________________________<BR>
        &gt; &gt; &gt; <A HREF="mailto:PD-list@iem.at">PD-list@iem.at</A> mailing list<BR>
        &gt; &gt; &gt; UNSUBSCRIBE and account-management -&gt;<BR>
        &gt; &gt; &gt; <A HREF="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</A><BR>
        &gt; &gt; &gt;<BR>
        &gt; &gt;<BR>
        &gt; &gt;<BR>
        &gt; &gt;<BR>
        &gt; &gt; --<BR>
        &gt; &gt; Hugh Sung<BR>
        &gt; &gt; <A HREF="http://www.hughsung.com">www.hughsung.com</A><BR>
        &gt; &gt; <A HREF="http://www.TabletPCMusician.com">www.TabletPCMusician.com</A><BR>
        &gt; &gt; <A HREF="http://www.musicmeetstech.com">www.musicmeetstech.com</A><BR>
        &gt; &gt;<BR>
        &gt;<BR>
        &gt;<BR>
        &gt;<BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
    <BR>
    -- <BR>
    Hugh Sung<BR>
    <A HREF="http://www.hughsung.com">www.hughsung.com</A><BR>
    <A HREF="http://www.TabletPCMusician.com">www.TabletPCMusician.com</A><BR>
    <A HREF="http://www.musicmeetstech.com">www.musicmeetstech.com</A><BR>
</BLOCKQUOTE>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
---<BR>
Dan Wilcox<BR>
<A HREF="http://www.robotcowboy.com">robotcowboy.com</A>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>