通过处理应用程序在finder中轮询选择

时间:2018-12-29 17:02:26

标签: applescript processing daemon finder

我正在为演示文稿制作一个简单的处理应用程序,该演示文稿当前正在做一件事:它监听麦克风并在听到声音时模拟向右箭头按下事件。我使用它来将a synth与OSX finder进行同步,因此,当我播放音乐时,它会遍历文件夹中的文件,就像我反复按键盘上的向右箭头一样。

  

我的问题是,应用程序碰到文件夹中的最后一个文件时会卡住。该应用程序需要意识到这一点,以便它可以模拟向左键按下事件和向下键按下事件来向上移动目录并进行迭代。

我尝试从处理过程中调用applescript来完成这种工作,但是它太慢了,将焦点从取景器上移开了,然后又把它放回去,看起来有点小故障(这对我很重要)制作此应用进行演示)。

我猜测我可能可以使用守护程序来轮询查找器中当前正在选择哪个元素,然后将该路径发送到处理应用程序,如果在按键后该路径没有改变,则应采取措施;但后来我不确定该怎么做。 python或bash可以从查找程序中轮询那种信息吗?

谢谢!

import processing.sound.*;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
Amplitude amp;
AudioIn in;
Robot robot;

void setup() {
  size(1, 1);  
    try { 
    robot = new Robot();
  } catch (AWTException e) {
    e.printStackTrace();
    exit();
  }

  Sound s = new Sound(this);
  s.inputDevice(3);
  // select audio device ; if not available will fall back to default input
  amp = new Amplitude(this);
  in = new AudioIn(this, 0);
  in.start();
  amp.input(in);
  in.play();
  // playback of audio input : will larsen if you use computer's mic
}      

void draw() {
  // println(amp.analyze());
  if(amp.analyze()>0.3){
    println("go");
    // if sound is louder than 0.3 press right key
    robot.keyPress(KeyEvent.VK_RIGHT);
    robot.keyRelease(KeyEvent.VK_RIGHT);

    delay(200); 
    // prob not the right delay
}
}

0 个答案:

没有答案