{"id":13822760,"url":"https://github.com/PieterPenninckx/rsynth","last_synced_at":"2025-05-16T17:31:54.379Z","repository":{"id":47169023,"uuid":"93711857","full_name":"PieterPenninckx/rsynth","owner":"PieterPenninckx","description":"A crate for developing audio plugins and applications in Rust.","archived":true,"fork":false,"pushed_at":"2023-10-28T12:27:05.000Z","size":5169,"stargazers_count":106,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-06T20:05:30.077Z","etag":null,"topics":["audio-effects","audio-plugins","jack","rust","synthesizers"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PieterPenninckx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-BSD.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-06-08T05:47:46.000Z","updated_at":"2024-05-31T08:04:59.000Z","dependencies_parsed_at":"2024-01-18T04:08:28.005Z","dependency_job_id":"327e369d-fc09-4258-a049-8e7e9708b950","html_url":"https://github.com/PieterPenninckx/rsynth","commit_stats":{"total_commits":252,"total_committers":5,"mean_commits":50.4,"dds":0.5992063492063492,"last_synced_commit":"52656e3974fc9adffda07edd014537cc9646b2c2"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PieterPenninckx%2Frsynth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PieterPenninckx%2Frsynth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PieterPenninckx%2Frsynth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PieterPenninckx%2Frsynth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PieterPenninckx","download_url":"https://codeload.github.com/PieterPenninckx/rsynth/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224023982,"owners_count":17243044,"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-effects","audio-plugins","jack","rust","synthesizers"],"created_at":"2024-08-04T08:02:16.129Z","updated_at":"2024-11-19T23:31:07.234Z","avatar_url":"https://github.com/PieterPenninckx.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# rsynth\n\nA deprecated API abstraction for API's for audio plugins and applications.\nYou could use it to write real-time audio effects, software synthesizers, ... and target different platforms\n(jack, offline processing, ...).\n\n## This crate has been deprecated\nThis crate has been deprecated. See [this blog post](https://nckx.be/blog/rsynth-deprecation/) for more information.\n\n### What should I do if I use this crate?\nAt the time of writing, here are some options\n* Use [cpal](https://crates.io/crates/cpal) if you want to \"just\" play audio on various platforms.\n* Use [nih-plug](https://github.com/robbert-vdh/nih-plug) if this is a good solution for you.\n* Write the plugin as a “core” library (a Rust crate or module). This is anyhow something I'd recommend, also if you use [`nih-plug`](https://github.com/robbert-vdh/nih-plug), for instance. Per plugin standard that you want to support, create a separate crate that depends both on the “core” library and on an a library that is dedicated to that particular plugin standard (such as the [`lv2`](https://crates.io/crates/lv2) crate and the [`clack`](https://github.com/prokopyl/clack) crate (not (yet?) on crates.io). \n\n## Old documentation\n### Feature matrix\n\nWe focus on API's that are typically used for audio effects and software synthesizers.\nIf you want to \"just\" play audio on various platforms, [cpal](https://crates.io/crates/cpal) may\nbe better suited for you.\n\n| feature |  VST 2.4 via [`vst-rs`]      | Jack via [`jack`] | Offline audio rendering |\n|---------|:------------------------------:|:-----------------:|:-----------------------:|\n| Full duplex audio input and output |  ✓  |        ✓          |           ✓             |\n| Midi input                         |  ✓  |        ✓          |           ✓             |\n| Midi output                        | N/A |        ✓          |           ✘             |\n| Sample accurate midi               | N/A |        ✓          |           ✓             |\n| Multiple midi inputs and outputs   | N/A |        ✓          |           ✘             |\n| Sampling frequency change          |  ✓  |        ✘          |          N/A            |\n| Signal stopping the application    | N/A |        ✓          |           ✓             |\n| Jack-specific events               | N/A |        ✘          |          N/A            |\n| Basic meta-data                    |  ✓  |        ✓          |          N/A            |\n| Access to the underlying host      |  ✓  |        ✓          |          N/A            |\n| Parameter changes                  |  ✘  |        ✘          |           ✘             |\n| GUI support                        |  ✘  |        ✘          |           ✘             |\n\n#### Feature flags\n\nMany features are behind feature flags: \n* `all`: all the features below\n  * `backend-jack`: create standalone `jack` applications.\n  * `backend-vst`: create VST 2.4 plugins.\n  * `backend-combined-all`: all the \"combined\" backends for offline processing and testing. This always include in-memory dummy and testing backends.\n    * `backend-combined-hound`: read and write `.wav` files with the `hound` crate\n    * `backend-combined-wav-0-6`: read and write `.wav` files with the `wav` crate\n    * `backend-combined-midly-0-5`: read and write `.mid` files with the `midly` crate \n  * `rsor-0-1`: add support for using the `rsor` crate for some methods (if you prefer `rsor` over `vecstorage`)\n\n### Documentation\n\nThe API documentation can be found\n* [on docs.rs](https://docs.rs/rsynth/) for the version that is distributed via crates.io.\n* [on GitHub pages](https://pieterpenninckx.github.io/rsynth/rsynth) for the documentation of the master branch\n* on your local machine after running `cargo rustdoc --features all`\n\n### Philosophy and design\n`rsynth` presents itself as a library, rather than a framework. \nRather than trying to solve every problem (which is not feasible for the small team), \n`rsynth` is designed to be easy to combine with other crates for specific tasks, such as\n* [`polyphony`](https://crates.io/crates/polyphony): the name says it all\n* [`wmidi`](https://crates.io/crates/wmidi): encode and decode midi messages in real-time\n* [`midi-consts`](https://crates.io/crates/midi-consts): constants for low-level handling of midi data\n* [`rtrb`](crates.io/crates/rtrb), a realtime-safe single-producer single-consumer ring buffer that can be used to communicate between threads.\n\nBackground on the design can be found in the [design.md](design.md) document.\n\n### Examples\nThere are full examples in \n[the examples folder in the source code](https://github.com/PieterPenninckx/rsynth/tree/master/examples).\n\n## Current State\nThis crate has been deprecated. See [this blog post](https://nckx.be/blog/rsynth-deprecation/) for more information.\n\n# License \n\nThe source code of `rsynth` is licensed under the MIT/BSD-3 License.\n\nNote that in order to use `rsynth` in combination with other crates (libraries), the combined work needs\nto comply with the license of that crate as well. In particular, the following optional dependencies may require your attention:\n* the `hound` crate (behind the `backend-combined-hound` feature) uses the Apache license, see [its readme](https://github.com/ruuda/hound#license) for more details\n* the `wav` crate (behind the `backend-combined-wav` feature) uses the LGPL license\n\n[`vst-rs`]: https://github.com/RustAudio/vst-rs\n[`jack`]:https://crates.io/crates/jack\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPieterPenninckx%2Frsynth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPieterPenninckx%2Frsynth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPieterPenninckx%2Frsynth/lists"}