用超级准直器现场编码音乐

FoxDot的Python项目详细描述


foxdot-使用python v0.8进行实时编码

foxdot是一个python编程环境,它为超级准直器提供了一个快速且用户友好的抽象。它还带有自己的ide,这意味着它可以直接使用;您只需要python和supercallider就可以了!

重要

如果使用pip install foxdot安装时遇到问题,请尝试使用以下代码更新python的setuptoolswheel库并重试。

pip install -U setuptools
pip install -U wheel

v0.8更新

  • 为timestretching示例添加了stretchsynth,类似于loop但更好,而且只播放整个文件。在不影响音高的情况下,将音频的持续时间延长到sus属性,并且不需要知道节奏。
# Stretches the audio to 4 beats without affecting pitchp1>>stretch("Basic_Rock_135",dur=4)

安装和启动

先决条件

推荐

安装foxdot
  • 打开命令提示符并键入pip install--user foxdot。如果您正确配置了python,这将从python包索引下载并安装最新稳定版本的foxdot。
  • 如果foxdot已经安装,您可以将其更新到最新版本,方法是将-u--upgrade标志添加到此命令中。
  • 或者,您可以直接从这个存储库的源代码构建:
$ git clone https://github.com/Qirky/FoxDot.git
$ cd FoxDot
$ python setup.py install
  • 打开Supercallder,输入以下命令并按ctrl+return(注意:如果要在计算机上安装Git,则需要在计算机上安装还没有):
Quarks.install("FoxDot")
  • 通过转到language->;重新编译类库或按ctrl+shift+l

启动

  1. 打开超级准直器并键入foxdot.start并计算此行。超级对撞机正在监听来自FoxDot的信息。
  2. 在命令行中输入foxdot启动foxdot。如果不起作用,请尝试python-m foxdot
  3. 如果已安装SC3插件,请使用"代码"下拉菜单选择"使用SC3插件"。重新启动FoxDot,您将可以访问SC3插件中的类。
  4. 通过每隔几周运行pip install foxdot--upgrade来更新foxdot的最新版本。
  5. 有关如何掌握FoxDot的深入教程视频,请查看YouTube教程

使用超级准直器3.7或更早版本安装

如果你在超级准直器中安装Foxdot夸克时遇到问题,通常是因为你安装的超级准直器版本没有安装夸克的功能,或者工作不正常。如果是这种情况,您可以下载以下超级对焦器脚本的内容:foxdot.scd。下载后,在超级对焦器中打开文件并按ctrl+return运行它。这将使超级准直器开始监听来自FoxDot的消息。

常见问题

您可以在在FoxDot讨论论坛上的常见问题解答帖子

< H2> BasiCS</H2>

执行代码

foxdot中的代码块由连续的代码行组成,没有空行。按ctrl+return(或在Mac上按cmd+return)将执行光标当前所在的代码块。试着打印(1+1)看看会发生什么!

播放器对象

python支持许多不同的编程模式,包括过程式和函数式,但是foxdot实现了一种传统的面向对象的方法,其中有一点欺骗,使代码更易于生存。player对象是foxdot通过给它分配一个synth(它将播放的"乐器")和一些指令(如音符音高)来制作音乐的对象。所有一个和两个字符的变量名在启动时都为player对象保留,因此,默认情况下,变量abdp1是"空"的player对象。如果您使用这些变量中的一个来存储其他内容,但希望再次将其用作播放器对象,或者希望使用一个包含两个以上字符的变量,则只需创建一个player并按如下方式分配它即可:

p1=Player("p1")# The string name is optional

要停止播放器,请使用stop方法,例如p1.stop()。如果要停止所有播放机,可以使用执行此命令的命令clock.clear()或键盘快捷键ctrl+。

使用双箭头操作符>;为播放器对象分配合成器和指令。因此,如果您想将synth分配给名为"pads"(执行print(synthdefs)以查看所有可用的synth)的p1

p1>>pads([0,1,2,3])

空的player对象p1现在被分配一个"pads"synth和一些回放指令。p1将使用名为\pads的超级准直器synthdef播放默认音阶的前四个音符。默认情况下,每个音符以120 bpm的速度持续1拍。可以通过指定关键字参数来更改这些默认值:

p1>>pads([0,1,2,3],dur=[1/4,3/4],sus=1,vib=4,scale=Scale.minor)

