Tools for working with MIDI files - written by All the Music LLC for musicians.

Overview

Tools for Generating and Working with MIDI Files

NOTICE: This repo is under construction and is not ready for use. Once it is ready, and the other repos are archived, this banner will be removed.

Overview

Choice of License

All datasets generated by All the Music LLC have been released in the public domain under CC0, 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

Accessing the Melody Datasets

You can download a subset of existing datasets generated by All the Music LLC from the Internet Archive. Note that the data are split into chunks no larger than ~600GB. We are actively researching better ways to make the data more easily accessible from the Internet Archive, keeping home Internet bandwidth and data caps in mind. Stay tuned for an announcement on this topic, and if you have suggestions please feel free to open an issue!

Packages

TODO

Commit and Release Verification

All binary releases are hashed using SHA-256 and can be verified using the accompanying *.sha256 files:

shasum -a 256 -c <filename>.sha256

Our PGP key signature is CF61C1241EB3A6C85200A93142A82D51E3A76B66 and is valid through 2027-04-19. Commits are signed with this key, and in the future all binary releases will include a signature with this key.

Dependencies

The *dependencies sections in each package's Cargo.toml manifest have the list of app and dev dependencies. See DEVELOPMENT.md for local development and build dependencies.

Development

See DEVELOPMENT.md for development instructions.

Contributing/Suggestions

Contributions and suggestions are welcome! To make a feature request, report a bug, or otherwise comment on existing functionality, please file an issue. For contributions please submit a PR, but make sure to lint, type-check, and test your code before doing so. Thanks in advance!

You might also like...
Map the Teenage Engineering OP-1 MIDI output to keyboard commands

OP1NPUT Maps the Teenage Engineering OP-1's MIDI output to keyboard keypresses so it may be used as a game controller. This exists because many of the

🎹 Simple MIDI note repeater plugin (VST3/CLAP).

⏱️ Clockwork A simple MIDI note repeater plugin, written in Rust. 🎬 Showcase: (turn on audio) clockwork-showcase.mp4 📖 Manual: The user manual can b

Drumsthesia is a simple software that helps you to learn how to play the drums (or midi controllers).
Drumsthesia is a simple software that helps you to learn how to play the drums (or midi controllers).

Drumsthesia A shameless copy of Neothesia adapted for e-Drums. Youtube Video Binaries for MacOS, Linux (untested) and Windows (untested). Download Scr

Polyrhythmically-inclinded Midi Drum generator
Polyrhythmically-inclinded Midi Drum generator

Polyrhythmix Polyrhythmix (Poly) is a command-line assistant designed to generate MIDI files from the description of drum parts. It provides a conveni

Minimalist multi-track audio recorder which may be controlled via OSC or MIDI.
Minimalist multi-track audio recorder which may be controlled via OSC or MIDI.

smrec Minimalist multi-track audio recorder which may be controlled via OSC or MIDI. I did this because I needed a simple multi-track audio recorder w

A music theory guide written in Rust.

Rust Music Theory A library and executable that provides programmatic implementation of the basis of the music theory. Table of Contents Overview Usag

musify is a simple discord bot to play music within a voice channel, written in the rust programming language.

musify-rs musify is a simple discord bot to play music within a voice channel, written in the rust programming language. Features A simple song queue

 Terminal Music Player written in Rust
Terminal Music Player written in Rust

Terminal Music Player written in Rust Listen to music freely as both in freedom and free of charge! Freedom: As time goes by, online service providers

A terminal music player written in the Rust language.
A terminal music player written in the Rust language.

A terminal music player written in the Rust language. (Windows) Requirements Configuration file path: C:\Users\xxx\.config\music_player\config.yml # P

