Rust

Rusty instruments

Building Digital Musical Instruments with Rust and friends
K.3.401
Benedict Gaster
This talk will introduce the Muses project, which applies programming language theory and practice, physical computing, networking, and musicial theory to design and implementation of Digital Musical Instruments. Rust is a key ingredient in the Muses project, providing a robust and performant foundation for cross platform, desktop, and embedded system development. The talk will give a brief introdution to Muses project as a whole and then focus on the use of Rust in developing a selection of very different components in the system and its benefits for these wildy varing use cases. Demos of the Digitial Musical Instruments with Rust at their heart will shown through out the talk.
Controller and gesture interaction with audio and/or visual media is today ubiquitous, requiring the development of intuitive software solutions for interaction design. Designing and building these interfaces often require extensive domain expertise in audio and visual media creation, e.g. the musician, but additionally in engineering and software development. In this talk we focus on custom controller-based interactive systems for sound and musical performance, with a focus on an intuitive and simple design process that is accessible to artists. A large part of the software developed for these systems is low-level system code, where direct access to hardware and understandable performance are hard requirements for these systems. Historically, these systems are written in C/C++ and in the case of embedded systems C is still the language of choice. With the emergence of the system programming language Rust an alternative for developing these systems is now with us with its support for high-level features such as traits, type inference, pattern matching, and of course it's affine based type system for pointers. This talk will introduce the Muses project, which applies programming language theory and practice, physical computing, networking, and musical theory to design and implementation of Digital Musical Instruments. Rust is a key ingredient in the Muses project, providing a robust and performant foundation for cross platform, desktop, and embedded system development. A high-level overview of the schedule is: Introduction to the Muses project 100 foot view of the Muses architecture Experience using Rust for audio and interface development Demonstration The demonstration will include the following physical components: Custom interface Hardware encoders + arcade buttons Sensel touch interface with custom interface STM32 based embedded hardware platform, all running Rust Raspberry PI for Sound Pure Data for sound synthesis Rust based driver for communicating with custom hardware Rust based Open Sound Control (OSC) server for custom control messages The framework also includes an approach to automatically generating interfaces from a DSL for SVG interfaces, written largely in Haskell, but with a tessellation pipeline written in Rust. However, while this will be mentioned in passing it is not the intention of this talk to cover this aspect of the system in detail. (For more information on this, see the provided link for the project website and associated papers, also linked from the site.) Expected prior knowledge / intended audience Knowledge of programming will be expected and prior use of C/C++, Rust, or other systems programming language would be useful. Audio topics will be introduced through out the talk and it is not expected that audience members have a musical background. Speaker bio Dr Benedict R. Gaster is an Associate Professor at University of West of England, he is the director of the Computer Science Research Centre, which within he also leads the Physical Computing group. He research focuses on the design embedded platforms for musical expression and more generally the IoT, he is the co-founder of Bristol LoRaWAN a low power wide area network for Bristol city, is the technical lead for city wide project on city pollution monitoring for communities, having developed UWE Sense a hardware platform for cheap sensing. Along with his PhD students and in collaboration with UWE's music tech department, is developing a new audio platform based on ARM micro-controllers using the Rust programming language to build faster and more robust sound! Previously Benedict work at Qualcomm and AMD where he was a co-designer on the programming language OpenCL, including the lead developer on AMD's OpenCL compiler. He has a PhD in computer science for his work on type systems for extensible records and variants. He has published extensively, has given numerous presentations, including ones at FOSDEM on Rust and LoRaWAN. Links to some previous talks by the speaker Below are are some examples of recent talks: Fun with Interfaces (SVG Interfaces for Musical Expression). FARM'19: 7th International Workshop on Functional Art, Music, Modeling and Design (FARM). Rustarm AKA A project looking at Rust for Embedded Systems. FOSDEM’18. Outside the Block Syndicate: Translating Faust's Algebra of Blocks to the Arrows Framework. International Faust Conference (IFC-18), 2018 LoRaWAN for exploring the Internet of Things. Talk Hard: A technical, political, and cultural look at LoRaWAN for IoT. FOSDEM’17.

Additional information

Type devroom

More sessions

2/2/20
Rust
Jeff Mendoza
K.3.401
Complying with license obligations can incur a lot of hurdles. This results in developers skipping compliance or failing to achieve correct compliance. To compound this, package authors sometimes fail to describe the license of their package clearly or omit license information of included files. ClearlyDefined is a community curated repository of discovered license information for Crates packages, among other types. This talk will cover: the importance of the license obligations of the ...
2/2/20
Rust
Jake Shadle
K.3.401
A talk about cargo-deny, why we created it, and how it helps us manage our dependencies in the long term.
2/2/20
Rust
Efraim Flashner
K.3.401
Rust is a language with a healthy ecosystem and a strong developer base. With built-in dependency management it's easy to build and install new programs even for those who have never used the language. But how is its adoption among Linux distros? Come with me as we figure out how best to package rust libraries and binaries in Linux distributions which demand total control over dependency management.
2/2/20
Rust
Guillaume Gomez
K.3.401
Rust compiler comes with a few tools, rustdoc is one of them. It is THE standard rust tool to generate documentation for your crates.
2/2/20
Rust
Luca Barbato
K.3.401
rav1e is a fast AV1 encoder written in rust (and plenty of assembly), released monthly. Since the 0.1.0 release we try to make sure we provide an adequate speed or quality boost compared to the previous. This talk is about what tools are available in the rust ecosystem and what are the practices that worked best for us.
2/2/20
Rust
Tyler Neely
K.3.401
sled is an embedded database that takes advantage of modern lock-free indexing and flash-friendly storage. rio is a pure-rust io_uring library unlocking the linux kernel's new asynchronous IO interface. This short talk will cover techniques that have been used to take advantage of modern hardware and kernels while optimizing for long term developer happiness in a complex, correctness-critical Rust codebase.
2/2/20
Rust
Christoph Zimmermann
K.3.401
Over the last decade, Redis has become one of the most popular NoSQL DBs delivering on the promise of high throughput and low latency. What started as a pure C code base is gradually being augmented with Rust due to the trifecta of safety, concurrency, and speed. A primary example is thre RedisJSON module which turns Redis into a document DB. The talk outlines the principal architecture of the re-implementation of RedisJSON, the challenges encountered and the solutions for these. The focus is on ...