我想做一些实时的声音处理,我听说过supercollider
它看起来很棒,但我想坚持使用python,因为"普通"编程是个问题.
有没有办法将python脚本作为模块加载到supercollider或oposite?
意味着将库导入我的python代码并使用supercollider功能?
我没有在网上找到太多关于它的信息,所以任何帮助都会很棒.
我刚刚完成了 https://github.com/overtone/overtone/wiki/Getting-Started 这太棒了.
现在,我想做更多.
我是数学/ CS专业,所以我知道什么是傅里叶变换; 但是,我没有音乐背景.我想学习以下内容:
但是,我对从头开始学习这些技能不太感兴趣,并且更感兴趣的是通过clojure /泛音/ supercollider进行一个很好的教程/导游.
[我发现通过调整好东西来学习更快; 而不是为我的第一次运行从头开始构建.]
谢谢!
我想从 SuperCollider 中获得一些乐趣,对我来说乐趣意味着在 shell 中运行命令!
到目前为止,我已经成功地用以下扬声器播放:
RS.scd
s.waitForBoot({
// Play scale once.
x = Pbind(\degree, Pseq([0, 3, 5, 7], 1), \dur, 0.25);
x.play;
});
Run Code Online (Sandbox Code Playgroud)
和:
sclang rs.scd
Run Code Online (Sandbox Code Playgroud)
并保存到https://doc.sccode.org/Guides/Non-Realtime-Synthesis.html中提到的文件中:
惩教署
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;
Run Code Online (Sandbox Code Playgroud)
因此,为了实现我的目标,我缺少:
rs.scd
玩完后如何自动退出?我可以这样做1.wait; 0.exit;
,但这迫使我对 进行硬编码1
,这是正在播放的 4 个 0.25s 音符的长度(以秒为单位)。这1
也是硬编码在 中的nrs.csd
,如果能够将其分解出来那就太好了。所以我想使用相对路径将声音文件加载到缓冲区中.(我将我的东西保留在版本控制之下,并且不想对某人可能在其文件系统上克隆repo的位置做出任何假设.)
所以,我最初假设如果我提供了一个看起来相对的路径,那么SC会把它解释为相对于正在执行的文件的位置:
Buffer.read(s, "Samples/HiHats1.hihat2.wav");
Run Code Online (Sandbox Code Playgroud)
但SC无法找到该文件.所以我抬头asAbsolutePath
试了一下:
Buffer.read(s, "Samples/HiHats1.hihat2.wav".asAbsolutePath);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为SC无法计算出我的相对路径的绝对路径.
"Samples/HiHats1.hihat2.wav".asAbsolutePath
Run Code Online (Sandbox Code Playgroud)
...实际上在我的文件系统上返回一个不存在的位置.欢呼!
任何人都可以就如何实现这个麻烦的任务提出任何建议吗?
[1,2,3].do { /* how to wait 1s here? */ }
我正在学习supercollider.我找到了SimpleNumber.wait函数,但我很快就知道它在"普通"函数中不起作用,只在一些称为Routines的"不同"函数中.
我故意停在那里问这个问题:在someArray.do
构造的每次迭代中有没有一种简单的方法可以暂停一段时间?通过"简单的方式",我的意思是不需要学习十几个新概念并经历范式转换.
说得好:我知道我最终需要学习关于超级滑翔机中的常规,任务和其他排序机制的整本大书,但是现在我只想玩"玛丽有一只小羊羔"并将其称为noob的一天,没有在我能做任何事情之前必须学习所有这些.
这可能吗?