tonal - A functional music theory library for Javascript

  •        21

tonal is a small (20kb minified, 6kb gzipped) javascript modular music theory library. It provides functions to manipulate tonal elements of music (pitches, chords, scales, keys). It deals with abstractions (not actual music). It uses a functional programing style: all functions are pure, there is no data mutation, entities are represented by data structures instead of objects, and lot of functions accept partial application.

https://github.com/danigb/tonal#readme
https://github.com/danigb/tonal

Dependencies:

global : ^4.3.2

Tags
Implementation
License
Platform

   




Related Projects

teoria - Javascript taught Music Theory

  •    Javascript

Teoria.js is a lightweight and fast JavaScript library for music theory, both Jazz and Classical. It aims at providing an intuitive programming interface for music software (such as Sheet Readers, Sheet Writers, MIDI Players etc.). A scale object (teoria.Scale), The scale object is a powerful presentation of a scale, which supports quite a few handy methods. A scale can either be constructed from the predefined scales, which by default contains the 7 modes (Ionian, Dorian, Phrygian etc.) a major and minor pentatonic and the harmonic chromatic scale or from an arbitrary array of intervals. The scale object also supports solfège, which makes it perfect for tutorials on sight-reading.

essentia - C++ library for audio and music analysis, description and synthesis, including Python bindings

  •    Jupyter

Essentia is an open-source C++ library for audio analysis and audio-based music information retrieval released under the Affero GPL license. It contains an extensive collection of reusable algorithms which implement audio input/output functionality, standard digital signal processing blocks, statistical characterization of data, and a large set of spectral, temporal, tonal and high-level music descriptors. The library is also wrapped in Python and includes a number of predefined executable extractors for the available music descriptors, which facilitates its use for fast prototyping and allows setting up research experiments very rapidly. Furthermore, it includes a Vamp plugin to be used with Sonic Visualiser for visualization purposes. Essentia is designed with a focus on the robustness of the provided music descriptors and is optimized in terms of the computational cost of the algorithms. The provided functionality, specifically the music descriptors included in-the-box and signal processing algorithms, is easily expandable and allows for both research experiments and development of large-scale industrial applications. If you use example extractors (located in src/examples), or your own code employing Essentia algorithms to compute descriptors, you should be aware of possible incompatibilities when using different versions of Essentia.

coltrane - 🎹🎸A music theory library with a command-line interface

  •    Ruby

A music calculation library/CLI written in Ruby. You shall provide chords separated by dashes (--chords CM7-Dm7-EM) or notes (--notes C-Ab-F-G).

Music Theory Environment

  •    Java

Provide a computer environment which will facilitate finding patterns and relationships between chords, scales, intervals, keys in an automated manner. In it's current form it may be used as a music theory educational tool for guitar and piano.

clubber - Application of music theory in audio reactive visualizations

  •    Javascript

This small js library listens to audio sources and extracts the underlying rhythmic information. The linear frequency energies are converted into midi notes which music theory suggests to be a better segregation for music audio. A set of meaningful measurements are produced in a form suitable for direct use in webgl shaders, or any other context. This simple flow provides a powerful framework for the rapid development of awesome audio reactive visualisations.


KLearnNotes2

  •    C

A software for teaching the names of music notes. *Intelligent questioning *Gradual learning of successive notes *Bass and treble clefs *A game *Voice recognition, sound. In future:rhythm, scales, key signatures, chords with focus on playing the guitar.

bob music generation engine

  •    Java

Java software for the generation of pseudo-random music (currently midi only) based on various input parameters (BPM, Key, Scale/Mode, etc) and voice leading algorithms.

Yet Another Music Application - A simple approach to music in DotNet

  •    CSharp

Stoffi Music Player is a new beautiful, integrated, compact & free music player. Stoffi focuses on consolidating the key features spread over various music players into one unified music player. It is also aimed at being simple but powerful at the same time. It has youtube support, Equalizer with echo effect, Remote control, Queue your music, Song bookmark and lot more.

