如何正确加载Pure Data 0.46-7(Mac)中的外部设备?

时间:2016-02-23 21:18:15

标签: puredata

我在尝试将zexy和iemlib加载到Pd Vanilla 0.46-7时遇到了一些麻烦。从https://github.com/electrickery/pd-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 / multiplex]并且只需要使用[multiplex],我猜这是正确的行为。

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

有什么建议吗?

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

1 个答案:

答案 0 :(得分:2)

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

关于装载的工作方式:

  • Pd维护一个它知道如何创建的对象列表。例如无论何时创建[pack],Pd都会在其已知对象列表中查找 pack ,并使用在那里找到的信息来实际创建对象。
  • 如果你试图创建一个Pd还不知道的对象(例如[foo]),那么Pd将寻找一个名为 foo 的库(例如:{{ 1}})如果找到,它将"加载"它。
  • 加载库意味着它将调用库中的特殊函数(这个特殊函数是库的入口点,在我们的例子中称为foo.pd_linux
  • 之后,Pd将检查 now 在已知对象列表中是否有foo_setup()。如果是,它将创建对象。

现在魔术在特殊功能中完成,当Pd 加载库时调用:此功能的主要目的是告诉Pd关于新对象(基本上说:&# 34;如果有人要求对象" foo",我可以制作一个或你#34;)。 当加载zexy的特殊函数时,它告诉Pd关于所有 zexy对象(包括foo),所以在Pd加载了zexy后,它知道如何创建{{1对象。

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