/mercury

A minimal and human-readable language and environment for the live coding of algorithmic electronic music.

Primary LanguageMaxGNU General Public License v3.0GPL-3.0

Mercury Live Coding Environment

A minimal and human-readable language for the live coding of algorithmic electronic audiovisual performances.

Programmed in the Cycling'74 Max8 node-based creative coding environment, as an abstracted layer on the Max/MSP audio engine and with the use of Javascript for parsing, lexing and generative algorithms and Jitter/OpenGL for the visuals and the responsive texteditor.

Table of Contents

About

Mercury is a minimal and human-readable language for the live coding of algorithmic electronic music. All elements of the language are designed around making code more accessible and less obfuscating for the audience. This motivation stretches down to the coding style itself which uses clear descriptive names for functions and a clear syntax. Furthermore the editor is restricted to 30 lines of code, keeping all code always visible. Mercury provides the performer with an extensive library of algorithms to generate or transform numbersequences that can modulate parameters, such as melody and rhythm, over time. The environment produces sound in conjunction with visuals. Besides looking at the code, the audience is also looking at the visuals that are reactive to the sound or generated by the sound.

Vision / Goals

  • Providing a quick and hands-on coding environment/language for expression, communication and improvisation of livecoded works.
  • Using the language as a teaching environment for:
    • introduction in music
    • algorithmic composition
    • sequencing
    • creative coding and live coding.
  • Providing the artist with an extensive library of algorithmic composition techniques
    • In the future released as algo-comp.js node package
  • Providing creatives with a multi-purpose non-linear-sequencer
    • using OSC/MIDI to communicate with other creative-coding platforms
  • Providing creatives with easy sampler/synthesis for sounddesign and composing
    • using external OSC/MIDI to control parameters in the sampler/synthesis
  • Working towards a stand-alone application for MacOS and Windows, making workflow easier
  • Extending the Mercury users-community and including extensions on the environment in the master-branch

Mercury is a development-in-progress, with changes made to the language/environment/libraries almost weekly. Feel free the clone/fork this repository, but you might also want to watch and/or star the repo to keep up-to-date with the latest changes whenever they're made.

Install

Read the system requirements first before getting started.

  1. Download and install Max 8.0.8 (no License required to run Mercury!)

  2. Add the following dependencies to the ~/Documents/Max 8/Packages folder:

  3. Download, clone or fork Mercury

1. Download zip and unpack in ~/Documents/Max 8/Projects
2. Open mercury_ide_v.x.x.maxproj
1. $ cd ~/Documents/Max 8/Projects
2. $ git clone http://github.com/tmhglnd/mercury
3. $ open mercury_ide_v.x.x.maxproj

Getting Started

Open the Getting Started Guide

System Requirements

These system requirements are the requirements to install and run Max8 on your computer. A dedicated Graphics Card (GPU) is recommended to run the visual side of Mercury smoothly (the text-editor is part of the visuals since it is programmed in the OpenGL language).

Mac OSX 10.11.6 or later
Intel® Core™2 Duo processor (Intel® Core™ i5 or higher recommended) 
4 GB RAM (8 GB or more recommended)
(Dedicated Graphics Card recommended)
Windows 7, 8 or 10
64-bit Intel® or AMD multi-core processor. (Intel® Core™ i5 or higher processor or recommended)
4 GB RAM (8 GB or more recommended)
(Dedicated Graphics Card recommended)

Tested working on a variety of computers and operating systems.

Mac OSX 10.12
Mac OSX 10.14
Microsoft Windows 10 Home

Build Application

Optional

The Cycling'74 Coding environment is needed to build the application from the mercury_ide_x.x.x.maxproj file. Open the .maxproj file and select Build Collective/Application from the Settings menu on the bottom of the project window. Building the Application is not necessary in order to run the environment!

Documentation

Open the documentation

Modify Code

patchers - Requires Max8 environment and license to edit/modify/save the patchers of this project.

JS code - Requires a standard code-editor (eg. VSCode or Atom) to edit/modify/save the JS code.

GenExpr Code - Requires a standard code-editor (eg. VSCode or Atom) to edit/modify/save the GenExpr code.

Further reading and listening

  1. Mercury homepage
  2. Paper in ICLC 2019
  3. Music on bandcamp

Thanks

Licenses

  1. Main Source - The GNU GPL v.3 License (c) Timo Hoogland 2019
  2. Sound Files - Individually licensed, listed under media/README.md
  3. Documentation - The CC BY-SA 4.0 License (c) Timo Hoogland 2019
  4. Examples - The CC BY-SA 4.0 License (c) Timo Hoogland 2019
  5. Max8 - Proprietary Software, Max (c) 1990-2019 Cycling'74 / IRCAM All rights reserved

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.