music-suite / Music Suite
Licence: bsd-3-clause
Music in Haskell
Stars: ✭ 166
Programming Languages
haskell
3896 projects
Labels
Projects that are alternatives of or similar to Music Suite
Omr Datasets
Collection of datasets used for Optical Music Recognition
Stars: ✭ 158 (-4.82%)
Mutual labels: music
Web
Angular6 music player to search and play YouTube, SoundCloud and Mixcloud tracks
Stars: ✭ 156 (-6.02%)
Mutual labels: music
Viano
A toy that lets you write songs using Vue components.
Stars: ✭ 158 (-4.82%)
Mutual labels: music
Lstm Music Genre Classification
Music genre classification with LSTM Recurrent Neural Nets in Keras & PyTorch
Stars: ✭ 166 (+0%)
Mutual labels: music
Ni Media
NI Media is a C++ library for reading and writing audio streams.
Stars: ✭ 158 (-4.82%)
Mutual labels: music
Discord Player
🎧 Complete framework to simplify the implementation of music commands using discords.js v12
Stars: ✭ 161 (-3.01%)
Mutual labels: music
Itunes Remote
Remotely control iTunes on Mac without Internet 🎶📱
Stars: ✭ 160 (-3.61%)
Mutual labels: music
Bravura
Bravura music font, reference font for SMuFL (Standard Music Font Layout)
Stars: ✭ 155 (-6.63%)
Mutual labels: music
Torch Audiomentations
Fast audio data augmentation in PyTorch. Inspired by audiomentations. Useful for deep learning.
Stars: ✭ 164 (-1.2%)
Mutual labels: music
Album Splitter
Split a single-file mp3 album into its tracks. Supports downloading from YouTube.
Stars: ✭ 160 (-3.61%)
Mutual labels: music
Music Suite
Music Suite is a language for describing music, based on Haskell.
How to build
Set up the build environment
Install Nix (2.3.1 or later).
Enter build environment using:
nix-shell --pure
You should see this prompt:
#
Inside the build shell, the following commands can be used:
Build the library and examples
# cabal update
# cabal build
Build and run the tests
Standard test suite
# cabal test --test-show-details=streaming --test-options=--color=always
To run individual tests:
# cabal run TEST_NAME -- TEST_ARGS...
e.g.
cabal run music-suite-test-xml-parser
Doctests
# cabal build && doctests
To run doctests for individual files/directories:
# cabal build && cabal exec doctester --package music-suite -- src/Music/Pitch
Development shell
# cabal build music-suite && cabal exec --package music-suite ghci
or
# cabal repl
Build the documentation
User Guide
TODO
The output appears in docs/build
. You can point a HTTP server to this directory.
API docs
m> cabal haddock
Run example
cabal exec runhaskell -- examples/chopin.hs -f ly -o t.ly
How to upgrade the compiler/Nixpkgs
- Update the commit/URL and hash in
default.nix
- Use
$ nix-prefetch-url --unpack <url>
to obtain the hash (and verify)
- Use
- Enter new Nix shell (may take a while)
- Comment out
reject-unconstrained-dependencies
in Cabal config - Update
index-state
in Cabal config to a recent time - Run
cabal freeze
- Run
cabal test
to check that compiling/testing works (and fix errors) - Restore
reject-unconstrained-dependencies
- Commit changes to Nix and Cabal files
Developer notes
Module hierarchy
-
The high-level DSL:
-
Music.Time
: high-level DSL for time and rhythm -
Music.Pitch
: high-level DSL for pitch (common, scientific) -
Music.Dynamics
: high-level DSL for dynamics -
Music.Articulation
: high-level DSL for musical articulation -
Music.Part
: high-level DSL for instruments and parts -
Music.Prelude
: prelude/standard library for the Music Suite DSL
-
-
The notation DSL:
-
Music.Notation.Standard
: DSL for representing Common/Western music notation
-
-
Import & Export:
-
Data.Music.Lilypond
: AST, parsing and pretty-printing for the Lilypond language -
Data.Music.MusicXml
: AST, parsing and pretty-printing for MusicXML
-
-
Utility
-
Control.*
: miscellaneous algorithms and utilities -
Data.*
: miscellaneous data structures
-
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].