This
work is licensed under a Creative
Commons Attribution-NonCommercial-ShareAlike 4.0 International
License.
This is real music. But it is not a streaming recording. It is not performed in a concert. These pieces are Web pages that are loaded from my Web server and run in your browser – in any standard Web browser, including mobile devices (at least, if they are powerful enough).
Each piece will play indefinitely. There may or may not be animated visuals along with the music. The listener may or may not be able to customize the piece – perhaps quite a bit, amounting to a new piece, co-composed with me.
The underlying technology is my WebAssembly build of Csound with CsoundAC. Some pieces use third party libraries, especially Strudel, a JavaScript port of the live coding system Tidal Cycles.
A Csound Player that will play, and let you edit, any Csound piece that you paste into the text area.
Message from Another Planet, a Csound piece with a basic HTML user interface.
Strudel REPL, exactly the same as the main Strudel Web site.
Trichord Space, an interactive piece that displays Dmitri Tymoczko’s chord space for trichords, with the ability to perform, hear, and visualize various operations on the chords in the space.
Scrims, a JavaScript piece that samples an animated WebGL hopalong fractal to obtain notes that are then harmonized using CsoundAC’s chord space operations.
For more information on the following pieces, read the About page in the piece itself.
Cloud Music No. 14. This one has a button so the user can record a performance and download the resulting soundfile.
Cancycle, a piece for live coding.
I am working on supporting the use of CsoundAC in the Strudel REPL.
The most important thing is to import the csoundac.mjs
module in your Strudel patch. To see how this is done, look at the
following pieces. At the present time, these are also the unit tests fr
csoundac.mjs
. Comments and suggestions are wecome.
I have designed this repository not only to present some of my compositions, but also to serve as a development environment/computer music studio for working with Csound, algorithmic composition, and live coding in a completely platform-independent way.
All software used here is JavaScript, WebAssembly, or HTML. All third party dependencies are contained in this repository as static files.
To use cloud-music, fork cloud-music on GitHub and clone your fork on your own computer. You can also just download the latest cloud-music release as a zip file and unzip it on your computer.
This is actually the easiest way to install a usable version of Csound on your computer.
There is no need to build or configure anything. In a terminal,
simply change to your cloud-music directory and run
python3 -m http.server
. Then you can use your Web browser
to go to http://localhost:8000
, where you can view and run
any of these compositions in your browser.
To create a new composition, simply create a new HTML file. You can copy one of my existing pieces as a template and modify it, or you can create a new HTML file from scratch.
Important note! If you are simply
using cloud-music to write pieces, write them in the dist
directory. However, if you are going to build cloud-music yourself, for
example to keep up with new releases of Strudel, then write your pieces
in the public
directory, and build cloud-music.
Although cloud-music renders audio only in real time, it is easy to use an audio loopback driver to route audio from the system output to an audio recorder and save the recording as a soundfile. On my MacBook Pro, I have been able to use BlackHole to route audio from cloud-music pices to Audacity.
Because algorithmic compositions are generally also software, the line between compositions and other software can become blurred. However, it is often the case that a composer will write new software as libraries or other resources to support a number of their musical compositions.
To develop this kind of software in your fork of cloud-music, keep in mind that the cloud-music project uses pnpm, which of course must first be installed.
If you just want to work in the context of a Web site created in your
fork of cloud-music, then just writing static code in the
public
directory would be fine, and by far the easiest.
Otherwise, take a look at README.md
and at the build system files such as package.json
.