我正在尝试结合MicrophoneAnalysis和Recorder示例.它一直在崩溃try recorder.record
.
2018-01-08 21:21:48.507019-0800音乐练习[90266:18761122] [avae] AVAEInternal.h:70:_AVAE_Check:必需条件为false:[AVAEGraphNode.mm:804:CreateRecordingTap:(nullptr == Tap( ))2018-01-08 21:21:48.527443-0800音乐练习[90266:18761122] *由于未捕获的异常'com.apple.coreaudio.avfaudio'终止应用程序,原因:'必需条件为false:nullptr == Tap()'*第一次抛出调用堆栈:
// -----------
import AudioKit
import AudioKitUI
import UIKit
class SecondViewController: UIViewController {
@IBOutlet private var inputPlot: AKNodeOutputPlot!
@IBOutlet weak var tempViewForRecordingAndPlay: UIView!
@IBOutlet weak var outputWavePlot: AKOutputWaveformPlot!
// for microphone Analysis
@IBOutlet weak var frequencyLabel: UILabel!
@IBOutlet weak var amplitudeLabel: UILabel!
@IBOutlet weak var noteNameWithSharpsLabel: UILabel!
@IBOutlet weak var noteNameWithFlatsLabel: UILabel!
@IBOutlet private var audioInputPlot: EZAudioPlot!
var micMixer: AKMixer!
var recorder: AKNodeRecorder!
var player: …
Run Code Online (Sandbox Code Playgroud) AudioKit,macOS:
当我执行 Mixer.addInput(myAudioPlayer) 时,程序输出以下消息:
2021-09-16 11:41:44.578038+0200 ShowTime[16140:1611137] 投掷-10878
...无数次。
你知道-10878是什么以及如何修复它吗?
我也有兴趣了解“ShowTime[16140:1611137]”的含义。我可以使用这些数字来跟踪我的程序失败的位置吗?
谢谢。
我有一个示例应用程序,它使用AudioKit来录制音频并显示该音频数据的波形.此示例应用程序有两个viewControllers,其中根vc是一个空白页面,其中包含一个按钮,用户可以将该用户带到录音页面.
出于某种原因,仅在iPhone X(iOS 11.4.1)上,在录制音频时,如果我点击导航栏上的后退按钮(左上角),然后尝试再次录制,应用程序将崩溃.
特别是当录音机的方法appendDataFromBufferList: withBufferSize:
调用时,应用程序似乎崩溃ExtAudioFileWrite(self.info->extAudioFileRef, bufferSize, bufferList)
.控制台中打印的错误消息是:
testAudioCrash(1312,0x16e203000)malloc:***对象0x109803a00的错误:释放对象的校验和不正确 - 对象可能在被释放后被修改. ***在malloc_error_break中设置断点以进行调试
我经历过僵尸剖析,泄漏剖析,逐步完成逻辑和堆栈,但我似乎无法弄清楚为什么会发生这种情况.
下面我提供了测试应用程序的代码以及堆栈和控制台输出的屏幕截图.任何帮助弄清楚为什么会崩溃将非常感激.不幸的是,这次崩溃也不是100%可重复的事实让我对它更加模糊.
代码注释如下:.h文件中没有自定义代码,所以我没有提供.每个视图控制器都有xib文件,其中包含UI组件.它们非常简单,所以我没有提供有关这些的信息,虽然我没有任何问题提供任何信息,任何人都要求.如果有人认为有必要,我也可以压缩项目并分享.
Repro步骤:1)启动应用2)点击录制音频按钮3)点击录制按钮4)点击导航栏上的按钮
5)重复步骤2-4直到发生崩溃
AppDelegate.m代码:
#import "AppDelegate.h"
#import "testViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
testViewController* rootVC = [[testViewController alloc] initWithNibName: @"testViewController" bundle: NSBundle.mainBundle];
UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController: rootVC];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication …
Run Code Online (Sandbox Code Playgroud) 我正在使用两个应用程序模块:
1)具有此audioSession设置的录制模块:
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setPreferredIOBufferDuration(0.05)
try self.audioSession.setActive(true)
Run Code Online (Sandbox Code Playgroud)
2)具有此audioSession设置的录制模块:
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
try audioSession.setMode(AVAudioSessionModeDefault)
try self.audioSession.setActive(true)
Run Code Online (Sandbox Code Playgroud)
对于从1-> 2和2-1的每个段落,我有一个 try self.audioSession.setActive(false)
如果我从1)模块传递到2)或重做1)一切正常.比起2)我来1)我得到这个错误try self.audioSession.setActive(true)
这是错误:
ERROR: [0x16e10b000] >avae> AVAudioIONodeImpl.mm:365:
_GetHWFormat: required condition is false: hwFormat
Run Code Online (Sandbox Code Playgroud)
这个错误与什么有关?我无法找到Apple iOS文档的任何帮助来了解问题所在.
有人有任何提示吗?
我在一个类上使用AudioKit的AKMIDIListener协议来监听MIDI消息.这适用于标准消息,例如Note On
,但SysEx
消息不会通过.
func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
NSLog("Note On \(noteNumber), \(velocity), \(channel)") // works perfectly
}
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
NSLog("SysEx \(data)") // never triggers
// More code to handle the messages...
}
Run Code Online (Sandbox Code Playgroud)
SysEx消息从外部硬件或测试软件发送.我已经使用MIDI监控应用程序来确保正确发送消息,但在我的应用程序中它们没有触发receivedMIDISystemCommand
.
接收我缺少的SysEx消息是否还需要其他步骤?
提前感谢任何线索.
我正在尝试构建一个从midi文件中呈现音符的音序器.
目前我正在使用AudioKit进行音乐数据处理.想知道如何使用AudioKit从midi文件中获取音符数据/事件.
我曾尝试使用AKSequencer并输出到AKMIDINode来监听MIDI事件,但似乎无法从中得到任何东西.
class CustomMIDINode: AKMIDINode {
override init(node: AKPolyphonicNode) {
print("Node create") // OK
super.init(node: node)
}
func receivedMIDINoteOff(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
print("midi note off") // Not printed
}
func receivedMIDISetupChange() {
print("midi setup changed") // Not printed
}
override func receivedMIDINoteOn(_ noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
print("receivedMIDINoteOn") // Not printed
}
}
func setupSynth() {
oscBank.attackDuration = 0.05
oscBank.decayDuration = 0.1
oscBank.sustainLevel = 0.1
oscBank.releaseDuration = 0.1
}
let seq = AKSequencer(filename: "music") …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用适用于iOS的AudioKit库构建简单的频谱分析仪:
黄线最大,红线当前-每秒更改10次。
问题是,前几个频率点的幅度值太高,我认为这是错误的。
代码(我删除了与AudioKit不相关的部分):
AppDelegate初始化:
mic = AKMicrophone()
fftTap = AKFFTTap.init(mic!)
tracker = AKFrequencyTracker.init(mic)
let silence = AKBooster(tracker, gain: 0)
AudioKit.output = silence
try! AudioKit.start()
Run Code Online (Sandbox Code Playgroud)
ViewController:
let micSampleRate = 44100
var tracker: AKFrequencyTracker!
var fftTap: AKFFTTap?
var maxValues = [Double](repeating: -400, count: 255)
let timeInterval = 0.1
var isPaused = true
let FFT_SIZE = 510
override func viewDidLoad() {
super.viewDidLoad()
tracker = (UIApplication.shared.delegate as! AppDelegate).tracker
fftTap = (UIApplication.shared.delegate as! AppDelegate).fftTap
let freqPreparedValue = self.micSampleRate * 0.5 / self.FFT_SIZE
Timer.scheduledTimer(withTimeInterval: timeInterval, …
Run Code Online (Sandbox Code Playgroud) 我有一个大型项目The Amazing Audio Engine 2
.我一直在努力让Inter-App-Audio集成,并希望迁移到AudioKit 3.
挣扎,意思是,它集成了,但是一旦我选择它作为生成器,渲染就会停止,引擎处于禁用状态.
与音频系统有哪些主要区别?TAAE2使用模块,每个模块都有一个渲染块,可以从渲染堆栈中推送和弹出音频缓冲区.
AudioKit如何呈现音频?在高级别上,将AEModules迁移到Audiokit对象会涉及什么?
我有音频文件.我对它做了一些影响
let pitchshifter = AKPitchShifter(self.audioPlayer)
pitchshifter.shift = 10
AudioKit.output = pitchshifter
Run Code Online (Sandbox Code Playgroud)
如果我在应用程序中播放它,它可以工作,但我想将其保存为新文件,以便稍后将其用作avasset.如何实施?
我尝试使用AKNodeRecorder,但这会产生空音轨:
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded")
let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)!
let tape = try! AKAudioFile(forWriting: url, settings: format.settings)
let mixer = AKMixer(self.audioPlayer!, pitchshifter)
AudioKit.output = mixer
self.recorder = try! AKNodeRecorder(node: mixer, file: tape)
try? AudioKit.start()
self.audioPlayer?.play()
self.audioPlayer?.completionHandler = {
self.recorder?.stop()
self.selectedAudioURL = tape.url
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了renderToFile方法 - 它也没有工作,我得到了这个错误
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded.m4a")
let format = AVAudioFormat(commonFormat: …
Run Code Online (Sandbox Code Playgroud) 我更新到了最新版本的Audiokit 4.5,现在正在打印要收听麦克风振幅的Audiokit类:55:控制台上的EXCEPTION(-1):“”无限。该应用程序不会崩溃或发生任何事情。
我的应用程序是一个使用GPUImage库记录的摄像机应用程序。仅当由于某种原因开始录制时,日志才会显示。
在此之上。我的onAmplitudeUpdate回调方法不再输出任何内容,仅输出0.0个值。在更新Audiokit之前没有发生这种情况。这里有什么想法吗?
这是我的课:
// G8Audiokit.swift
// GenerateToolkit
//
// Created by Omar Juarez Ortiz on 2017-08-03.
// Copyright © 2017 All rights reserved.
//
import Foundation
import AudioKit
class G8Audiokit{
//Variables for Audio audioAnalysis
var microphone: AKMicrophone! // Device Microphone
var amplitudeTracker: AKAmplitudeTracker! // Tracks the amplitude of the microphone
var signalBooster: AKBooster! // boosts the signal
var audioAnalysisTimer: Timer? // Continuously calls audioAnalysis function
let amplitudeBuffSize = 10 // Smaller buffer will yield more amplitude …
Run Code Online (Sandbox Code Playgroud)