We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Rusty instruments

00:00

Formal Metadata

Title
Rusty instruments
Subtitle
Rust when it makes sense
Alternative Title
Rusty instruments: Building Digital Musical Instruments with Rust and friends
Title of Series
Number of Parts
490
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
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.
BuildingDigital signalMusical ensembleCodeFocus (optics)Programming languageTheoryPhysical computingComputer networkExecution unitInclusion mapBitIntegrated development environmentMusical ensembleSoftwareStudent's t-testBuildingWebsiteCollaborationismVapor barrierLink (knot theory)CodeMultiplication signProjective planeControl engineeringPhysical computingComputer scienceMoment (mathematics)Materialization (paranormal)Mixed realityDemo (music)Open setInteractive televisionAreaVisual programming languageControl flowUniverse (mathematics)Maxima and minimaComputer programmingMachine visionData miningSource code
Interior (topology)Nachlauf <Strömungsmechanik>Execution unitMultiplication signLaptopTelecommunicationView (database)Chemical equationMusical ensembleRight angleProgramming languageCoefficient of determinationPerspective (visual)Row (database)Point (geometry)FrequencyCodeForm (programming)Standard deviationEvent horizonComputer musicClassical physicsQuicksortComputer animation
WhiteboardComplete metric spaceSoftware protection dongleElectric generatorBuffer overflowData managementOperational amplifierScanning tunneling microscopeAbstractionExistential quantificationFlow separationSoftwareMultiplication signComputing platformDevice driverDemo (music)QuicksortProjective planeBuildingMusical ensembleProgramming languageRevision controlLaptopKeyboard shortcutDifferent (Kate Ryan album)Channel capacityConnected spaceVirtual machineVisual programming languageBlogFeedbackPressureSoftware testing1 (number)WindowTouch typingDigitizingTouchscreenField (computer science)Parameter (computer programming)Modal logicBitComputer hardwareBinary codeComputer programmingKey (cryptography)Mobile appGoodness of fitCodeTDMAType theoryKernel (computing)MetreService (economics)Real numberStudent's t-testReal-time operating systemPunched cardPhysical lawLine (geometry)Boss CorporationStack (abstract data type)Limit (category theory)Execution unitSystem callIntegrated development environmentFactory (trading post)Crash (computing)GodComputer animation
Canadian Light SourceProgramming languageUniformer RaumFeedbackSupersonic speedTexture mappingCodeDegree (graph theory)Point (geometry)Information securityComputer programmingFunctional programmingMultiplication signExpressionExterior algebraMusical ensembleVirtual machineBitWritingFamilyControl engineeringMereologyAbstractionUniverse (mathematics)SoftwareStack (abstract data type)Programming languageExtension (kinesiology)Range (statistics)Fitness functionComputer scienceData managementRoundness (object)Message passingProgrammschleifeStudent's t-testPower (physics)QuicksortTorusType theoryFluid staticsInterpreter (computing)WordPolymorphism (materials science)Data miningPhysical systemMetaprogrammierungAdditionMathematicsDiagramCartesian coordinate systemError messageScripting languageInteractive televisionProblemorientierte ProgrammierspracheWebsiteAssembly languageFeedbackSampling (statistics)Digital divideProgrammer (hardware)Physical lawECosCycle (graph theory)Right angleLine (geometry)MappingPeer-to-peerInsertion lossWhiteboardGraph (mathematics)
FeedbackSupersonic speedTexture mappingTwin primeBlock (periodic table)Computer hardwareArmPoint (geometry)Virtual machineCuboidArithmetic meanProgramming languageRaster graphicsLibrary (computing)NumberPhysical systemCodeOpen setDifferent (Kate Ryan album)Control engineeringProblemorientierte ProgrammierspracheMathematicianSymbolic computationTerm (mathematics)MappingFunctional programmingComputer fileReal-time operating systemMicrocontrollerDevice driverExtension (kinesiology)NeuroinformatikTelecommunicationExpressionMusical ensembleProcess (computing)Computer programmingAverageWritingBitInheritance (object-oriented programming)Group actionPlastikkarteArtistic renderingSpacetimeLine (geometry)Graph (mathematics)Touch typingLevel (video gaming)Moment (mathematics)Capability Maturity ModelSensitivity analysisWindowGame controllerMessage passingSingle-precision floating-point formatMathematicsFitness functionTemplate (C++)Greatest elementMereologyComputing platformRaw image format2 (number)Latent heatEmbedded systemService (economics)GodSampling (statistics)System callDifferential operatorForm (programming)Right angleComputer animation
Physical lawGame controllerInterior (topology)PolygonRepresentation (politics)Compilation albumShape (magazine)TessellationAssembly languageProgramming languageText editorWeb browserComputer programmingShape (magazine)Address spaceTouchscreenLine (geometry)FrequencyPosition operatorMusical ensembleRow (database)Point (geometry)Term (mathematics)Right angleProblemorientierte ProgrammierspracheMappingPhysical systemTriangleWeb 2.0Type theoryGame theoryPhase transitionPrimitive (album)Computer hardwareLevel (video gaming)BitControl engineeringCurveNumberRepresentation (politics)NP-hardStandard deviationMultiplicationTouch typingAssembly languageOperator (mathematics)Multiplication signParameter (computer programming)Pointer (computer programming)Image resolutionCASE <Informatik>Workstation <Musikinstrument>Shared memoryGroup actionOrder (biology)Latent heatGraphics processing unitData typeVideo gameInformation overloadRaster graphicsMessage passingSocial classSet (mathematics)Vector spacePolygon meshExpressionExtension (kinesiology)Square numberSpline (mathematics)MetadataMereologyTesselationComputer animation
Shape (magazine)TessellationAssembly languageBlock (periodic table)VelocityStreaming mediaFunctional programmingProcess (computing)Function (mathematics)Line (geometry)Table (information)CircleGraph coloringSoftware bugProgramming languagePhysical systemShape (magazine)CompilerPoint (geometry)Functional programmingRectangleMusical ensembleTriangleProcess (computing)NumberRoundness (object)MappingBitWeb applicationAssembly languageCartesian coordinate systemSquare numberState observerArtistic renderingSlide ruleProjective planeBuffer solutionQuicksortCuboidPhase transitionCodeSoftwareNichtlineares GleichungssystemRaster graphicsThread (computing)Fiber bundleUniqueness quantificationMereologyDemosceneOrder (biology)AeroelasticityPixelPairwise comparisonRepetitionGeometryElectronic mailing listGradientRight angleRippingSoftware testingSound effectConnected spaceFamilyReal-time operating systemInheritance (object-oriented programming)Web 2.0Interactive televisionPersonal identification numberMedical imaging
Process (computing)Function (mathematics)Line (geometry)Punched cardControl engineeringMultiplication signCodeWebsiteComputer fileThread (computing)Frame problemLoop (music)Process (computing)Slide ruleVariable (mathematics)RecursionImplementationInteractive televisionPlastikkarteSound effectCompilerStrutReal-time operating systemFunctional programmingSingle-precision floating-point formatVideo gameInterior (topology)Flow separationQueue (abstract data type)Point (geometry)NeuroinformatikWorkstation <Musikinstrument>View (database)MereologyCartesian coordinate systemScripting languageService (economics)Inheritance (object-oriented programming)CausalityTask (computing)Computer animation
Universe (mathematics)VideoconferencingLevel (video gaming)Musical ensembleControl systemCodeFamilyMedical imagingInformation securityCartesian coordinate systemBitMereologyComputer animationLecture/Conference
Point cloudFacebookOpen source
Transcript: English(auto-generated)