Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Tracking issue for audio engine rewrite

Aperta
#901 16 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
12/100
Tipo di issue
Refactoring
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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?
Lingua principale
Rust
Stelle
2.5k
Fork
338
Merge medio
1g 3h
PR unite (30g)
1

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di RustAudio/rodio

Tutte le issue di RustAudio/rodio

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.