andrewcsmith / bela-rs Goto Github PK
View Code? Open in Web Editor NEWSafe Rust wrapper for the Bela.io API for realtime audio and sensor feedback
Safe Rust wrapper for the Bela.io API for realtime audio and sensor feedback
Currently, this crate's license is not defined. We should add a LICENSE
file and a license
field to Cargo.toml
. My personal preference would be license = "MIT OR Apache-2.0"
like many/most Rust crates.
As far as I can tell the only committers so far are @andrewcsmith, @padenot, and I. If everyone is ok with it, I could set up a pull request.
While core libbela
support is sufficient for pure audio processing, MIDI and other features require using Bela support libraries. Probably the most important ones are the communication-centric libraries, as the signal processing libraries mostly have crates that serve the same purpose.
Many of these libraries have C++ APIs. In the case of MIDI, there is both a C and a C++ API, resulting in two possible approaches to making bindings:
bela-sys
(some early experiments can be found here: https://github.com/l0calh05t/bela-sys/tree/midi) and wrapping them safely in bela-rs
as done for libbela
(albeit with some complications and lacking some features)cxx
, but this probably requires some additional C++ code as well and I personally have no experience with cxx
yet.No matter which approach is taken, this could feasibly be a separate crate, although I'd prefer to keep the two linked, as otherwise the effort of ensuring that the Xenomai and Bela libs are linked has to be duplicated.
lib.rs
is in the ballpark of 1000 LOC and it would be nice to separate the boilerplate getters/setters from the main file.
UserData is basically all boilerplate...
This declaration is almost certainly unsafe, because it creates a pointer to something that might (but hopefully won't) move. Maybe it would be better to use the !Unpin
/ Pin
API?
Examine the PinBox<T>
constructors to see whether that might be an alternative. Otherwise, it would have to be an immobile stack-allocated object.
This should be possible to run entirely with core
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.