Giter Site home page Giter Site logo

aeon's Introduction

aeon [alpha]

A music live-coding suite. Still under development, and not ready for prime-time yet!

Overview

aeon is a live-coding music system. That means that you can improvise live electronic music by typing into a text editor or terminal. Its primary purpose is to create sequences of musical events that can be modified on the fly.

This is far from a new idea, as the list of alternatives suggests. But aeon tries to bring some new ideas to the table, or at least to remix existing ones in novel ways. Some of these are listed in the ‘features’ document. If you want more comprehensive documentation, try the tutorial or manual.

The most important thing: you don’t need to know programming to use aeon. At least, that is my goal. Instead toyou’ll be using a very stripped-down custom notation to define patterns. I think of it a bit like HTML for music. And later you may accidentally learn some programming if you aren’t careful ;)

Installation

aeon currently supports macOS and Linux only. If you’re on Linux, you already have (and probably use) a package manager. If you’re on macOS, I recommend you install Homebrew.

# Install dependencies:
$ brew install chezscheme supercollider # macOS
$ sudo apt install chezscheme supercollider # Ubuntu/Debian linux

# Install
$ git clone [email protected]:tommaisey/aeon.git
$ cd aeon
$ chez aeon.scm

Note that some package managers name the Chez Scheme binary scheme, so the final command might be scheme aeon.scm.

You should see a Chez Scheme welcome message followed by some messages about files being compiled. This will take a short while, but should only happen the first time you launch aeon.

If everything went well, you should see the following message:

-----------------------------------------------
[aeon] musical patterns
-----------------------------------------------

Now you can check that your sound is working by typing this and pressing enter:

(pattern hello (in! (over [4 2 1 2])))

To stop the sound, type: (stop hello). To exit aeon entirely you can hit Ctrl-D or type (exit).

If you want to learn how to get started constructing patterns, sounds and projects, head to the ‘tutorial’ document.

Using a text editor

The REPL (the prompt you are now in) is a fun way to explore and test ideas while learning. But as you build more complex patterns you will want to store and edit them in text files.

The simplest approach is to write your code in any editor you like, then launch scheme aeon.scm and run (load "/path/to/my/file.scm") to evaluate it. You can resave your text file and rerun that command to change the pattern as it plays.

However, for a more seamless experience you will want two things:

  1. Send code to the REPL directly from your editor.
  2. Structural editing and navigation.

‘Structural editing’ is a fancy way of saying that your editor can navigate and edit code quickly using the ubiquitous parentheses () of scheme. This turns those annoying and fiddly parentheses into an advantage, streamlining your experience enormously. But it does take a little practice.

My plan is to create a simple plugin for VS Code that offers these features in the simplest way possible.

Until then, the best choices are:

If you’re not experienced with Emacs, note that it can take a long time to become proficient and to customize it to your tastes. However, the end result is powerful and satisfying. If you just want to make music quickly, you should use VS Code, which is more friendly to newcomers.

Troubleshooting

If you don’t hear any sound it’s likely that SuperCollider isn’t connecting to your audio outputs correctly. The log output above may give some clues, or if not, it’s worth hitting Ctrl-D to get out of scheme, and running scsynth directly, to see if it can tell you more:

# macOS:
$ /Applications/SuperCollider.app/Contents/Resources/scsynth -u 57100

Alternatives

There are many other live-coding systems that you can try, each with different approaches and design trade-offs. Here are some of my favourites:

aeon's People

Contributors

tommaisey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aeon's Issues

Add in-editor documentation

Scheme doesn't have the nice docstring that's found in e.g. Clojure. Instead, let's write a simple system to register a docstring for a given function name, and a simple macro to spit it out without needing to quote. So then (once the work of writing the docs is done...) we can do this:

(doc in:) => "Sets one or more properties on the events it receives..."
(doc euc) => "Returns a eucilidean rhythm. args: steps hits offset [/opt (on-val 1) (off-val '~)] "

Add `bits` cval function

Returns a list of 1s or rests of a certain length. Arguments:

  • N the number of elements
  • permutation rotates through all the possible list arrangements for N.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.