使用旧Rust 2015
0.1.0 |
|
---|
14 in #jack
145KB
3K SLoC
Rust JACK
为JACK音频连接套件提供优雅的Rust绑定
运行
-
libjack
是必需的。请咨询您的包管理器或官方网站。 -
jack应用程序的一般工作流程是启动一个jack守护进程并将客户端连接到它。qjackctl是配置并通过GUI启动jack服务器的一个便捷方式。
运行测试
测试设置有点棘手,因为它依赖于一个Jack服务器。
设置Jack虚拟服务器
测试期望有一个Jack服务器在44.1kHz的采样率和1024个样本的缓冲区大小下运行。
$ jackd -r -ddummy -r44100 -p1024 & # Start the dummy jack server
可能的问题
如果测试失败,可能的问题是时序问题。
- Rust并行运行测试,可能Jack服务器无法跟上。将环境变量
RUST_TEST_THREADS
设置为1。 - 在
test.rs
中增加DEFAULT_SLEEP_TIME
的值。
另一种情况可能是libjack损坏。尝试在libjack和libjack2之间切换(它们有相同的API,而libjack2不一定比libjack新),或使用不同的版本。
运行测试
$ cargo test
"C" & Rust API差异
- "C" API中的字符串长度包括
NULL
字符,而Rust绑定则不包括。一般来说,rust_size(x) = c_size(x) - 1
。 - "C"绑定要求注册函数,而Rust绑定则以特质注册对象。
jack_on_shutdown
已被删除,只使用jack_on_info_shutdown
。- Rust枚举与C枚举
- Rust位标志与用作标志的C整数
- 在Rust绑定中未使用/实现已弃用的Jack函数
进展
基于Jack API主页部分的章节。
待办事项
- 最高优先级:MIDI!!!
- 管理和确定延迟
- 传输和时间基准控制
- 非回调API(可能跳过)
- 读取和写入MIDI数据
- 客户端的会话API。
- 管理对JACK新版本/旧版本的支持
- 启动和控制JACK服务器的API。
-
- 元数据API。
其他待办事项
- 更安全
- 更好的错误报告
- 更好的测试
依赖项
~305KB