摇篮曲 (Lullaby) 是一个 Swift 音频合成框架,支持 macOS 和 Linux!它的灵感来自于其他音频环境,例如 FAUST、SuperCollider、Max 以及一篇名为 “Swift 中的函数式信号处理” 的文章。
目前,它尚未达到可以用于生产的程度,但我很想知道您对此的看法!
//...
dependencies: [
// ...
.package(url: "https://github.com/jtodaone/Lullaby.git", from: "0.2.0")
],
targets: [
.executableTarget(
// ...
dependencies: [
.product(name: "Lullaby", package: "Lullaby"),
.product(name: "LullabyMusic", package: "Lullaby"),
.product(name: "LullabyMiniAudioEngine", package: "Lullaby")
]
)
]
//...
import Lullaby
import LullabyMusic
import LullabyMiniAudioEngine
func sineTest() async throws {
let value = Value(value: 440)
let carrier = await sine(frequency: value.output)
let task = Task {
for i in twelveToneEqualTemperamentTuning.pitches {
await value.setValue(Sample(i * 440))
await Task.sleep(seconds: 0.5)
}
return
}
let engine = try await MiniAudioEngine()
engine.setOutput(to: carrier)
try engine.prepare()
try engine.start()
await task.value
try engine.stop()
}
let task = Task {
try await sineTest()
task.cancel()
}
while !task.isCancelled {}
源代码中使用了 SoundIO,它是 libsoundio 的 Swift 绑定,但它将被弃用,取而代之的是 miniaudio。
内部使用 miniaudio 来处理音频 I/O。
Lullaby 遵循 MIT 许可证。您不必这样做,但如果您使用了 Lullaby,请告知我,我将不胜感激!
已在运行 Raspberry Pi OS Bullseye 和 Ubuntu 22.04 LTS 的 Raspberry Pi 4B 上进行了测试。理论上,它也应该可以在其他平台上工作。但我无法进行测试。如果它无法工作,请提交一个 issue。↩