Я делаю простое приложение для обработки презентации, которое в настоящее время выполняет одно: оно слушает микрофон и эмулирует событие нажатия клавиши со стрелкой вправо, когда слышит звук.Я использую его для синхронизации synth с искателем OSX, поэтому при воспроизведении музыки он перебирает файлы папки, как если бы я неоднократно нажимал стрелку вправо на клавиатуре.
Моя проблема в том, что приложение застревает при попадании в последний файл в папке.Приложение должно знать об этом, чтобы оно могло эмулировать событие нажатия левой стрелки и событие нажатия клавиши со стрелкой вниз, чтобы перейти в каталог и продолжить итерацию.
Я пытался вызвать яблочный скрипт из обработкидля этого, который работает, но он слишком медленный и отвлекает внимание от искателя, а затем возвращает его обратно, который выглядит просто глючно (что важно, так как я делаю это приложение для презентации).
Полагаю, я мог бы использовать демон, который опрашивает, какой элемент в данный момент выбирается в искателе, и отправлять этот путь в приложение обработки, и предпринимать действия, если путь не меняется после нажатия клавиши;но тогда я не уверен, как это сделать.Может ли 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
}
}