将Clavia Nord模块化G2修补程序转换为CSound代码。

pch2csd的Python项目详细描述


PCH2CSD-Clavia Nord模块化G2补丁转换器项目

本项目的目标是(重新)实施Clavia Nord模块化G2音响 引擎在csound,一个著名的声音和音乐计算系统。重要维基 页码:

安装

假设您有python 3.5和 pip已安装:

sudo pip3 install pch2csd

在项目变得更稳定之前,我们自动构建并上传 提交到存储库,因此您可能希望在 同时。使用较新的版本,您可能会获得新的功能和模块 可用,以及修复的错误。要更新工具,只需运行以下命令 命令:

sudo pip3 install -U pch2csd

用法

命令行选项:

$ pch2csd -h
usage: pch2csd [-h] [-d] [-p | -c | -v | -e] [arg]

convert Clavia Nord Modular G2 patches to the Csound code

positional arguments:
  arg              a pch2 file path or an UDO numerical ID

optional arguments:
  -h, --help       show this help message and exit
  -d, --debug      print a stack trace in case of error
  -p, --print      parse the patch file and print its content
  -c, --check-udo  validate the UDO template file (overrides '-p')
  -v, --version    show program's version number and exit
  -e               show the elephant and exit

要生成新的csound文件,只需将.pch2文件路径作为参数传递。 新文件将与修补程序文件在同一目录中生成一个 示例:

pch2csd test_poly_mix2.pch2

选项-p可用于打印修补程序中存在的模块和电缆。 模块ID是修补程序中模块的唯一编号,模块Type是 模块类型的数值表示(也用于查找 中的模板)。方括号中是原始MIDI 模块参数。Area是模块或电缆所在的部分;它可以 要么是VOICE,要么是FX。在cable表符号In2(id=1, out=0) -> Mix41B(id=2, in=0)中,表示该电缆连接模块的第0个输出 In2ID1),使用模块Mix41bID2)的输入0。请注意 模块可以将输出(out-in)连接到输入,也可以将输入连接到输入 (in-in)。

$ pch2csd -p test_3osc.pch2
Patch file: test_3osc.pch2

Modules
Name        ID    Type  Parameters               Area
--------  ----  ------  -----------------------  ------
OscA         1      97  [64, 51, 1, 0, 2, 1, 0]  VOICE
OscA         2      97  [64, 78, 1, 0, 2, 1, 0]  VOICE
OscA         3      97  [64, 64, 1, 0, 2, 1, 0]  VOICE
Mix41B       4      19  [100, 112, 91, 117, 1]   VOICE
EnvD         6      55  [54, 0]                  VOICE
FltLP        5      87  [75, 34, 0, 1]           VOICE
Out2         7       4  [2, 1, 0]                VOICE
Keyboard     8       1  []                       VOICE
FxIn         1     127  [0, 1, 1]                FX
Clip         2      61  [0, 53, 1, 1]            FX
Out2         3       4  [0, 1, 0]                FX

Cables
From                       To                  Color    Type    Area
---------------------  --  ------------------  -------  ------  ------
OscA(id=1, out=0)      ->  Mix41B(id=4, in=1)  red      out-in  VOICE
OscA(id=2, out=0)      ->  Mix41B(id=4, in=2)  red      out-in  VOICE
OscA(id=3, out=0)      ->  Mix41B(id=4, in=3)  red      out-in  VOICE
Mix41B(id=4, out=0)    ->  EnvD(id=6, in=2)    red      out-in  VOICE
EnvD(id=6, out=1)      ->  FltLP(id=5, in=0)   red      out-in  VOICE
EnvD(id=6, out=0)      ->  FltLP(id=5, in=1)   blue     out-in  VOICE
FltLP(id=5, out=0)     ->  Out2(id=7, in=0)    red      out-in  VOICE
Out2(id=7, in=0)       ->  Out2(id=7, in=1)    red      in-in   VOICE
Keyboard(id=8, out=1)  ->  EnvD(id=6, in=0)    yellow   out-in  VOICE
FxIn(id=1, out=0)      ->  Clip(id=2, in=0)    red      out-in  FX
Clip(id=2, out=0)      ->  Out2(id=3, in=0)    red      out-in  FX
Out2(id=3, in=0)       ->  Out2(id=3, in=1)    red      in-in   FX

选项-c允许您检查指定模块的UDO是否 已实现或在实现中有错误:

$ pch2csd -c 43
Checking UDO for the type ID 43
Found a module of this type: Constant
The UDO template seems to be correct

$ pch2csd -c 194
Checking UDO for the type ID 194
Found a module of this type: Mix21A
ERROR Unknown table 'CLAEXP'

$ pch2csd -c 100
Checking UDO for the type ID 100
Found a module of this type: Sw21
ERROR UdoTemplate(Sw21, 100.txt): no opcode 'args' annotations were found in the template

历史记录

我们在2015年夏天开始了我们的项目该项目的主要目标是 使用Csound语言模拟传奇的Clavia Nord模块化G2合成器这个 该项目首次在第三届国际Csound会议上提出 (10月2日至4日,俄罗斯圣彼得堡)。

如何贡献

请阅读 CONTRIBUTION.md 文件

你为什么需要它?

如果你是一个诺德模块化风扇,这个软件可以让你有你最喜欢的 在声音语言的殿堂里为永生而设计的装置你也是 可以提高模型的精度,使用全世界的csound 与克拉维亚一起的可能性。

如果你是一个健全的人,这是我们旅程的一个新分支。这太好了 在csound上运行一些硬件数字合成器。一旦转换 项目完成后,您可以使用数百个有趣的clavia的g2补丁 在CSound上搜索。

如果你发现了模块化合成和算法合成的世界, 系统提供了一种很好的描述Clavia图形补丁的方法

如果您是替代Clavia Nord模块化G2编辑器的开发人员,您可以 将图形编辑器软件与系统合并以生成声音。

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

推荐PyPI第三方库


热门话题
java为什么单元测试中的“验证”在不同实例的情况下不返回“不同参数”错误?   java如何从具有相同类名的div中选择元素(Selenium)   Java制作纸牌游戏,有关于类的问题吗   bluej在Java中使用变异器和访问器设置颜色和圆半径   java准确定位异常错误的最佳方法是什么?   使用多个监视器时的java设置对话框位置   java如何在不使用JavascriptExecutor的情况下在网页中向下/向上滚动   java在for循环中将大小设置为n   java为什么akka需要不可变的消息   java LdapInvalidDnException:意外标记:   java如果字符串的第一个字母不是一个,如何大写?   使用htmlunit的java html内容提取   java从CDI托管bean获取方法的注释   java有办法在运行时检查post请求参数的大小吗   java我可以将实体注入托管Bean并直接持久化吗?