有人能指出我的Matt Gallagher音色发生器的工作版本吗?
http://www.cocoawithlove.com/assets/objc-era/ToneGenerator.zip
正如马特所说,它还没有更新,显然被更新的API打破了。我更新了我能想出的所需更新,现在它只编译并运行只有弃用警告但它所做的只是在" Play"和"停止"按钮被触摸。我已经浏览了代码并查看了Xcode中的API文档,但这是一个陡峭的学习曲线。我希望有一个工作版本,所以我可以修补它以了解更多。有人更新过吗?还是一个类似的音调发生器?
我尝试使用hotpaw2中的ToneOutputUnit类,调用如下。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let unit = ToneOutputUnit()
unit.toneCount = 64000
unit.setFrequency(1000.0)
unit.setToneVolume(0.5)
unit.startToneForDuration(2.0)
unit.enableSpeaker()
print("ok")
}
}
我可以看到正在调用ToneOutputUnit代码并且正在逐步执行各种功能,但没有产生声音。我也试过打电话给'enableSpeaker'之前' startToneForDuration'但也没有声音。我错过了什么?
答案 0 :(得分:2)
当然Gene De Lisa是对的。 “unit”变量需要在viewDidLoad之外声明,因此不会立即取消分配。另外,“unit.enableSpeaker()”需要在“unit.startToneForDuration(0.5)”之前。然而,即使有这两个变化,我也没有声音。在更多的头部刮擦之后,我在hotpaw2的ToneOutputUnit.swift(在github中)发现了两个缩放错误。
1)在函数startToneForDuration中,“toneCount = Int32(round(time / sampleRate))”行应为“toneCount = Int32(time * sampleRate)”。
2)在函数setToneVolume中,“v0 = vol / 32768.0”行应为“v0 = vol * 32768.0”。
通过这两项更改,它可以正常工作,并产生一个音量和持续时间似乎合理的音调。
@ Hotpaw2:我希望你能在github上更新你的版本。这是一个很好的写作课程,可以帮助其他人。