首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了使用封套之外,还有什么方法可以避免在停止/启动AKOscillator时出现振幅滴答声吗?

除了使用封套之外,还有什么方法可以避免在停止/启动AKOscillator时出现振幅滴答声吗?
EN

Stack Overflow用户
提问于 2019-10-03 05:44:53
回答 2查看 114关注 0票数 1

如果我只将AKOscillator用于特定目的,我是否应该在启动/停止振荡器时使用包络类来避免振幅滴答声?或者还有其他更简单的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-10-04 02:41:47

一种“轻”方法是将参数ramp设置为非零值,将振幅从零开始,然后设置振幅。但是,所有参数的渐变都是相同的值,因此,根据您是否希望在不同的渐变上更改频率,您可能需要在渐变达到所需的振幅后再次更改渐变。

下面是一个示例游乐场:

代码语言:javascript
复制
import AudioKitPlaygrounds
import AudioKit

let oscillator = AKOscillator(waveform: AKTable(.sine), amplitude: 0)
oscillator.rampDuration = 0.2

AudioKit.output = oscillator
try AudioKit.start()

oscillator.start()
oscillator.amplitude = 1.0

sleep(1)
oscillator.amplitude = 0
票数 1
EN

Stack Overflow用户

发布于 2019-10-09 21:38:36

我用了你的代码,它没有帮助,但我发现这个‘点击’出现在最后,当振荡器停止。因此,即使rampDuration是0.0,在开头也没有‘单击’,唯一的‘单击’在结尾。以下是我的代码(它在IOS应用程序中):

类ViewController: UIViewController {

代码语言:javascript
复制
var osc = AKOscillator(waveform: AKTable(.sine), amplitude: 0)

@IBAction func buttonTapped(_ sender: UIButton) {    //when button in App is pressed

    osc.rampDuration = 0.2
    AudioKit.output = osc
    osc.frequency = Double.random(in: 100.0...1000.0)

    try? AudioKit.start()

    osc.start()
    osc.amplitude = 0.5
    osc.rampDuration = 0.0 //to avoid frequency glide effect

    sleep(1)

    //osc.rampDuration - I tried to change rampDuration before oscillator stop, but it 
    //did not help      

    osc.stop()     //here is amplitude 'click' appears

    try? AudioKit.stop()
    }

那么,就像我假设我必须使用信封一样?

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

https://stackoverflow.com/questions/58209753

复制
相关文章

相似问题

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