关键字参数duroctscale适用于所有播放器对象-任何其他对象,如上例中的vib,请参阅相应的synthdef中的关键字参数。第一个参数degree不必显式声明。音符可以组合在一起,以便使用圆括号(同时播放。序列[(0,2,4),1,2,3]将播放默认音阶的第一个谐波三和弦,后面跟着三个音符。

"示例播放器"对象

在foxdot中,声音文件可以通过使用名为play的特定synthdef来播放。使用此synthdef的播放器对象称为示例播放器对象。示例播放器不指定要生成注释的数字列表,而是将字符串(称为"playstring")作为其第一个参数。要查看与哪些字符关联的示例列表,请使用print(samples)。要创建基本的鼓点节拍,可以执行以下代码行:

d1>>play("x-o-")

要同时播放示例,您可以为一些更复杂的模式创建一个新的"示例播放器"对象。

bd>>play("x( x)  ")hh>>play("---[--]")sn>>play("  o ")

或者,您可以在一行中使用<;箭头将要一起播放的模式分开,如下所示:

pip install -U setuptools
pip install -U wheel
0

或者您可以使用pzipzip方法或&;符号创建一个这样做的模式。如果您希望以后在各个层上执行某些功能,这将非常有用:

pip install -U setuptools
pip install -U wheel
1

在圆括号中对字符进行分组将填充图案,以便在每次播放示例序列时,播放组示例中的下一个字符。序列(x o)--将被回放,就好像输入了x---o一样--- < /代码>。使用方括号将强制所包含的示例与单个字符在同一时间跨度内播放,例如,--[--]将以半拍播放两个Hi-Hat击数,然后以四分之一拍播放两个Hi-Hat击数。通过在播放字符串中使用大括号,您可以播放选定内容中的随机示例,如下所示:

pip install -U setuptools
pip install -U wheel
2

现在有了在使用playsynthdef时为单个样本指定样本号的功能。这可以通过使用<;char>;<;sample>;格式的条形字符从播放字符串本身完成。也可以使用括号创建这些图案:

pip install -U setuptools
pip install -U wheel
3

安排播放机方法

只需调用适当的方法,您就可以在播放器对象上执行诸如shuffle、mirror和rotate之类的操作。

pip install -U setuptools
pip install -U wheel
4

您可以通过调用every方法来调度这些方法,该方法接受一个持续时间列表(以节拍为单位)、方法名称作为字符串以及任何其他参数。下面的语法反映了6拍后的示例字符字符串,然后再重复2拍,并每8拍进行一次随机播放。

pip install -U setuptools
pip install -U wheel
5

文档

文档网站链接(仍在进行中)

使用其他编辑器

foxdot预先打包了自己的基本编辑器,这样你就不必修改配置文件或下载任何其他工具,但如果你想使用现有的编辑器,你可以。koltes为流行的atom编辑器编写了一个插件。您可以通过转到"设置"->;"安装"->;搜索"FoxDot"并按插件上的"安装"来安装它。按ctrl+alt+f或转到菜单->;软件包->;FoxDot->;切换以启动FoxDot运行。

使用foxdot代码运行python文件

您可以像导入其他模块一样,将foxdot导入到您自己的python程序中。如果您没有编写交互式程序,即只包含foxdot代码,则需要在程序结束时调用函数go(),以获得回放,否则程序将立即终止。例如,您的程序,my_file.py应该如下所示:

pip install -U setuptools
pip install -U wheel
6

然后像其他任何python程序一样运行:python my_file.py

谢谢

  • 超级准直器开发社区,当然还有james mccartney,它的原始开发人员
  • Pyosc,Artem Baguinski等人
  • 以某种方式对项目做出贡献的实时编码社区成员,包括但不限于Alex McLean、Sean Cotterill和Dan Hett。
  • 非常感谢那些使用、测试和提交bug的人,它们都有助于改进foxdot
  • 感谢那些为超级准直器相关问题找到解决方案的人,如Davids48

样品

Foxdot的音频文件是从许多来源获得的,但我丢失了哪些文件属于哪个原始作者的记录。这是一份感谢列表,感谢那些不知情的Foxdot样本档案的创建者。

  • Legowelt示例工具包
  • 游戏男孩鼓包
  • 许多声音都是由迈克·霍德尼克的现场编码专辑提供的,expedition
  • 从http://freesound.org获取了许多示例,并通过creative commons 0许可证放入公共域中:http://creativecommons.org/public domain/zero/1.0/" rel="nofollow">http://creativecommons.org/publicdomain/zero/1.0/-感谢原始创建者
  • 其他示例来自les/dirt samples/tree/c2db9a0dc4ffb911febc613cdb9726cae5175223" rel="nofollow">dirt sample engine是yaxu创建的tidalcycles实时编码语言的一部分-再次感谢。

如果你觉得我用了一个不该用的样本,请联系我!

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

推荐PyPI第三方库


热门话题
带有抽象方法的JavaGroovy模拟   java黄瓜任务   没有同步或易失性的java内存可见性   java何时使用合适版本的singleton threadsafe实现?   java将包装器类转换为Xtend中的原语   java如何从父帧关闭所有子帧?   java如何将图像上载到SQLite数据库?   java如何更改JTable的空白颜色?   java Android在OpenGLES中通过glBlendFunc混合获得正确的不透明度/颜色   多线程在Java中同步共享静态对象的正确方法是什么?   Java中类似apache commons的谓词。它存在吗?   安卓中文本视图中的java过滤文本   java Room数据库迁移冻结屏幕   jar Java使用xjc生成的类不会生成默认的无参数构造函数   java Android包含自定义组件,导致其隐藏在主视图后面   java Gradle脚本忽略TestNG xml文件   java无法安装maven,系统无法识别“mvn”命令行   如何通过java中的post将信息发送到php页面?   java Android HTTPUrlConnection响应返回垃圾   如何确保我的Java程序不使用Oracle JVM?