- Edited
To make Rust on Bela easier to use for everyone, I just published a cargo-generate template on GitHub: https://github.com/l0calh05t/bela-template
Would love to hear reports if it worked well for you or if you ran into any issues!
To make Rust on Bela easier to use for everyone, I just published a cargo-generate template on GitHub: https://github.com/l0calh05t/bela-template
Would love to hear reports if it worked well for you or if you ran into any issues!
Amazing! Thanks for all that you are doing @l0calh05t !
djensenius You're welcome! And thank you so much for the show of appreciation! Blogging and tweeting can feel a lot like talking to a wall when you only have a handful of followers, so thanks for the motivation to continue
And finally getting to the juicy bits: how the new FFI crate is designed and why
https://electric-snow.net/2021/10/08/rust-heart-bela-ffi-api-design/
Part four of my Rust Bela series is out now! This time with some actual sound!
https://electric-snow.net/2021/11/30/rust-heart-bela-midi-and-sound/
Thanks for the interesting write up, it's nice to see how straightforward it is to do SIMD in Rust.
The real thing also had to apply some tricks to control clicking.
Tell me about it (I wrote about it, glad to see some common interests ).
Some of them even sound kinda organ-ish.
I modified an open source Hammond emulator for conducting a study (Ch 4 here) and something that made a big difference in the "realism" (or at least in making the sound passable) was the relative weighing of the partials: in practice the gains are far from unitary. To get an approximation of that I played all the notes on a Hammond C3 with only one drawbar active at any time. With a Matlab script I was able to infer the relative weights. Although clearly these are just an approximation of what happens when they are summed together, the difference it made to the sound was night and day.
giuliomoro Thanks for the interesting write up, it's nice to see how straightforward it is to do SIMD in Rust.
Yeah, and not even a single CPU-specific line of code was necessary. This was my first experiment with Rust’s explicit SIMD support and I was very impressed as well. Since my original post on the topic, the Rust library team actually integrated the portable_simd
crate into the standard library (still nightly only though!)
giuliomoro Tell me about it (I wrote about it, glad to see some common interests
).
Cool! Thanks for the link I was planning to base it on info I find around the web on pages like the Hammond Wiki (such as how the manuals are tapered). And it turns out they actually link your article on the key click page! I may have to pick your brain on some topics when the project is further along
giuliomoro I modified an open source Hammond emulator for conducting a study (Ch 4 here) and something that made a big difference in the "realism" (or at least in making the sound passable) was the relative weighing of the partials: in practice the gains are far from unitary. To get an approximation of that I played all the notes on a Hammond C3 with only one drawbar active at any time. With a Matlab script I was able to infer the relative weights. Although clearly these are just an approximation of what happens when they are summed together, the difference it made to the sound was night and day.
I wonder why I didn’t find that one during my research But for now I’ll stick to basing it on tech specs instead of existing code. If I’m not mistaken, the tapering, interacting with the passive summing via the drawbar transformers and the preamp creates the weighting of the partials (which may vary if multiple keys use the same tone wheel). And as your thesis abstract states: standard MIDI keyboards really aren’t the correct approach for a Hammond simulation! But no time (or skill) for custom hardware
l0calh05t And it turns out they actually link your article on the key click page!
Wow I had no idea. I have been a big fan of that site obviously!
l0calh05t But for now I’ll stick to basing it on tech specs instead of existing code.
that sounds good. In the end I spent perhaps more time understanding their code than it would have taken to implement it from scratch ... they try to be clever about many things that make perhaps sense in a VST context but not so much in the context of an embedded instrument...
After a longish winter break, I finally got around to working on my organ project again: https://electric-snow.net/2022/02/10/rust-heart-bela-making-connections/
Definitely needs some additional clever tricks (I have a few in mind) to stay within the time budget. I did discover that the Linaro toolchain I've been using is too new, though...
l0calh05t is too new
let's see if we get around to releasing image v0.5 with a more modern Debian Buster https://github.com/BelaPlatform/bela-image-builder/releases