geemusic - A bridge between Google Music and Amazon's Alexa

  •    Python

GeeMusic is an Alexa skill which bridges Google Music and Amazon's Alexa. It hopes to rescue all of those who want an Echo/Dot but don't want to switch off of Google Music or pay extra for an Amazon Music Unlimited subscription. This project is still in its early phases and subject to a bit of change, however it is functional and ready for use! The only catch is that you'll need to run it on your own server for the time being (ideally I'll eventually release this on the Alexa Skills marketplace, but there's a lot of work to do before then).

Scale and Chord Generator

  •    Python

Scale amp; Chord Generator gives a visual display of chords and scales in any key on a musical staff, keyboard, guitar fretboard and bass guitar fretboard. Each note of the chosen chord or scale is displayed along with a related chord or scale to be played

Tapper

  •    Java

Tapper is a music teaching tool for players of The Chapman Stick. The user selects the instrument's tuning, the key and the chord or scale they wish to play. Tapper will display the proper fingering for that chord or scale.

JTheory - A music theory tool.

  •    Java

JTheory is a java music, scales and theory tool. Written in java so that it can be used on any platform, eventually even mobile devices through J2ME. It comprises of a library for representing scales as well as visual tools for different instruments.

Practical Music Search

  •    C++

Practical Music Search is a ncurses-based client for the Music Player Daemon. It has a command line interface much like Vim, and supports custom colors, layouts and key bindings. PMS aims to be accessible and highly configurable.

Music Keys

  •    DotNet

PL: MusicKeys to program do mapowania plików muzycznych do przycisków klawiatury. EN: MusicKeys is program for mapping music files to keyboard buttons.

category-theory-programmers - Notes on category theory in the context of (functional) programming

  •    

This document contains notes on category theory in the context of (functional) programming. Originally they were lecture notes for a seminar hosted at Centrum Wiskunde & Informatica, the national research centre for mathematics and computer science in the Netherlands. The main reason for compiling these notes is to provide a way to gain familiarity with concepts of category theory (and other branches of mathematics) that apply in a broad sense to the field of functional programming. The notes are written in Markdown, and pandoc is used to generate the document. Running make inside the doc directory should result in an (updated) pdf, granted that pandoc, pandoc-citeproc and a LaTeX environment are installed.

DixShtix Java Music Library

  •    Java

Java Music Theory and Practice, with Open Source libraries and applications. Goals: MIDI/RMF support, NIFF Support, Notation Display (Dec '01), Score Editor (Feb '02), XML (various) support, Export as AU/WAV/AIFF, Instrument Creation, SMDL Support.

DeepJ - A deep learning model for style-specific music generation.

  •    Python

Recent advances in deep neural networks have enabled algorithms to compose music that is comparable to music composed by humans. However, few algorithms allow the user to generate music with tunable parameters. The ability to tune properties of generated music will yield more practical benefits for aiding artists, filmmakers, and composers in their creative tasks. In this paper, we introduce DeepJ - an end-to-end generative model that is capable of composing music conditioned on a specific mixture of composer styles. Our innovations include methods to learn musical style and music dynamics. We use our model to demonstrate a simple technique for controlling the style of generated music as a proof of concept. Evaluation of our model using human raters shows that we have improved over the Biaxial LSTM approach. Clone Python MIDI (https://github.com/vishnubob/python-midi) cd python-midi then install using python3 setup.py install.

CherryMusic - A music streaming server written in python

  •    Python

CherryMusic is a music streaming server written in python. It helps to stream your own music collection to all your device. It provides support to share playlists with your friends. It has a built-in database, that will index your music. Find your favorite song in an instant. It plays the music inside your PC, smartphone, tablet, toaster or whatever device has a HTML5 compliant browser installed.

Shiva Server - A RESTful API to your music collection

  •    Python

Shiva is An API to your music, A music player and A music collection organizer. It indexes your music and exposes an API with the metadata of your files so you can then perform queries on it and organize it as you wish.