libpd: как реализовать пользовательский слушатель на Activity

Я работаю с Pure Data для создания чувствительных к звуку приложений на Android. После всех исправлений я хочу иметь возможность не полагаться на методы libpd (такие как set listeners и методы получения информации), чтобы я мог использовать Pd с любым Activity с парой строк кода.

Проблема в том, что я хочу иметь возможность обрабатывать вывод, полученный от Pd, по-разному, в зависимости от действия (теперь у меня есть приложение для нескольких действий). Но я не могу найти способ сделать это без переопределения слушателя в диспетчере Pd, что приводит к запутанному коду и избытку стандартного кода.

Я искал способ создать свой собственный пользовательский слушатель, который вызывается, когда libpd получает информацию от Pd, но это добавляет намного больше строк кода к самой Activity!

Вот как я сейчас обрабатываю информацию о каждом действии (упрощенно).

pd.getMyDispatcher().addListener("bonk-cooked", new PdListener.Adapter() {
    @Override
    public void receiveList(String source, Object... objects) {
        String bonkOutput;

        int template = (int) Double.parseDouble(objects[0].toString());
        float velocity = Float.parseFloat(objects[1].toString());
    }
};

0 ответов

libPD - это в основном код оболочки вместе с движком PD. Вы можете узнать, какие именно функции вызываются из оболочки, и использовать их напрямую, если это возможно (в вашей среде кодирования), как только вы выделите свой патч pd.

Не все компиляторы так легко поддерживают сочетание языков программирования. Но я почти уверен, что вы найдете то, что вам нужно, когда заглянете в код оболочки. Вы также узнаете, какие параметры необходимы для этих функций. Также будьте осторожны с этими параметрами, так как некоторые функции-оболочки помогают оценить их перед передачей их механизму pd и наоборот.

Другие вопросы по тегам