# Awesome Music

A categorized collection of awesome music libraries, tools, frameworks and software.

Contributions and suggestions are always welcome! Please take a look at the contribution guidelines and quality standard first.

Thanks to all contributors, you’re awesome and this project wouldn’t be possible without you!

- Awesome Music
  - Audio Editing
  - Audio Libraries
  - Audio Tools
  - Free Music Scores
  - MIDI Tools & Libraries
  - Music Notation
  - Music Programming
  - Music Theory
  - Standards
- Other Awesomeness
  - Related lists

## Audio Editing

- Audacity - a free, cross-platform digital audio editor.
- Ardour - a cross-platform digital audio workstation emphasizing audio recording.
- LMMS - another cross-platform digital audio workstation, more oriented towards making beats.
- OpenUtau - A free, cross-platform singing voice synthesis framework.
- snd - Snd is a sound editor modelled loosely after Emacs.
- Stargate DAW - A cross-platform, all-in-one digital audio workstation and plugin suite, optimized for EDM production.
- TuneFlow - a next-gen DAW that helps you generate melody, beats, or a whole song, while still being able to edit them.

## Audio Libraries

- audio.js - audio.js is a drop-in javascript library that allows HTML5’s <audio> tag to be used anywhere.
- audioFlux - A library for audio and music analysis, feature extraction.
- chord-mark - reference implementation of ChordMark, a text notation format for lyrics, chords and rhythm.
- howler.js - a Javascript audio library for the modern web.
- JSyn - an audio synthesis software API for Java.
- Librosa - a python package for music and audio analysis, providing the building blocks necessary to create music information retrieval systems.
- midi.js - a framework for creating web-based MIDI apps.
- mxml - MusicXML parsing and layout library.
- PortAudio - a free, cross-platform, open-source, audio I/O library.
- RustAudio - an aggregate of free and useful Audio, DSP and music libraries written in Rust.
- Soundpipe - a lightweight DSP library written in C.

## Audio Tools

- Beets - a powerful command-line music organizer and manipulator.
- Cecilia - a Pyo-based graphical environment for music and signal processing.
- cyanrip - rips and encodes standard audio CDs with the least effort required from user. Cross platform.
- fre:ac - free audio converter. It supports audio CD ripping and tag editing.
- Jack - command-line CD ripper.
- K3b - is a full-featured CD/DVD/Blu-ray burning and ripping application.
- Koel - an open-source personal audio streaming server.
- Lame - a high quality, free and open-source MP3 encoder.
- lltag - automatic command-line mp3/ogg/flac file tagger and renamer.
- matchering - сontainerized web application and library for automated reference audio mastering.
- MusicBrainz - Open Encyclopedia for Music information and Metadata, providing a unique ID for everything
- Musikernel - a futuristic audio production platform (hardware support, APIs, hosts, plugins and more)
- Rubyripper - is a secure digital audio extraction application (“cd ripper”) for Unix-like operating systems.
- SoX - a free open-source command line utility for playing, converting and manipulating audio files.
- split2flac - split flac/ape/wv/wav + cue sheet into separate tracks
- Whipper - Python CD-DA ripper preferring accuracy over speed.
- X Audio Copy - GTK and GNOME application for ripping CD-Audio and encoding in lossy and lossless audio formats.

## Free Music Scores

- bayanguru - engraving and publishing system that produces high quality sheet music for bayan in PDF.
- cellist/Lilypond-Sheet-Music - a collection of music typeset with lilypond (mostly chamber music and music for cello).
- ciconia/music - a collection of mostly baroque music, lots of sacred works by J. S. Bach, coded in lilypond/ripple.
- CPDL - the choral public domain library contains more than 20K free scores of vocal music.
- Éditions Nicolas Sceaux - baroque music scores (mainly French music), typeset using lilypond.
- IMSLP - the International Music Score Library Project is the largest collection of public domain scores and parts on the web.
- Lavender Blue Open-Scores - open scores for piano encoded using lilypond.
- Mutopia - sheet music based on editions in the public domain.
- wbsoft/lilymusic - beautiful LilyPond scores under free licenses.

## MIDI Tools & Libraries

- JJazzLab-X - a complete Midi-based framework for automatic backing tracks generation.
- Midifile - C++ library for parsing Standard MIDI Files.
- mido - Python library for working with MIDI messages and ports.
- Polyrhythmix - MIDI drums generator, designed for polyrhythmic parts
- Timidity - an open-source command line synthesizer that plays MIDI files.

## Music Notation

