gpt4 book ai didi

supercollider - 如何从终端命令行界面 (CLI) 在扬声器上以非交互方式播放 SuperCollider 文件或保存到输出文件?

转载 作者:行者123 更新时间:2023-12-04 03:44:45 25 4
gpt4 key购买 nike

我正在尝试使用 SuperCollider 获得一些乐趣,而对我而言,乐趣意味着在 shell 中运行命令!
到目前为止,我已经成功地演奏了以下扬声器:
rs.scd

s.waitForBoot({
// Play scale once.
x = Pbind(\degree, Pseq([0, 3, 5, 7], 1), \dur, 0.25);
x.play;
});
和:
sclang rs.scd
并保存到 https://doc.sccode.org/Guides/Non-Realtime-Synthesis.html 中提到的文件中和:
csd文件
x = Pbind(\degree, Pseq([0, 3, 5, 7], 1), \dur, 0.25).asScore(1, timeOffset: 0.001);
x.add([0.0, [\d_recv, SynthDescLib.global[\default].def.asBytes]]);
x.sort;
x.recordNRT(
outputFilePath: "nrt.aiff",
sampleRate: 44100,
headerFormat: "AIFF",
sampleFormat: "int16",
options: ServerOptions.new.numOutputBusChannels_(2),
duration: x.endTime
);
0.exit;
所以为了实现我的目标,我缺少:
  • 如何自动退出 rs.scd玩完了?我可以做 1.wait; 0.exit;但这迫使我对 1 进行硬编码,这是正在播放的 4 个 0.25 秒音符的长度(以秒为单位)。那个1也硬编码在 nrs.csd ,并且能够将其分解出来也很棒。
  • 如何制作可以在扬声器上播放或保存到文件的单个文件,例如基于我在运行时选择的命令行选项?我想我最终会通过玩 thisProcess.argv 来管理和一个 if ,但有没有更简单的方法?

  • 我之前在玩 CSound,让一个类似的“hello world”在那里工作要简单得多。
    在 SuperCollider 3.10、Ubuntu 20.04 上测试。

    最佳答案

    对于你的第一个问题:
    x.recordNRT你可以添加一个 Action 。该函数将在分数完成后执行。

    ...
    x.recordNRT(
    ...
    duration: x.endTime,
    action: {0.exit}
    );
    对于你的第二个问题:
    这是一个不寻常的用例。我不知道比 argv 和 if 语句更好的方法。 (另见 https://doc.sccode.org/Classes/Main.html#-argv)
    可以放在 if 之前的内容包括:
    构建您的模式并创建您的合成定义。
    If 之后需要做的事情包括将 SynthDefs 发送到服务器,因为 NRT 服务器与本地服务器不同。请参阅您链接的帮助文件,了解有关此问题的一些警告。

    关于supercollider - 如何从终端命令行界面 (CLI) 在扬声器上以非交互方式播放 SuperCollider 文件或保存到输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65360414/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com