Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Tracking issue for audio engine rewrite

Abierto
#901 16 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
12/100
Tipo de issue
Refactorización
Claridad
Necesita aclaración
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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?
Lenguaje dominante
Rust
Estrellas
2.5k
Forks
338
Merge medio
1 d 3 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de RustAudio/rodio

Todos los issues de RustAudio/rodio

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.