TL;DR

Miditui is an open-source Rust application that brings DAW-like MIDI composing, mixing and playback to the terminal. It offers mouse-driven interaction, a piano-roll view, live keyboard input, autosave, undo/redo and export options, and was developed with assistance from an AI coding agent.

What happened

A developer published miditui, a terminal user interface for MIDI composition, mixing and playback written in Rust and released under the MIT license. The app provides a piano-roll and project timeline, full terminal mouse interactions (click, drag, scroll, double-click and right-click), and an Insert mode that maps a two-octave QWERTY layout for live note entry with immediate audio output. Audio playback runs at 44.1 kHz using rustysynth and requires a SoundFont (.sf2) supplied by the user. The project includes autosave into a bespoke .oxm format, undo/redo, unlimited MIDI tracks with per-track mute/solo and pan/volume controls, and the ability to import/export MIDI and JSON as well as export WAV files. The repository notes the crate was produced with help from Claude Opus 4.5; a demo video and installation binaries for multiple platforms are provided in the Releases section.

Why it matters

  • Brings many features typical of graphical DAWs into a terminal environment, enabling composition without a traditional GUI.
  • Demonstrates how AI-assisted development can be part of shipping a practical open-source tool (disclosed agent involvement).
  • Cross-platform binaries and a cargo install option lower the barrier for users on macOS, Linux and Windows.
  • Terminal-native interaction (mouse + keyboard) may appeal to users who prefer keyboard-driven workflows or remote/SSH setups.

Key facts

  • Written in Rust and distributed under the MIT license.
  • Supports full terminal mouse input: click, drag, scroll, double-click and right-click.
  • Provides a piano-roll and project timeline views, plus an Insert mode with two-octave QWERTY input (Z–M and Q–I rows).
  • Uses rustysynth for low-latency 44.1 kHz audio playback and requires a SoundFont (.sf2) file for sound generation.
  • Unlimited MIDI tracks with per-track mute/solo, automatic MIDI channel assignment, and volume/pan controls.
  • Autosaves projects in a custom .oxm binary format that stores extra metadata such as SoundFont path and track mute/solo states.
  • Can import/export MIDI and JSON files and export audio as uncompressed WAV.
  • Undo/Redo support is available; many keyboard shortcuts are accessible from inside the app (press ?).
  • Binaries are available on the GitHub Releases page for macOS (Apple Silicon and Intel), Linux (ARM64 and x64) and Windows; cargo install is supported if Rust is installed.
  • Developer disclosed the crate was created with assistance from Claude Opus 4.5 and includes agent-related notes in the repository.

What to watch next

  • Terminal compatibility: the README recommends using a terminal that supports horizontal mouse scrolling (Ghostty is suggested).
  • Limitation on key-hold behavior: reliable key release events are not available across terminals, so holding keys to extend notes is not supported.
  • Future roadmap or upcoming features: not confirmed in the source.

Quick glossary

  • MIDI: A technical protocol that conveys musical performance information (notes, velocity, control changes) between devices and software.
  • SoundFont (.sf2): A file format that contains sampled instrument sounds used by software synthesizers to render audio from MIDI data.
  • Piano roll: A timeline-oriented visual representation of MIDI notes where pitch is shown vertically and time horizontally.
  • DAW: Digital Audio Workstation — software for recording, editing and producing audio and MIDI-based music.
  • TUI: Text-based User Interface — an application interface that runs in a terminal rather than a graphical environment.

Reader FAQ

How do I install miditui?
Download a platform binary from the GitHub Releases page or install via cargo install miditui if you have Rust.

What sound resources are required to run it?
A SoundFont (.sf2) file is required; the README mentions TimGM6mb.sf2 and GeneralUser GS as examples.

Can I hold keys on my keyboard to sustain notes?
No — reliable key release detection across terminals is not available, so holding keys to extend notes is not supported.

Was the app written entirely by the developer?
The repository discloses the project was developed with assistance from Claude Opus 4.5; agent interaction details are in the agent_notes folder.

miditui Crates.io An interactive terminal app/UI for MIDI composing, mixing, and playback—written in Rust. miditui allows for a DAW-like experience in the terminal and has many features that you wouldn't…

Sources

Related posts

By

Leave a Reply

Your email address will not be published. Required fields are marked *