OSC消息

时间:2019-05-14 18:05:32

标签: supercollider

我是SC和整个音乐编程领域的新手。 我已经完成了一个python应用程序,该应用程序读取文本并通过OSC逐字发送给SC。 文字只是重复“ miau”和“ guau”两个词,以供娱乐和尝试。

另一种奇怪的情况是,在SC控制台上,我得到的同一个单词是文本和终端(Python打印每个单词)的三倍。因此,对于txt /终端上的每个“ miau”,我在SC控制台上都会看到“ miau miau miau”。

OSC通讯正常,但是我听不到声音。我已经分别播放了缓冲区,它们正在工作。 播放缓冲区或SynthDef时,我可以听到正在播放的样本,因此我认为问题出在开关上。

s.boot;

~b0 = Buffer.read(s, "/path/to/bd/BT0A0A7.wav")
~b1 =Buffer.read(s, "/path/to/hh/000_hh3closedhh.wav")

~b0.play; 

(
SynthDef.new(\playbuf, {|amp=1, out=0, buf, da=2, rate =1|
var sig;
sig = PlayBuf.ar(2, buf, BufRateScale.kr(buf) * rate, doneAction:da);
sig = sig*amp;
Out.ar(out, sig);
}).add;
)

Synth.new(\playbuf, [\buf, ~b1.bufnum]);

(
OSCdef.new("texto",{
    |msg, time, addr, port|
    msg[1].postln;
    switch(msg[1],
        "miau", {Synth.new(\playbuf, [\buf, ~b1.bufnum])},
        "guau", {Synth.new(\playbuf, [\buf, ~b0.bufnum])}
        );

},
'/supercollider',
)
)

尽管它复制了文本,所以我知道OSC正在运行,但示例将无法播放。 任何提示表示赞赏!

1 个答案:

答案 0 :(得分:0)

只需在开关中使用单引号而不是双引号即可。像这样:

(
OSCdef(\texto,{ |msg|
    switch ( msg[1],
        'miau', { Synth.new(\playbuf, [\buf, ~b1.bufnum] ) },
        'guau', { Synth.new(\playbuf, [\buf, ~b0.bufnum] ) }
    )
}, '/supercollider' )
)

saudações,

吉尔