问题标签 [libpd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
68 浏览

ios - 实时查看补丁信息

是否可以使用 libPd for iOS 向补丁发送消息并实时查看视觉更新?我尝试将模拟器目录中的补丁加载到编辑器中,然后与我交互以发送 Pd 消息,但是没有发生视觉更新。

libpd 是否使用补丁文件作为状态存储?

0 投票
2 回答
410 浏览

ios - 在播放 libPd 补丁期间噼啪作响 - 尤其是。与键盘演示有关

我在 iOS 中集成了一个 libPd 补丁。

输入文本字段并显示键盘时,会发出一些噼啪声。

我将如何调试这个?

注意我已经用 Objective-C 和 iOS 标记了这个问题,但是这个问题可能需要所有四个标签的知识 - libPd 和纯数据:

什么是纯数据

  1. Pure Data 是一种强大的编程语言,用于根据核心数学概念处理音频。它广泛用于游戏以及 DJ 和其他以音乐为中心的应用程序。使用 Pure Data 和 libPd 构建的一些示例应用程序包括:RjDj 的 Rj Voyager 应用程序和 Warner Brothers 的 Inception 应用程序。

  2. libPD 是一种在 iOS 应用程序中嵌入 Pure Data 补丁(使用可视界面开发)的方法。控制 Pd 接口是通过类似于 OSC 或 MIDI 的发布/订阅消息接口完成的。.

libPd 的 GitHub 页面在这里:https ://github.com/libpd

我在寻找什么帮助?

我不确定从哪里开始调试。在 iOS 上集成和使用过 libPd 的人肯定可以分享经验。它可能与以下内容有关:

  • 线程如何工作,以及它如何与主队列交互
  • 给定目标设备,什么采样率最有效
  • 有哪些调试工具可用。
  • 通过丰富的经验获得的其他建议。
0 投票
1 回答
315 浏览

ios - 用于 iOS Mach-O 链接器错误的 libpd

我在通用 iOS 应用程序中使用 libpd,使用 iOS 7 和 Xcode 5.0.2。libpd 按预期工作(可以加载 Pd 补丁并与之交互),但我在使用外部对象时遇到了麻烦。

这是我看到的错误消息:

我已经看到将 libpd 子项目的“构建活动架构”标志设置为“是”的建议——这没有任何区别,我仍然遇到同样的错误。

这个问题是否有解决方案(明显或其他)?

0 投票
1 回答
152 浏览

java - Android 中推荐的每应用 CPU 负载

我正在开发一个使用 libpd 运行大量密集音频任务的 Android 应用程序。Libpd 的音频线程具有优先级 Process.THREAD_PRIORITY_URGENT_AUDIO。

三星 Galaxy S3 的 CPU 负载始终保持在 20% 到 30% 之间。这对我来说似乎是合理的,但是,当音频服务在后台运行且 CPU 负载约为 30% 时打开另一个应用程序会导致大量音频丢失。

有人可以解释这种行为吗?我认为像 S3 这样的四核手机的最大负载为 400%(在 adb shell 中使用“top”显示)。因此,我不明白为什么像libpd的音频线程这样高优先级的线程在只使用30%的CPU时却得不到足够的CPU资源。

任何建议将不胜感激,谢谢;)

0 投票
1 回答
546 浏览

java - 如何从 Android 获取音频到 libPD?

基于 Peter Brinkmann 的示例类,我在 Eclipse 中运行 libpd 和处理。但我似乎并不完全了解如何将来自 Android 麦克风的音频输入转换为 Pure Data。

当我在实际或虚拟设备上运行它时,我收到一堆错误消息:

E/AudioRecord(1079): 无法获取记录源 1 的音频输入

E/AudioRecord-JNI(1079):创建 AudioRecord 实例时出错:初始化检查失败。

这是主要的类:

0 投票
1 回答
421 浏览

c++ - 如何使用 libpd 从纯数据补丁接收命名信号?

我正在使用 libpd 将 Pure Data 引擎嵌入到我的项目中,并且我正在尝试接收来自补丁的信号消息。

如果我在补丁中放置一个非信号消息(即)控件:

我收到消息没有问题。但是,如果我尝试使用 ~ 来执行相同的消息,表示信号消息,我的处理程序永远不会收到它,示例补丁如下:

无论我使用轮询还是回调,此补丁都不会收到任何“toCPP”消息。这是我的 [精简] 示例代码:

有人会期望此代码在符号 toCPP 的每个滴答周期从补丁中接收一个浮点数(或浮点数列表),但事实并非如此。此测试代码将收到消息的 [s toCPP] 版本,而不是 [s~ toCPP]。顺便说一句,如果我将 [osc~ 440] 连接到 [dac~] 对象并通过 outbuf 读取数据,我可以接收来自 [osc~ 440] 的输出,但这对我的用途来说不是最佳的,我想避免它(主要原因是我可能需要输出 8 组或更多组声学数据,并且在补丁中创建和使用具有这么多通道的 dac~ 对象变得有些笨拙)。

