Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minim

A small DAW and a music language, built for the AKAI MPK Mini.

Free MPK Mini software that is actually good is hard to find, so this exists.

import "house"

tempo 125

kick  = punchy  "bd*4"          { weight 0.45 }
hats  = tight   "hh*16"         { loose 0.4 }
bass  = rolling "<a1 a2 d1 d2>" { duck 0.62 }
stabs = stab    "~ [a3,c4,e5] ~ ~" { space 0.4 }

play kick, hats, bass, stabs
minim song.minim --live

Edit the file. Save it. The change lands on the next bar.

Install

cargo install minim-daw

The command it gives you is minim. The package is called minim-daw only because an unrelated program already holds minim on crates.io.

That is the whole installation. The sounds are compiled into the program, so there is nothing else to download, no samples, no plugins, and no files to keep beside your scripts.

You need Rust first, and on Windows the MSVC build tools that rustup offers to install for you.

Building from a clone instead
git clone https://github.com/aedutta/minim
cd minim
cargo install --path .

Use cargo build --release if you would rather not put it on your PATH. The program is then at target/release/minim.

Your first track

Put the example above in a file called song.minim, anywhere you like, and run:

minim song.minim --live

import "house" needs no file next to it. Three packs are built into the program:

$ minim --packs

  house     9 presets   house drums, a rolling bass and organ stabs
  bass      5 presets   acid, sub, growl, pluck and deep sub basses
  leads     7 presets   organ, keys, house piano, bell, saws and air

Hear one before you use it with minim PACK.minim --audition, which plays every preset in turn and writes a single file.

Commands

Command What it does
minim Opens the window
minim TRACK.minim Renders a script to a WAV file
minim TRACK.minim --live Plays a script and reloads it on every save
minim PACK.minim --audition Plays every preset in a pack, one after another
minim --packs Lists the packs built in
minim --monitor Prints MIDI input, to check a controller

Rendering takes --bars N, --out FILE.wav and --peak N.

What it does

A language. Write music as text. Nothing fails without a message: an unknown drum, a misspelled setting or a number out of range stops the script and says where and why.

error: `cutof` is not a setting
 --> song.minim:6:26
  |
6 | bass = notes "a1*4" { cutof 800 }
  |                       ^^^^^ did you mean `cutoff`?

One set of names. level, pan, drive, space and duck mean the same thing on a drum part and on a synth part. There is no separate vocabulary to learn per instrument.

A window. Plug in an MPK Mini and Minim finds it. The pads play a drum kit, the keys play a synthesiser, and the step grid programs a beat.

Sound that carries. drive adds the harmonics an analogue stage would. space is a send into one room shared by every part. duck is the pump: it pushes a part down under each kick and lets it come back, and it finds the kick for you.

Documentation

Start with the tutorial. It takes 20 minutes.

The documentation uses Simplified Technical English, and every example in it is compiled by the test suite, so none of them can drift out of date.

Visual Studio Code

The editors/vscode folder holds an extension. It gives colours, snippets, a file icon and errors in the Problems panel. See Set up Visual Studio Code.

Status

Minim works and is in use. These parts are done:

  • the language: presets, packs, knobs, sections, keys and your own audio files
  • live reload
  • the drum kit, the sampler, the synthesiser and the step sequencer
  • MIDI input, with automatic MPK Mini detection
  • rendering to WAV, with drive, reverb and sidechain ducking

These parts are not done yet, and Minim says so where it can rather than letting you find out by ear:

  • drive, space and duck apply when rendering, not in --live. Live playback warns when a script uses them.
  • the piano roll and MIDI recording in the window. The engine records; nothing shows it.
  • saving and loading a project from the window.
  • the window's step grid and the .minim language are separate systems.

A note about antivirus

Some antivirus programs remove new unsigned programs they have not seen before. This affects most Rust builds on Windows, not Minim alone. If your build disappears, add the project folder to your exclusions.

Licence

GPL-3.0. Anybody can use, change and sell this. Anything built from it must also stay free and open.

About

A small DAW and a music language, built in Rust for the AKAI MPK Mini.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages