摇篮曲 (Lullaby)

For Swift 5.5+

摇篮曲 (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 {}

未来计划

致谢

脚注

  1. 已在运行 Raspberry Pi OS Bullseye 和 Ubuntu 22.04 LTS 的 Raspberry Pi 4B 上进行了测试。理论上,它也应该可以在其他平台上工作。但我无法进行测试。如果它无法工作,请提交一个 issue。