#实时 #jack

已删除 rust-jack

Rust的jack绑定

使用旧Rust 2015

0.1.0 2016年10月9日

14 in #jack

MIT 许可证

145KB
3K SLoC

Rust JACK

Build Status

JACK音频连接套件提供优雅的Rust绑定

文档

运行

  • libjack是必需的。请咨询您的包管理器或官方网站。

  • jack应用程序的一般工作流程是启动一个jack守护进程并将客户端连接到它。qjackctl是配置并通过GUI启动jack服务器的一个便捷方式。

运行测试

测试设置有点棘手,因为它依赖于一个Jack服务器。

设置Jack虚拟服务器

测试期望有一个Jack服务器在44.1kHz的采样率和1024个样本的缓冲区大小下运行。

$ jackd -r -ddummy -r44100 -p1024 & # Start the dummy jack server

可能的问题

如果测试失败,可能的问题是时序问题。

  1. Rust并行运行测试,可能Jack服务器无法跟上。将环境变量RUST_TEST_THREADS设置为1。
  2. 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