a programming language as an infrastructure for sound and music
mimium(MInimal-Musical-medIUM) is a programming language for sound and music.
mimium is made to be an infrastructure for distributing music in a form of a source code, not only a tool for musicians and programmers.
Its semantics are technically inspired from several modern programming languages for sound such as Faust and Extempore..
A minimal example below generates a sinewave of 440Hz.
// minimal.mmm
let twopi = 3.141595*2
let sr = 48000
fn dsp(){
sin(now * 440 * twopi / sr)
}
This repository is a mimium Version 2, all the code base is rewritten in Rust while the original was in C++, and Semantics of the language was re-designed. The code is still very under development.
- Source code -> tokenizer -> parser -> AST โ
- Removing "self" -> Type Inference & SSA Conversion -> MIR(Imperative)
- VM ByteCode Generation
- Basic Data Types
- AST
- MIR
- VM Instructions
- Aggregate Types
- Tuple (Vector) types
- Compilers
- Stateful Functions
- Feedback with
self
- Delay and mem
- Feedback with
- Parser
- MIR Generation
- Type Inference
- Code Generation
- VM Code Generation
- Stateful Functions
- Runtime
- Audio Driver Backend
- CPAL implmentation
- Logical Scheduler
- auto de-allocation of unused closure
- destructive assignment of closure upvalues
- schedule (
@
) operator
- Runtime value
-
now
-
samplerate
-
- VM
- Closure upvalue implementation
- StateStorage implementation
- simple file include
- simple audio file reader function
- array(slice) type & automatic interporation
- Audio Driver Backend
- Multi-stage computation (Hygienic Macro)
- Generics
- Native & WASM backend with Cranelift
- Module System, Package Manager
- effect system for managing statefull function and IO
other todos: Migrating examples
The source code is lisenced under Mozilla Puclic License 2.0.
This project is supported by all the contributers, Sponsors, grants and scholarships as follows.
- 2019 Exploratory IT Human Resources Project (The MITOU Program) by IPA: INFORMATION-TECHNOLOGY PROMOTION AGENCY, Japan.
- Kakehashi Foundation