我的问题是:

是否可以使用 libpd 从 Pd 补丁接收基于信号的消息?

如何在 C++ 端使用 libpd 从 Pd 补丁接收基于信号的消息?

0 投票
1 回答
157 浏览

c++ - 使用 libpd 时如何处理不能被 64 整除的音频缓冲区大小?

libpd 的 API 只允许一次处理 64 个样本帧中的音频。我过去所做的是将音频设备缓冲区大小设置为可被 64 整除的数字。那里没有问题。

现在,我需要制作一个兼容 ASIO 的 Windows 应用程序。我正在使用 RtAudio。问题是,当我使用 RtAudio API 初始化我的 ASIO 声卡(Roland FA-66)时,它会忽略缓冲区大小参数并选择它自己的一个,它不能被 64 整除。

我想到了一个解决方法。这将发生在音频回调函数中:

  1. 检查缓冲区大小是否不能被 64 整除。如果是:
  2. 告诉 libpd 处理大于所需大小的帧数并将其存储在临时缓冲区中。
  3. 使用 memcpy 将适量的帧从临时缓冲区复制到输出缓冲区。
  4. 使用 memcpy 将额外的样本存储在另一个缓冲区(称为额外)中,并在以下对音频回调的调用中使用它们。

我还没有尝试过,但我认为它会起作用。

但是,我想知道是否有“标准”或“众所周知”的程序来处理这个问题。也许有我不知道的警告或提示?

0 投票
5 回答
3163 浏览

android - 在 Android Studio 中使用 libpd

所以我从https://github.com/libpd/pd-for-android获得了 git repo,并在 Android Studio 中为我的“AmazingSynthesizer”创建了一个新的空白项目。

我使用“导入模块”向导导入 PdCore 和 AndroidMidi。然后,右键单击“应用程序”以查看我的“模块设置”。在依赖项下,我将 PdCore 添加为模块依赖项。此外,我添加了 AndroidMidi 作为“PdCore”的模块依赖项。

到目前为止,这对我来说似乎是正确的。我的应用程序的 build.gradle 包含库,我可以在 MainActivity 中导入 PdDispatcher。问题是,它似乎仍然错过了本机库(我认为!)。

来自官方 libpd 书籍的非常基本的示例代码(由 Peter Brinkmann 制作音乐应用程序)

惨败

0 投票
2 回答
482 浏览

android - 迁移到包含 libpd 的 Android Studio

随着 Android Studio 1.0 (AS) 的发布,我想从 Eclipse 迁移。通常我不需要其他库,然后 libpd (PureData) 用于音频合成。问题是,用于 android 的 libpd 是针对 Eclipse 的需求而设计的。所以在 Eclipse 中,一切都按预期工作。

我能找到的唯一信息是:在 Android Studio 中使用 libpd所以我知道 libpd 和 Android Studio 可以一起工作,但这里可能还有一些其他问题。

我开始生成一个新的简单项目(MinSDK 10 - CompileSDK 21 - BuildTools 21.1.2),只有一个空白活动。我可以将这个简单的应用程序部署到我的 Nexus 上,一切都很好。

然后我将 :PDCore 和 :AndroidMidi 作为模块导入到我的 AS 项目中,我得到 Gradle build-error: Error:The SDK Build Tools revision (17.0.0) is too low for project ':PdCore'。最低要求是 19.1.0

我通过 SDK Manager 安装了 API 19 和 Build Tools 19.1 版,但这并没有解决我的问题。我将应用程序 build.gradle 文件的 buildToolsVersion 更改为“19.1.0”,但这并没有解决我的问题。

有什么建议可以让 Gradle 正常工作吗?也许有人得到了一个带有 libpd 的示例 Android Studio 项目来分享?

提前致谢!

仅供参考:我写了一些关于使用 libpd 迁移到 Android Studio 的帖子。看看这里:

0 投票
0 回答
137 浏览

c++ - Visual C++ 2010 中的 libpd 配置

我正在尝试在 Visual C++ 2010 项目中导入并运行 libpd API CppTest附带的 C++ 示例项目。

我导入了libpd的C++ API文件,即PdBase、PdReceiver、PdMidiReceiver和PdTypes,在PdBase和PdTypes的情况下有对应的源文件。我将 Pure Data 的 include 文件夹(“C:\pd_installation_folder\include”)和包含 libpd 包装器的 C 代码的 libpd_wrapper 文件夹作为附加包含目录。

当我运行示例项目的解决方案时,由于链接阶段出现错误,“错误 LNK2019”,其中包含大量未解决的外部项,因此无法正常工作。这里有什么问题?我是否应该为 VC++ 项目的链接器配置属性提供任何 libpd 附加静态库(或 .dll)?