{"id":16793751,"url":"https://github.com/thoren-d/timbre","last_synced_at":"2025-03-22T01:30:53.633Z","repository":{"id":47612739,"uuid":"287177612","full_name":"thoren-d/timbre","owner":"thoren-d","description":"A Rust audio library designed for composing real-time effects.","archived":false,"fork":false,"pushed_at":"2021-08-21T21:24:52.000Z","size":103,"stargazers_count":17,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-03-18T06:51:27.673Z","etag":null,"topics":["audio","audio-library","audio-processing","game-audio","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoren-d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-13T04:06:09.000Z","updated_at":"2024-05-06T16:46:54.000Z","dependencies_parsed_at":"2022-09-26T20:40:38.509Z","dependency_job_id":null,"html_url":"https://github.com/thoren-d/timbre","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoren-d%2Ftimbre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoren-d%2Ftimbre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoren-d%2Ftimbre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoren-d%2Ftimbre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoren-d","download_url":"https://codeload.github.com/thoren-d/timbre/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244893361,"owners_count":20527581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-library","audio-processing","game-audio","rust"],"created_at":"2024-10-13T08:50:12.738Z","updated_at":"2025-03-22T01:30:53.313Z","avatar_url":"https://github.com/thoren-d.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"timbre\n======\n\n[![Crates.io](https://img.shields.io/crates/v/timbre)](https://crates.io/crates/timbre)\n[![Documentation](https://docs.rs/timbre/badge.svg)](https://docs.rs/timbre/)\n![GitHub](https://img.shields.io/github/license/thoren-d/timbre)\n![CI](https://github.com/thoren-d/timbre/workflows/CI/badge.svg?branch=develop)\n\ntimbre is an audio library designed for composing real-time effects.\n\nTimbre is designed to establish a common interface and a decent-sized\nlibrary of effects and decoders for playing audio in real time. It is aimed\nat eventually providing most of the audio functionality needed for game\nprogramming, but should be flexible enough for other applications as well.\n\n# Example\n\n```rust\nfn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    # std::env::set_var(\"SDL_AUDIODRIVER\", \"dummy\");\n    use std::time::Duration;\n    use timbre::prelude::*;\n\n    // SDL setup.\n    let sdl = sdl2::init()?;\n    let audio = sdl.audio()?;\n\n    // Inputs\n    let mut microphone = timbre::drivers::Sdl2Input::new(\u0026audio)?;\n    microphone.resume();\n    let music = timbre::decoders::WavDecoder::from_file(\"./assets/music-stereo-f32.wav\")?;\n\n    // Apply effects\n    let microphone = timbre::effects::Echo::new(microphone.source(),\n            Duration::from_secs_f32(0.5), 0.6);\n    let music = timbre::effects::LowPass::new(music, 200.0);\n\n    // Mix them together\n    let mut mixer = timbre::effects::BasicMixer::new();\n    mixer.add_source(microphone.into_shared());\n    mixer.add_source(music.into_shared());\n\n    // Output\n    let mut speaker = timbre::drivers::Sdl2Output::new(\u0026audio)?;\n    speaker.set_source(mixer.into_shared());\n    speaker.resume();\n\n    // std::thread::sleep(Duration::from_secs_f32(120.0));\n    Ok(())\n}\n```\n\n# What's new in 0.3?\n\n* Functions that can fail now return Result.\n* New Error type.\n\n# Roadmap\n\n## 0.4\n\n* Make effects generic to reduce number of `Arc\u003cMutex\u003c...\u003e\u003e`.\n* Make effects more mutable; give access to their source.\n\n## 0.5\n\n* Introduce 3D spatialization effect.\n* Add Pan effect for stereo sources.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoren-d%2Ftimbre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoren-d%2Ftimbre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoren-d%2Ftimbre/lists"}