alga: Algorithmic automation for various DAWs

[ deprecated, gpl, language, library, program ] [ Propose Tags ]
Deprecated.

How to algorithmically control every aspect of music using familiar, robust tools: plugins, DAWs, etc. that have not built with this in mind? I've partially solved the problem in MIDA -- program that generates MIDI files using very simple and symmetric language. However, even though MIDA is a fine tool to create scores, it's not sufficient if you want to control everything. Initially I thought I could find some plugins that can algorithmically control other plugins, but there are no decent tools of this sort. How automation is handled in a traditional DAW? Well, you draw it in a separate track. Wouldn't it be a good idea to algorithmically perform exactly that: drawing of the automation track. This is simpler than it may seem: many DAWs allow to export tracks in XML format, and this is all we need to start our hacking.


[Skip to Readme]
Versions [faq] 0.1.0, 0.2.0, 0.2.1, 0.2.2
Change log CHANGELOG.md
Dependencies alga (>=0.1.0), base (>=4.8 && <5), containers (>=0.5.5.1), directory (>=1.2.1.0), exceptions (>=0.8), filepath (>=1.3.0.2), formatting (>=6.2), haskeline (>=0.7.1.3), hxt (>=9.3.1.15), megaparsec (>=4.2), mtl (>=2.1.3.1), optparse-applicative (>=0.11.0.2 && <0.13), path (>=0.5.3), random, temporary (>=1.2), text (>=1.2.0.4), tf-random (>=0.5), transformers (>=0.2.0.0 && <0.5) [details]
License GPL-3.0-only
Copyright Copyright © 2015 Mark Karpov
Author Mark Karpov
Maintainer Mark Karpov
Revised Revision 1 made by HerbertValerioRiedel at 2019-05-31T09:33:25Z
Category Language
Home page https://github.com/mrkkrp/alga
Source repo head: git clone git://github.com/mrkkrp/alga.git
Uploaded by mrkkrp at 2015-11-23T16:13:53Z
Distributions NixOS:0.2.2
Executables alga
Downloads 2727 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2015-11-23 [all 1 reports]

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for alga-0.1.0

[back to package description]

ALGA

License GPL 3 Hackage Build Status

How to algorithmically control every aspect of music using familiar, robust tools: plugins, DAWs, etc. that have not built with this in mind? I've partially solved the problem in MIDA — program that generates MIDI files using simple, symmetric, declarative language. However, even though MIDA is a fine tool to create scores, it's not sufficient if you want to control everything. Initially I thought I could find some plugins that can algorithmically control other plugins, but there are no decent tools of this sort. How automation is handled in a traditional DAW? Well, you draw it in a separate track. Wouldn't it be a good idea to algorithmically perform exactly that — drawing of the automation track? This is simpler than it may seem: many DAWs allow to export tracks in XML format, and this is all we need to start our hacking.

How does it work?

You export your tracks in XML format, write some scripts in MIDA-like language and patch the XML file. Then you can import the files back, they will (hopefully) have fancy automation tracks in place.

Installation

  1. Install Haskell Platform;

  2. Install Cabal;

  3. Download and untar git repository of MIDA, or clone it:

    $ git clone https://github.com/mrkkrp/alga.git
    
  4. Go to the root directory of the repository and execute:

    $ cabal update
    $ cabal configure
    $ cabal install --only-dependencies
    $ cabal build
    # sh install.sh
    

    or (if you use Stack):

    $ stack build
    
  5. Done (you can use uninstall.sh to uninstall the program).

Example

ALGA is a simple declarative language. Just to get feeling of it:

#
# Example of ALGA program
#

my_track.pan  = {0..16} / 16 $ [{2}]
my_track.pand = 1/8, 0

This thing changes position of stereo-panorama for track named my_track. There are 16 possible values from left to right. Panorama is changed instantly, every eighth note.

You can control volume, panorama, mute, input gain, all parameters of send slots, insertion slots, and software synths. Changes can be applied to audio tracks, group tracks, instrument tracks, and effect tracks.

See ALGA Manual for more information.

License

Copyright © 2015 Mark Karpov

Distributed under GNU GPL, version 3.