• Audio
  • Realtime audio drivers in Rust

12 days later

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

12 days later
2 months later

Thanks for the interesting write up, it's nice to see how straightforward it is to do SIMD in Rust.

The re­al thing al­so had to ap­ply some tricks to con­trol click­ing.

Tell me about it (I wrote about it, glad to see some common interests 🙂 ).

Some of them even sound kin­da or­gan-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...

      2 months later