首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SuperCollider: RecordNRT呈现错误的持续时间

SuperCollider: RecordNRT呈现错误的持续时间
EN

Stack Overflow用户
提问于 2015-06-18 12:50:35
回答 1查看 85关注 0票数 0

我想用RecordNRT呈现一个声音序列。它已经工作了,但是呈现文件的持续时间太短了。

代码语言:javascript
复制
    var p;

    [\BPM, MasterSequencer.instance.globalBPM].postln;
    [\BARS, this.bars].postln;

    this.sequenceDuration = ((60 / MasterSequencer.instance.globalBPM) * 4) * this.bars;
    [\duration, this.sequenceDuration].postln;

    SynthDef(\sampler, { |out, buffer, rate=1, amp|
        var snd = PlayBuf.ar(2, buffer, BufRateScale.kr(buffer)*rate, doneAction:2);
        Out.ar(0, snd * amp)
    }).store;

    p = Pbind(
        \instrument,\sampler,
        \rate, this.slider2.value,
        \buffer, this.id,
        \dur, (1 / this.steps) * 4,
        \amp, Pseq(binarySequence) * this.slider1.value,
    ).asScore(this.sequenceDuration);

    p = p.score.insert(1, [0, ["/b_allocRead", this.id, this.samplePath, 0, -1]]);
    p.postln;
    Dialog.savePanel({ |path,score|
        var header = path.basename.split($.);
        if(header.size == 1){
            header = "WAV";
            path = path ++ ".wav";
        }{
            header = header.last;
        };
        if(header == "aif"){ header = "AIFF" };
        if(header == "aiff"){ header = "AIFF" };
        if(header == "wav"){ header = "WAV" };

        Score.recordNRT(
            p,
            path.dirname +/+ path.basename ++ ".osc", path,
            headerFormat:header,
            duration: this.sequenceDuration
        );

我想this.sequenceDuration=(60/BPM)*4*bars的计算是对的,this.sequenceDuration=(4*bars)/(BPM/60)也会这么做。因此,imput this.sequenceDuration与输出文件的持续时间不匹配。

我不知道会有什么问题。我检查持续时间,BPM和条子,通过张贴他们之前。我发布了持续时间,一切似乎都是正确的。呈现完成和文件,它没有正确的持续时间。

  • bars=4 BPM=70 _should文件的长度为13.71秒,但长度为11.71秒。
  • bars=8 BPM=70 _should文件的长度为27.42秒,但长度为23.43秒。
  • 使用bars=4 BPM=140的文件应该是06.85秒,但长度是02.94秒。
  • 使用bars=8 BPM=140的文件应该是13.71秒,但文件的长度是05.87秒。
  • 使用bars=4 BPM=120的文件应该是08.00秒,但长度是04.00秒。
  • 使用bars=8 BPM=120的文件应该是16.00秒,但长度是08.00秒。
  • 使用bars=4 BPM=150的文件应该是06.40秒,但长度是02.56秒。
  • 使用bars=8 BPM=150的文件应该是12.80秒,但长度是05.12秒。
EN

回答 1

Stack Overflow用户

发布于 2015-06-19 13:28:50

您可能会看到在即将发布的3.7版本中修复了一个错误,在这个版本中,最后一块音频示例未能写入磁盘。解决办法是2015年3月28日在此:

https://github.com/supercollider/supercollider/commit/73f779e

3.7还没有发布,但您可以从源代码构建或等待预发行版。

一个明显的解决办法是使用比需要更长的文件,然后截断它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30915858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档