- Abjad - a Python API for Formalized Score Control, based on Lilypond.
- ChordMark - a text-based notation format for lyrics, chords and rhythm.
- Denemo - a free music notation editor based on Lilypond.
- Digital Music Stand - a free web app for displaying sheet music.
- Jan Angermüller’s music fonts page - A listing and visual comparison of different music fonts.
- Frescobaldi - a free Lilypond sheet music editor.
- Guido - a generic, portable library and API for the graphical rendering of musical scores.
- Hacklily - online LilyPond-based sheet music editor (with optional GitHub integration).
- Inknote - free, open source, browser based music notation and composition software.
- JotChord - an online, text-based editor for making PDF-formatted Nashville Number System song charts.
- LibMEI - a C++ library for reading and writing MEI files.
- Lilybin - an open source web-based LilyPond editor.
- Lilypond - free, open-source music engraving program, devoted to producing the highest-quality sheet music possible.
- Lilypond cook book - tips & tricks for getting the most out of lilypond.
- Lilypond Snippet Repository - an online database of Lilypond snippets ideas, features and hacks.
- Lilyvm - Lilypond version manager.
- Lyp - the Lilypond swiss army knife - easily install packages, manage multiple versions of Lilypond, and other tools for power users.
- mei-friend - a friendly, browser-based editor for music encodings.
- MuseScore - free open-source music notation and composition software.
- MusicKit - Music sheet rendering for iOS and OSX.
- neoscore - python library for notating music in a graphics-first paradigm.
- NOTATIO - a forum devoted to the practice of music notation.
- OpenLilyLib - LilyPond tools - snippets, templates, and extensions.
- OpenSheetMusicDisplay - Typescript library for rendering MusicXML in the browser.
- Python-ly - a tool and library for manipulating LilyPond files.
- Ripple - DRY for Lilypond - generate scores and parts with minimal fuss.
- Scorelib - a C++ library for parsing SCORE data files.
- Tbon - Typographic Beat-Oriented Notation for music.
- Unison - Proprietary software for creating music score with words.
- Verovio - a library and a toolkit for engraving MEI music notation into SVG.
- Vexflow - a JavaScript library for rendering music notation and guitar tablature.

## Music Programming

- Alda - a music programming language for musicians.
- Bach: Automated Composer’s Helper - a cross-platform set of patches and externals for Max, aimed to bring the richness of computer-aided composition into the real-time world.
- Cane - A small MIDI sequencer DSL designed around vectors and euclidean rhythms.
- Chuck - strongly-timed, concurrent, and on-the-fly music programming language.
- CoffeeCollider - a language for real time audio synthesis and algorithmic composition in HTML5. “Write CoffeeScript, and be processed as SuperCollider.”
- Common Music - an open source music composition system.
- Csound - a user-programmable and user-extensible sound processing language and software synthesizer.
- DrumBeatRepo - A rhythm library for playing drum beats of differents music genres in the browser.
- Faust - a functional programming language specifically designed for real-time signal processing and synthesis.
- Gwion - A strongly-timed programming language aimed at music creation. Heavily inspired by ChucK.
- IanniX - a graphical open-source sequencer, based on Iannis Xenakis works, for digital art.
- Inscore - an environmnent for the design of interactive, augmented music scores.
- Leipzig - a composition library for Overtone.
- Leiter - TypeScript-based library designed to generate musical scales.
- Midica - MIDI programming language with decompiler and player, supports karaoke.
- music21 - A Toolkit for Computational Musicology.
- Music Suite - a language for generalized music notation and theory, based on Haskell.
- mutwo - a Python library for composition that outputs notation, MIDI or audio files and that provides a generalized model to describe time-based structures.
- Nyquist - a sound synthesis and composition language.
- OpenMusic - a visual programming language based on Lisp.
- Orca - live programming environment for music.
- Overtone - an Open Source toolkit for designing synthesizers and collaborating with music.
- Platonic Music Engine - an open-source music generation framework written in Lua.
- Pure Data - a visual programming language for audio and other multimedia.
- pyo - a Python module to help digital signal processing script creation.
- py-modular - a modular and experimental programming environment with basic DSP routines in python.
- Sardine - a music live coding library for Python 3.10+ (MIDI/OSC/SuperCollider).
- slippery chicken - a Common Lisp environment for composition building on CLM, CMN, CM, MusicXML and Lilypond for score, sound file, and/or MIDI file outputs.
- Sonic Pi - a live coding synth with an emphasis on educational use.
- Sporth - a small stack based audio language.
- Strudel - an experiment in making a language built on javascript for live coding patterns using web technologies.
- SuperCollider - a programming language for real time audio synthesis and algorithmic composition.
- Tidal - a language built on Haskell for live coding patterns.
- Topos - a web based live coding environment (WebAudio / MIDI)
- tuneflow-py - python plugin SDK for the next-gen DAW, that allows you to program your music algorithms & AI models into all stages of music production
- Unilang - Domain specific language used in Unison.

## Music Theory Teaching

- Artusi - Interactive music theory exercises.
- Four Score and More - Tailored music theory exercises based on scores.
- musictheory.net - Lessons and exercises
- OpenMusicTheory - a growing, online “textbook” for music theory and aural skills.
- Theorytab - a database of songs with their chord functions.

## Standards

- MEI (Music Encoding Initiative) - an open-source effort to define a system for encoding musical documents in a machine-readable structure.
- MusicXML - the standard open format for exchanging digital sheet music.
- SMuFL (Standard Music Font Layout) - a specification for mapping music symbols to Unicode for use in music fonts.

# Other Awesomeness

## Related lists

- Awesome Audio DSP - A curated list of audio DSP and plugin development resources.
- Awesome Audio Visualization - A curated list about Audio Visualization.
- Awesome Music Listening - Awesome list of websites dedicated to listening to music.
- Awesome Music Production - A curated list of software and resources to create music.
- Awesome Music Programming - A curated collection of music programming languages, libraries, frameworks and tools.
- Awesome Python for Scientific Audio - A curated list of python software and packages related to scientific research in audio.
- Awesome sheet music - A curated list of awesome sheet music software, libraries and resources.
- Awesome WebAudio - A curated list of awesome WebAudio packages and resources.

Other amazingly awesome lists can be found in the list.

## License

To the extent possible under law, Sharon Rosner has waived all copyright and related or neighboring rights to this work.

music.md Github