GitPedia

Atm cli

Command line tool for generating and working with MIDI files.

From allthemusicllc·Updated June 19, 2026·View on GitHub·

`atm-cli` is a command line tool for generating and working with MIDI files. It was purpose-built for All the Music, LLC to assist in its mission to enable musicians to make all of their music without the fear of frivolous copyright lawsuits. All code is freely available under the [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/). If you're looking for a Rust library to generate and work with MIDI files, check out [the `libatm` project](https:/... The project is written primarily in Rust, distributed under the Other license, first published in 2019. It has gained significant community traction with 1,408 stars and 104 forks on GitHub. Key topics include: creative-commons, midi, music, public-domain, rust.

Tools for Generating and Working with MIDI Files

Overview

atm-cli is a command line tool for generating and working with MIDI files. It was purpose-built for
All the Music, LLC to assist in its mission to enable musicians to make all of their music
without the fear of frivolous copyright lawsuits. All code is freely available under the
Creative Commons Attribution 4.0 International License.
If you're looking for a Rust library to generate and work with MIDI files, check out
the libatm project, on which this tool relies. For
more information on All the Music, check out allthemusic.info. For more detailed
information about the code, check out the crate documentation here.

Choice of License

All datasets generated by All the Music, LLC have been released in the public domain, which means they are free for
anyone to use for any purpose without restriction under copyright law. However, if we released the code into the
public domain under CC0, we would have no control over entities using it with malicious intent. CC BY 4.0
allows us to assert that no one can place additional restrictions on derivative works, while still allowing anyone to:

  • copy and redistribute the code in any medium or format
  • remix, transform, and build upon the code for any purpose, even commercially

Installation

atm-cli is written in Rust, and thus requires the Rust toolchain to compile.
Follow the instructions at https://www.rust-lang.org/tools/install to install the toolchain.
Once that is complete, clone the repo and compile the tool:

bash
$ git clone https://github.com/allthemusicllc/atm-cli.git $ cd atm-cli $ git submodule update --init $ cargo build --release $ cargo run --release -- -h # show usage

Getting Started

To generate a single MIDI file from a melody, use the gen single directive:

bash
atm gen single 'C:4,D:4,E:4,F:4,G:4,A:4,B:4,C:5' test.mid

To brute-force generate a range of melodies from a set of notes and with a given length, use one of the gen * directive.
The example below will output the melodies to a Gzip-compressed Tar file, with a directory structure that guarantees no more
than 4,096 files per directory.

bash
atm gen tar-gz -p 2 'C:4,D:4,E:4,F:4,G:4,A:4,B:4,C:5' 8 C4_D4_E4_F4_G4_A4_B4_C5.tar

After generating a range of melodies with one of the gen * directives (beside gen single), use the partition directive
to determine which directory a particular melody was written to.

bash
atm partition -p 2 'C:4,C:4,C:4,C:4,C:4,C:4,C:4,C:5'

You can download existing datasets generated by All the Music, LLC from:

https://archive.org/download/allthemusicllc-datasets

Usage

bash
atm 0.3.0 All The Music, LLC Tools for generating and working with MIDI files. This app was created as part of an effort to generate by brute-force billions of melodies, and is tailored for that use case USAGE: atm <SUBCOMMAND> FLAGS: -h, --help Prints help information -V, --version Prints version information SUBCOMMANDS: estimate Estimate output size of storage backends to help make informed decisions about which to use gen Generate melodies (MIDI files) and store them in a file/files help Prints this message or the help of the given subcommand(s) partition Generate the partition(s) for a MIDI pitch sequence within a partitioning scheme. If no partition depth is provided, will default to a depth of 1

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from allthemusicllc/atm-cli via the GitHub API.Last fetched: 6/20/2026