puredata - 如何在 Pure Data 0.46-7 (Mac) 中正确加载外部?

标签 puredata

我在尝试将 zexy 和 iemlib 加载到 Pd Vanilla 0.46-7 中时遇到一些问题。我从 https://github.com/electrickery/pd-cyclone 编译和安装 cyclone 没有任何问题。效果很好。所以我尝试从 https://github.com/iem-projects/pd-iem 安装 iemlib 和 zexy使用他们的二进制文件,但出现了问题。当我在路径首选项下打开“详细”时,PD 似乎正在寻找与我尝试使用的对象同名的文件。在补丁中使用 [zexy/Multiplex] 会给出:

tried ~/Library/Pd/zexy/multiplex.d_fat and failed
tried ~/Library/Pd/zexy/multiplex.pd_darwin and failed
tried ~/Library/Pd/zexy/multiplex/multiplex.d_fat and failed

但是没有 Multiplex.d_fat 只有 zexy.d_fat。与 iemlib 相同,没有 Dollarg.d_fat 或 Dollarg.pd_darwin,只有 iem_mp3.d_fat、iem_t3_lib.d_fat、iemlib1.d_fat 和 iemlib2.d_fat。我猜这些文件是编译外部文件的地方。

我尝试使用 deken 和 iemlib 安装 .pd_darwin 文件,但我猜这是旧版本(?)并且 zexy 仍在安装 zexy.d_fat 所以我无法加载它的对象。

我还尝试在启动首选项下加载 lib“zexy/zexy”,它加载正常,但随后我收到如下消息:

warning: class 'abs~' overwritten; old one renamed 'abs~_aliased'

而且我似乎失去了命名空间功能,我无法再引用 [zexy/多路复用] 并且只需要使用 [多路复用],我认为这是正确的行为。

Pd 如何知道如何在不同名称的文件上查找对象?

有什么建议吗?

此线程被标记为已解决 http://forum.pdpatchrepo.info/topic/9677/having-trouble-with-deken-plugin-and-zexy-library-solved听起来像是一个类似的问题,但我没有成功。

最佳答案

zexy 是作为多对象库构建的,因此 zexy/Multiplex 没有单独的二进制文件。 正如您正确猜测的那样,加载 zexy 的正确方法是一个整体(在补丁中使用 [declare -lib zexy] 或将 zexy 添加到启动库(不需要使用zexy/zexy)),并忽略有关abs~的警告。

至于加载是如何工作的:

  • Pd 维护一个它知道如何创建的对象列表。例如每当您创建[pack]时,Pd都会在其已知对象列表中查找pack,并使用在那里找到的信息来实际创建对象。
  • 如果您尝试创建 Pd 还不知道的对象(例如 [foo]),那么 Pd 将查找名为 foo 的库(例如: foo.pd_linux),如果找到,它将“加载”它。
  • 加载一个库意味着它将调用库中的一个特殊函数(这个特殊函数是库的入口点,在我们的代码中称为foo_setup())案例)
  • 之后,Pd 将检查已知对象列表中是否现在foo。如果是,它将创建该对象。

现在,魔法在特殊函数中完成,当 Pd 加载库时调用该函数:该函数的主要目的是告诉 Pd 有关新对象的信息(基本上是说:“如果有人请求对象“foo”,我可以做一个,或者你也可以”)。 当zexy的特殊函数被加载时,它会告诉Pd所有zexy对象(包括多路复用),因此Pd加载zexy后,它知道如何创建[多路复用] 对象。

如果特殊函数注册了一个 Pd 已经知道的对象(例如,在 zexy 的情况下,它会尝试注册一个新对象 abs~,即使 Pd 已经拥有同名的内置对象),然后 Pd 将通过附加 _aliased 来重命名原始对象,并且新注册的对象将接管该名称。

关于puredata - 如何在 Pure Data 0.46-7 (Mac) 中正确加载外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588376/

相关文章:

python - 使用 Blender Python 与纯数据的 TCP 连接

python - 如何将消息从纯数据发送到 Python?

c - 使用 C 实现外部纯数据时内存损坏

java - 如何将 Android 中的音频导入 libPD?

python - 我可以从 Pure Data 执行 Python 脚本吗?

audio - 纯数据中的自动 slider ?

用 C 语言与纯数据通信

javascript - 实现纯数据和处理文件的自动 "playlist"

macos - Mac 上的 CMake : Could NOT find Threads (missing: Threads_FOUND)

events - Unity3D中的帧率独立事件