Comments
  • build(deps): bump docker/login-action from 1 to 2

    build(deps): bump docker/login-action from 1 to 2

    Bumps docker/login-action from 1 to 2.

    Release notes

    Sourced from docker/login-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#161)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • chore: update dev dependencies and workflow by @​crazy-max (#170)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#167)
    • Bump @​actions/io from 1.1.1 to 1.1.2 (#168)
    • Bump minimist from 1.2.5 to 1.2.6 (#176)
    • Bump https-proxy-agent from 5.0.0 to 5.0.1 (#182)

    Full Changelog: https://github.com/docker/login-action/compare/v1.14.1...v2.0.0

    v1.14.1

    • Revert to Node 12 as default runtime to fix issue for GHE users (#160)

    v1.14.0

    • Update to node 16 (#158)
    • Bump @​aws-sdk/client-ecr from 3.45.0 to 3.53.0 (#157)
    • Bump @​aws-sdk/client-ecr-public from 3.45.0 to 3.53.0 (#156)

    v1.13.0

    • Handle proxy settings for aws-sdk (#152)
    • Workload identity based authentication docs for GCR and GAR (#112)
    • Test login against ACR (#49)
    • Bump @​aws-sdk/client-ecr from 3.44.0 to 3.45.0 (#132)
    • Bump @​aws-sdk/client-ecr-public from 3.43.0 to 3.45.0 (#131)

    v1.12.0

    • ECR: only set credentials if username and password are specified (#128)
    • Refactor to use aws-sdk v3 (#128)

    v1.11.0

    • ECR: switch implementation to use the AWS SDK (#126)
    • ecr input to specify whether the given registry is ECR (#123)
    • Test against Windows runner (#126)
    • Update instructions for Google registry (#127)
    • Update dev workflow (#111)
    • Small changes for GHCR doc (#86)
    • Update dev dependencies (#85)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#101)
    • Bump tmpl from 1.0.4 to 1.0.5 (#100)
    • Bump @​actions/core from 1.4.0 to 1.6.0 (#94 #103)
    • Bump codecov/codecov-action from 1 to 2 (#88)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#83)
    • Bump node-notifier from 8.0.0 to 8.0.2 (#82)
    • Bump ws from 7.3.1 to 7.5.0 (#81)
    • Bump lodash from 4.17.20 to 4.17.21 (#80)
    • Bump y18n from 4.0.0 to 4.0.3 (#79)

    v1.10.0

    • GitHub Packages Docker Registry deprecated (#78)

    ... (truncated)

    Commits
    • 49ed152 Merge pull request #161 from crazy-max/node16-runtime
    • b61a9ce Node 16 as default runtime
    • 3a136a8 Merge pull request #182 from docker/dependabot/npm_and_yarn/https-proxy-agent...
    • b312880 Update generated content
    • 795794e Bump https-proxy-agent from 5.0.0 to 5.0.1
    • 1edf618 Merge pull request #179 from docker/dependabot/github_actions/codecov/codecov...
    • 8e66ad4 Bump codecov/codecov-action from 2 to 3
    • 7c79b59 Merge pull request #176 from docker/dependabot/npm_and_yarn/minimist-1.2.6
    • 24a38e0 Bump minimist from 1.2.5 to 1.2.6
    • 70e1ff8 Merge pull request #170 from crazy-max/eslint
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • build(deps): bump docker/setup-buildx-action from 1 to 2

    build(deps): bump docker/setup-buildx-action from 1 to 2

    Bumps docker/setup-buildx-action from 1 to 2.

    Release notes

    Sourced from docker/setup-buildx-action's releases.

    v2.0.0

    Full Changelog: https://github.com/docker/setup-buildx-action/compare/v1.7.0...v2.0.0

    v1.7.0

    • Standalone mode by @​crazy-max in (#119)
    • Update dev dependencies and workflow by @​crazy-max (#114 #130)
    • Bump tmpl from 1.0.4 to 1.0.5 (#108)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#109)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#110)
    • Bump actions/checkout from 2 to 3 (#126)
    • Bump @​actions/tool-cache from 1.7.1 to 1.7.2 (#128)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#129)
    • Bump minimist from 1.2.5 to 1.2.6 (#132)
    • Bump codecov/codecov-action from 2 to 3 (#133)
    • Bump semver from 7.3.5 to 7.3.7 (#136)

    v1.6.0

    • Add config-inline input (#106)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#104)
    • Bump codecov/codecov-action from 1 to 2 (#101)

    v1.5.1

    • Explicit version spec for caching (#100)

    v1.5.0

    • Allow building buildx from source (#99)

    v1.4.1

    • Fix docker: invalid reference format (#97)

    v1.4.0

    • Update dev deps (#95)
    • Use built-in getExecOutput (#94)
    • Use core.getBooleanInput (#93)
    • Bump @​actions/exec from 1.0.4 to 1.1.0 (#85)
    • Bump y18n from 4.0.0 to 4.0.3 (#91)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#89)
    • Bump ws from 7.3.1 to 7.5.0 (#90)
    • Bump @​actions/tool-cache from 1.6.1 to 1.7.1 (#82 #86)
    • Bump @​actions/core from 1.2.7 to 1.4.0 (#80 #87)

    v1.3.0

    • Display BuildKit version (#72)

    v1.2.0

    • Remove os limitation (#71)
    • Add test job for config input (#68)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
Owner
null
Rust-crate with functions and helpers for working with music / audio, inspired by computer music languages.

music-math This crate contains common functions and helpers for working with music / audio in Rust. Most of these are inspired by similar functions fo

Mads Kjeldgaard 3 Apr 10, 2024
Very simple, efficient, task oriented, low cognitive, Midi player and jukebox for midi instruments

Midi and Virtual Book jukebox Player A cross-platform MIDI and virtual book jukebox player. It only includes the necessary functionalities to play MID

Barrel Organ Discovery 4 Jun 29, 2023
Small music theory library with MIDI capabilities written in Rust

mumuse Small music theory library with MIDI capabilities written in Rust (wip). Examples Creating notes and transpositions // Declare Note from &str l

Alexis LOUIS 4 Jul 27, 2022
Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device. Polaris works by streami

Antoine Gersant 1k Jan 9, 2023
Encrypt and decrypt files by playing melodies on your MIDI keyboard.

midicrypt Encrypt and decrypt files by playing melodies on your MIDI keyboard. Written in Rust. ❯ ./midicrypt -h midicrypt 0.1.0 NINNiT Encrypts and D

null 2 Jun 24, 2022
A small program that converts midi files to RPE (Re: Phigros Edit) Charts

Midi to RPE(Re: Phigros Edit) chart converter $ mid2json --help Usage: mid2json [OPTIONS] <MIDI_PATH> Arguments: <MIDI_PATH> Name of the input fil

液氦 4 Jun 8, 2023
Build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files

skysongbuilder A tool to build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files Features: Optimizations down

Adakite 3 Sep 23, 2023
Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it.

MIDNOTE Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it. Goals As a blind musician my

null 4 Oct 30, 2022
Cross-platform realtime MIDI processing in Rust.

midir Cross-platform, realtime MIDI processing in Rust. Features midir is inspired by RtMidi and supports the same features*, including virtual ports

Patrick Reisert 392 Dec 27, 2022
MIDI-controlled stereo-preserving granular-synthesizer LV2 plugin

Stereog "Stereog" rhymes with "hairy dog." Stereog is a MIDI-controlled stereo-preserving granular synthesizer LV2 plugin. It is experimental software

Ed Cashin 6 Jun 3, 2022