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
.