The mida package

[Tags:gpl, library, program, test]

MIDA is a minimalistic language for algorithmic generation of MIDI files. MIDA is not interactive in sense that you cannot control result of its activity in real time, it is intended for producers and should be used with a DAW. MIDA can help you create variative elements in your music in a very simple way. Since MIDI can control a lot of different instruments, power of MIDA is truly great. Main reason for MIDA development is to create software tool that can be used in such a way that does not change established workflow, so people could use familiar plugins and software instruments. The core concept of MIDA is building systems with complex behaviors from very basic and easy-to-understand elements and powerful means of their composition. Currently MIDA can be used to translate source files into .mid files, and also in interactive mode that will help you to understand how MIDA language works. See MIDA Manual for more information.


[Skip to Readme]

Properties

Versions 0.4.3, 0.4.4, 0.4.5, 0.4.6, 1.0.0, 1.0.1, 1.0.2
Change log CHANGELOG.md
Dependencies aeson (>=0.7 && <0.12), base (>=4.8 && <5.0), containers (>=0.5.5.1 && <0.6), data-default (>=0.5.3 && <0.8), exceptions (==0.8.*), file-embed (>=0.0.9), filepath (>=1.3.0.2 && <1.5), formatting (>=6.2 && <7.0), haskeline (>=0.7.1.3 && <0.8), HCodecs (==0.5.*), megaparsec (>=5.0 && <6.0), mida (>=1.0.2), mtl (>=2.1.3.1 && <3.0), optparse-applicative (>=0.11.0.2 && <0.13), path (>=0.5.3 && <0.6), path-io (>=0.3.1 && <2.0), process (>=1.2 && <1.5), QuickCheck (>=2.8.2 && <3.0), random, semigroups (==0.18.*), text (>=1.2.0.4 && <1.3), tf-random (>=0.5 && <1.0), transformers (>=0.2.0.0 && <0.6), yaml (>=0.8.15 && <0.9) [details]
License GPL-3
Copyright Copyright © 2014–2016 Mark Karpov
Author Mark Karpov
Maintainer Mark Karpov
Category Language
Home page https://github.com/mrkkrp/mida
Source repository head: git clone https://github.com/mrkkrp/mida.git
Uploaded Sat Sep 10 15:23:05 UTC 2016 by mrkkrp
Distributions NixOS:1.0.2
Downloads 420 total (7 in the last 30 days)
Votes
0 []
Status Docs not available [build log]
All reported builds failed as of 2016-11-20 [all 3 reports]

Modules

  • Mida
    • Mida.Language
      • Mida.Language.Element
      • Mida.Language.Environment
      • Mida.Language.Eval
      • Mida.Language.SyntaxTree
    • Mida.Midi
    • Mida.Representation
      • Mida.Representation.Parser
      • Mida.Representation.Show

Flags

NameDescriptionDefaultType
devTurn on development settings.DisabledManual

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for mida

Readme for mida-1.0.2

MIDA

License GPL 3 Hackage Build Status

MIDA is a minimalistic declarative language for algorithmic generation of MIDI files. MIDA is not interactive in sense that you cannot control result of its activity in real time, it is intended for producers and should be used with a DAW. MIDA can help you create variative elements in your music in a very simple way. Since MIDI can control a lot of different instruments, power of MIDA is truly great.

Main reason for MIDA development is to create software tool that can be used in such a way that does not change established workflow, so people could use familiar plugins and software instruments.

Currently MIDA can be used to translate source files into .mid files, and also in interactive mode that will help you to understand how MIDA language works.

MIDA is a member of Linux Audio consortium.

Installation

  1. Install the Haskell Tool Stack.

  2. Add ~/.local/bin directory to your PATH, like this:

    # in .bashrc or similar
    export PATH=$HOME/.local/bin:$PATH
    
  3. Clone the repo, cd into it, and let stack do its thing:

    $ git clone https://github.com/mrkkrp/mida.git
    $ cd mida
    $ stack build --copy-bins
    
  4. Check it out:

    $ mida --version
    MIDA 1.0.0
    

Example

Here is a simple example of MIDA program that demonstrates syntax and declarative nature of the language.

#
# Example of MIDA program
# Tempo ≈ 50
#

dur0   = 6
dur1   = dur0
dur2   = dur0
dur3   = {96 $ 2, 24}
pch0   = c5 {e5 d5 [a5 a5]} $ 2, g5
pch1   = pch0
pch2   = {c2 c3}
pch3   = {c6 d6 e6 f6 g6 a6 b6 c7 e7}
quiet  = {40..80}
normal = quiet + 30
vel0   = quiet
vel1   = quiet
vel2   = 0, normal $ 2, 0
vel3   = normal

See MIDA Manual for more information.

How to control other things?

If you're into this sort of thing, you may like my another project, called ALGA. It allows to control automation natively in various DAWs.

License

Copyright © 2014–2016 Mark Karpov

Distributed under GNU GPL, version 3.