Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Tracking issue for audio engine rewrite

未关闭
#901 16 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
12/100
Issue 类型
重构
描述清晰度
需要澄清
活跃度
活跃
技术栈
rust

调研方向

This is a multi-phase tracking issue, not a single task, and it names no source files or tests. Start by reading the linked pull requests #903, #904, #905, #910, #911 and #913 and the rodio-experiments repository to see which phase is still open. Any newcomer change would need to be split out as its own issue first, so ask a maintainer which unchecked item is safe to take.

由索引模型根据 Issue 内容生成。

描述

This tracks landing the changes from https://github.com/RustAudio/rodio-experiments into Rodio. This involves integrating the new rubato resampler and specializing it where possible.

Background:

For a long time we've had mysterious bugs round spans. Spans allow a source to change parameters (sample-rate and channel count) during playback. We've concluded that spans where a mistake as correctly handling audio that at any point is:

  • really hard to do correctly.
  • impossible to optimize well leading to bad performance.

Most audio should be converted to the playback parameters at the very start of the audio pipeline. To make this easier we are adding two new source types. Both do not allow parameters to change, one fixes this at runtime the other needs the parameters known at compile time.

Approach

This is a large overhaul at around 7700 lines of code (ignoring docs & comments). To keep things reviewable we'll do this in reasonably sized PRs of around 500 lines. Help is greatly appreciated!

Phase one

Implementation in: #903 and #904

  • land const source
  • remove experimental from fixed source
  • land try-into adaptors/convertors between sources (others in phase two)
  • note overhaul in Readme
  • land most basic generators
Phase two

Implementation in: #905 and #910

  • channel conversions
  • resampler and integrate with rubato
Phase three:

Implementation in: #911

  • land one effect and pure_effect! macro
  • land all other effect
  • deprecation warning on effects in DynamicSource that are not sound
Phase four
  • add new combinators [a, b, c].mixed() etc.
  • add all generators (noise etc, function gen. etc)
Phase five
  • rename current source to dynamic source
  • add Source = DynamicSource type alias with deprecation warning
  • Remove placeholders
Phase six
  • port all examples
  • re-add controls to automatic gain control
  • rewrite Rodio main docs
  • update porting guide (needs to be really nice this time :3 )
  • prepare and make announcements

Small chores

Open Questions

  • Do we deprecate Source in favor of DynamicSource?
  • Do cons sources and the ConstSource trait get default generics?
主要语言
Rust
星标
2.5k
派生
338
平均合并
1 天 3 小时
30 天内合并 PR
1

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

RustAudio/rodio 的其他 Issue

查看 RustAudio/rodio 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。