利用mod host对lv2音频插件进行pythonic管理。

PedalPi-PluginsManager的Python项目详细描述


Build StatusDocumentation StatusCode coverage

mod-host对lv2音频插件进行pythonic管理。

文档:
http://pedalpi-pluginsmanager.readthedocs.io/
代码:
https://github.com/PedalPi/PluginsManager
python包索引:
https://pypi.org/project/PedalPi-PluginsManager
许可证:
Apache License 2.0

安装

插件管理器具有在安装库之前必须安装的依赖项。 依赖项包括lv2ls来检查已安装的音频插件 以及PortAudio以获取有关通过PyAudio的音频接口的信息。

在基于debian的系统上,运行:

sudo apt-get install -y portaudio19-dev python-all-dev lilv-utils --no-install-recommends

当然,要让pluginsmanager管理lv2音频插件,必须安装 要管理的音频插件。GuitarixCalf Studio项目提供了一些音频插件。 要安装它们:

pip install PedalPi-PluginsManager

示例

注意

其他例子在examples folder in the repository中。

这个例子使用CalfGuitarix音频插件。

下载并安装mod-host。有关详细信息,请检查ModHost section

开始音频处理

# In this example, is starting a Zoom g3 series audio interface
jackd -R -P70 -t2000 -dalsa -dhw:Series -p256 -n3 -r44100 -s &
mod-host

玩吧!

frompluginsmanager.banks_managerimportBanksManagerfrompluginsmanager.observer.mod_host.mod_hostimportModHostfrompluginsmanager.model.bankimportBankfrompluginsmanager.model.pedalboardimportPedalboardfrompluginsmanager.model.connectionimportConnectionfrompluginsmanager.model.lv2.lv2_effect_builderimportLv2EffectBuilderfrompluginsmanager.model.system.system_effectimportSystemEffect

创建银行

# BanksManager manager the banksmanager=BanksManager()bank=Bank('Bank 1')manager.append(bank)

正在连接mod_主机。mod_主机进程必须已经运行

mod_host=ModHost('localhost')mod_host.connect()manager.register(mod_host)

创建踏板

pedalboard=Pedalboard('Rocksmith')bank.append(pedalboard)# or# bank.pedalboards.append(pedalboard)

装载踏板。踏板的所有更改都在mod_host中复制

mod_host.pedalboard=pedalboard

在踏板上添加效果

builder=Lv2EffectBuilder()reverb=builder.build('http://calf.sourceforge.net/plugins/Reverb')fuzz=builder.build('http://guitarix.sourceforge.net/plugins/gx_fuzz_#fuzz_')reverb2=builder.build('http://calf.sourceforge.net/plugins/Reverb')pedalboard.append(reverb)pedalboard.append(fuzz)pedalboard.append(reverb2)# or# pedalboard.effects.append(reverb2)

对于自动获取声卡输入和输出,请使用systemeffectbuilder。 它需要一个使用JACK-Client的jackclient实例。

frompluginsmanager.jack.jack_clientimportJackClientclient=JackClient()frompluginsmanager.model.system.system_effect_builderimportSystemEffectBuildersys_effect=SystemEffectBuilder(client).build()

对于手动输入和输出声卡定义,请使用:

sys_effect=SystemEffect('system',['capture_1','capture_2'],['playback_1','playback_2'])

注意

不在任何踏板中添加系统效果

连接:

pedalbaord.connect(sys_effect.outputs[0],reverb.inputs[0])pedalbaord.connect(reverb.outputs[0],fuzz.inputs[0])pedalbaord.connect(reverb.outputs[1],fuzz.inputs[0])pedalbaord.connect(fuzz.outputs[0],reverb2.inputs[0])pedalbaord.connect(reverb.outputs[0],reverb2.inputs[0])pedalbaord.connect(reverb2.outputs[0],sys_effect.inputs[0])pedalbaord.connect(reverb2.outputs[0],sys_effect.inputs[1])

使用ConnectionList

连接
pedalboard.connections.append(Connection(sys_effect.outputs[0],reverb.inputs[0]))pedalboard.connections.append(Connection(reverb.outputs[0],fuzz.inputs[0]))pedalboard.connections.append(Connection(reverb.outputs[1],fuzz.inputs[0]))pedalboard.connections.append(Connection(fuzz.outputs[0],reverb2.inputs[0]))pedalboard.connections.append(Connection(reverb.outputs[0],reverb2.inputs[0]))pedalboard.connections.append(Connection(reverb2.outputs[0],sys_effect.inputs[0]))pedalboard.connections.append(Connection(reverb2.outputs[0],sys_effect.inputs[1]))

设置效果状态(启用/禁用旁路)和参数值

fuzz.toggle()# or# fuzz.active = not fuzz.activefuzz.params[0].value=fuzz.params[0].minimum/fuzz.params[0].maximumfuzz.outputs[0].disconnect(reverb2.inputs[0])# or# pedalboard.connections.remove(Connection(fuzz.outputs[0], reverb2.inputs[0]))# or# index = pedalboard.connections.index(Connection(fuzz.outputs[0], reverb2.inputs[0]))# del pedalboard.connections[index]reverb.toggle()

移除效果和连接:

pedalboard.effects.remove(fuzz)forconnectioninlist(pedalboard.connections):pedalboard.disconnect(connection)# or#pedalboard.connections.remove(connection)foreffectinlist(pedalboard.effects):pedalboard.effects.remove(effect)# or# for index in reversed(range(len(pedalboard.effects))):# del pedalboard.effects[index]

观察者

ModHost是一个观察者(请参见UpdatesObserver)。 它被告知所有的变化 出现在某个模型实例中(BanksManagerBankPedalboardEffectParam,…), 允许它透明地与mod-host进程通信。

可以创建观察者!有些想法是:

  • Allow the use of other hosts (such as Carla);
  • Automatically persist changes;
  • Automatically update a human-machine interface (such as LEDs and displays that inform the state of the effects).

如何实施和实施的观察员名单 可以在Observer section中访问库。

维护

生成文件

执行make help,查看选项

生成文档

这个项目使用Sphinx+Read the Docs

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException