{"id":13484723,"url":"https://github.com/allthemusicllc/atm-cli","last_synced_at":"2025-10-07T12:04:07.572Z","repository":{"id":38300276,"uuid":"201652240","full_name":"allthemusicllc/atm-cli","owner":"allthemusicllc","description":"Command line tool for generating and working with MIDI files.","archived":false,"fork":false,"pushed_at":"2022-06-07T17:34:33.000Z","size":8949,"stargazers_count":1397,"open_issues_count":12,"forks_count":106,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-12T11:55:29.373Z","etag":null,"topics":["creative-commons","midi","music","public-domain","rust"],"latest_commit_sha":null,"homepage":"http://allthemusic.info","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/allthemusicllc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-10T16:01:49.000Z","updated_at":"2025-04-08T04:39:38.000Z","dependencies_parsed_at":"2022-09-16T08:40:32.853Z","dependency_job_id":null,"html_url":"https://github.com/allthemusicllc/atm-cli","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allthemusicllc%2Fatm-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allthemusicllc%2Fatm-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allthemusicllc%2Fatm-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allthemusicllc%2Fatm-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/allthemusicllc","download_url":"https://codeload.github.com/allthemusicllc/atm-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254544146,"owners_count":22088807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["creative-commons","midi","music","public-domain","rust"],"created_at":"2024-07-31T17:01:31.568Z","updated_at":"2025-10-07T12:04:02.521Z","avatar_url":"https://github.com/allthemusicllc.png","language":"Rust","funding_links":[],"categories":["Rust","Tools"],"sub_categories":["Rust"],"readme":"# Tools for Generating and Working with MIDI Files\n\n## Overview\n\n`atm-cli` is a command line tool for generating and working with MIDI files. It was purpose-built for\nAll the Music, LLC to assist in its mission to enable musicians to make all of their music\nwithout the fear of frivolous copyright lawsuits. All code is freely available under the\n[Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\nIf you're looking for a Rust library to generate and work with MIDI files, check out\n[the `libatm` project](https://github.com/allthemusicllc/libatm), on which this tool relies. For\nmore information on All the Music, check out [allthemusic.info](http://allthemusic.info).  For more detailed\ninformation about the code, check out the crate documentation [here](https://allthemusicllc.github.io/atm-cli/atm/index.html).\n\n## Choice of License\n\nAll datasets generated by All the Music, LLC have been released in the public domain, which means they are free for\nanyone to use for any purpose without restriction under copyright law. However, if we released the code into the\npublic domain under CC0, we would have no control over entities using it with malicious intent. [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/)\nallows us to assert that no one can place additional restrictions on derivative works, while still allowing anyone to:\n\n* copy and redistribute the code in any medium or format\n* remix, transform, and build upon the code for any purpose, even commercially\n\n## Installation\n\n`atm-cli` is written in [Rust](https://www.rust-lang.org/), and thus requires the Rust toolchain to compile.\nFollow the instructions at \u003chttps://www.rust-lang.org/tools/install\u003e to install the toolchain.\nOnce that is complete, clone the repo and compile the tool:\n\n```bash\n$ git clone https://github.com/allthemusicllc/atm-cli.git\n$ cd atm-cli\n$ git submodule update --init\n$ cargo build --release\n$ cargo run --release -- -h # show usage\n```\n\n## Getting Started\n\nTo generate a single MIDI file from a melody, use the `gen single` directive:\n\n```bash\natm gen single 'C:4,D:4,E:4,F:4,G:4,A:4,B:4,C:5' test.mid\n```\n\nTo brute-force generate a range of melodies from a set of notes and with a given length, use one of the `gen *` directive.\nThe example below will output the melodies to a Gzip-compressed Tar file, with a directory structure that guarantees no more\nthan 4,096 files per directory.\n\n```bash\natm 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\n```\n\nAfter generating a range of melodies with one of the `gen *` directives (beside `gen single`), use the `partition` directive\nto determine which directory a particular melody was written to.\n\n```bash\natm partition -p 2 'C:4,C:4,C:4,C:4,C:4,C:4,C:4,C:5'\n```\n\nYou can download existing datasets generated by All the Music, LLC from:\n\nhttps://archive.org/download/allthemusicllc-datasets\n\n## Usage\n\n```bash\natm 0.3.0\nAll The Music, LLC\nTools for generating and working with MIDI files. This app was created as part of an effort to generate by brute-force\nbillions of melodies, and is tailored for that use case\n\nUSAGE:\n    atm \u003cSUBCOMMAND\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nSUBCOMMANDS:\n    estimate     Estimate output size of storage backends to help make informed decisions about which to use\n    gen          Generate melodies (MIDI files) and store them in a file/files\n    help         Prints this message or the help of the given subcommand(s)\n    partition    Generate the partition(s) for a MIDI pitch sequence within a partitioning scheme. If no partition\n                 depth is provided, will default to a depth of 1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallthemusicllc%2Fatm-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallthemusicllc%2Fatm-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallthemusicllc%2Fatm-cli/lists"}