首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AKMIDISampler存在时来自AKMicrophone的连续正弦波

AKMIDISampler存在时来自AKMicrophone的连续正弦波
EN

Stack Overflow用户
提问于 2018-11-30 18:50:37
回答 1查看 172关注 0票数 1

当有一个初始化的AKMIDISampler时,我在我的项目中使用AKMicrophone时遇到了问题。当在采样器上调用“play”时,除了正确播放木版样本之外,第一次“播放”被称为恒定的正弦波开始播放--它永远不会停止。

我在下面最小数量的代码中复制了这个问题。初始化类时会发生问题,然后调用playTestSample()。

请注意,如果与AKMicrophone相关的代码都是静音的,那么AKMIDISampler就会很好地发挥作用,而目前困扰我梦想的正弦波也不会发生。

(我尝试使用AKSampler(),只是为了看看那里是否存在问题,但我一直无法从中得到任何声音)。

Fyi:我有“应用程序播放音频或流音频/视频使用AirPlay”在info.plist中的“必需的背景模式”-这是已知的解决另一个正弦波问题。

非常感谢您的帮助。

顺便说一句: AudioKit很棒,在这个项目上得到了很大的帮助!:^)

AK 4.5.4 Xcode 10.1

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

class AudioKitTESTManager {

    var mixer = AKMixer()

    var sampler = AKMIDISampler()

    var mic = AKMicrophone()
    var micMixer = AKMixer()
    var micBooster = AKBooster()

    init() {

        mixer = AKMixer(sampler, micBooster)

        do {
            let woodblock = try AKAudioFile(readFileName: RhythmGameConfig.woodblockSoundName)

            try sampler.loadAudioFiles([woodblock])

        } catch {
            print("Error loading audio files into sampler")
        }


        micMixer = AKMixer(mic)

        micBooster = AKBooster(micMixer)
        micBooster.gain = 0.0


        AudioKit.output = mixer

        AKSettings.playbackWhileMuted = true
        AKSettings.defaultToSpeaker = true
        AKSettings.sampleRate = 44100

        do {
            print("Attempting to start AudioKit")
            try AudioKit.start()
        } catch {
            AKLog("AudioKit did not start!")
        }
    }

    func playTestSample() {
        // You hear the sample and a continuous sine wave starts playing through the samplerMixer
        try? sampler.play(noteNumber: 60, velocity: 90, channel: 1)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-01 00:01:47

惠尤。我相信我找到了解决办法。也许它能帮到别人?

似乎在AudioKit.start()修复了正弦波恐怖之后,将文件加载到采样器中!

代码语言:javascript
复制
//..
    do {
        print("Attempting to start AudioKit")
        try AudioKit.start()
    } catch {
        AKLog("AudioKit did not start!")
    }


    do {
        let woodblock = try AKAudioFile(readFileName: RhythmGameConfig.woodblockSoundName)

        try sampler.loadAudioFiles([woodblock])

    } catch {
        print("Error loading audio files into sampler")
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53563255

复制
相关文章

相似问题

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