All music and examples herein are licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. ## Computer music in the cloud by [Michael Gogins](https://michaelgogins.tumblr.com) This is computer music that is hosted online, but actually rendered in Web browsers. The pieces are not soundfiles and they are not streamed. Each piece is a Web page that contains embedded software that runs in the browser to synthesize the music. Most pieces will play indefinitely. There may or may not be animated visuals along with the music. The listener may or may not be able to control and/or customize the piece -- perhaps quite a bit, amounting to a new piece, co-composed with me. For more information on most of these pieces, open the piece and view its About tab, or use the browser's inspector to view the underlying code. - [Scrims](scrims.html), a JavaScript piece that samples an animated WebGL hopalong fractal to obtain notes that are then harmonized using CsoundAC's chord space operations. - [Cloud Music No. 1](cloud_music_no_1.html). - [Cloud Music No. 2](http://localhost:8000/cloud_music_no_2.html). - [Cloud Music No. 3](http://localhost:8000/cloud_music_no_3.html). - [Cloud Music No. 4](http://localhost:8000/cloud_music_no_4.html). - [Cloud Music No. 6](http://localhost:8000/cloud_music_no_6.html). - [Cloud Music No. 8](http://localhost:8000/cloud_music_no_8.html). - [Cloud Music No. 9](cloud_music_no_9.html). - [Cloud Music No. 14](cloud_music_no_14.html). This one has a button so the user can record a performance and download the resulting soundfile. - [2024-ICSC](2024-ICSC.html), prepared for the 2024 International Csound Conference in Vienna. This is the same as Cloud Music No. 14, except that the "Full screen" menu item moves compositional controls onto a second monitor for unobscured visuals. - [Cancycle](cancycle.html). Set up to enable live coding. - [Polymetric](polymetric.html). # [cloud-5](https://github.com/gogins/cloud-5) The cloud-music pieces are implemented using my cloud-5 system for creating computer music that runs in Web browsers. This in turn is based on my own WebAssembly builds of Csound and CsoundAC. Some pieces may use third party libraries. The home page of Csound itself is here. Code written as part of cloud-5 is licensed under the terms of the same license as Csound, the [GNU Lesser Public License, version 2.1](https://github.com/csound/csound/blob/master/COPYING). Components and libraries used by cloud-5 come under a variety of open source licenses; see the links to individual packages for more information. ## Introduction The cloud-5 system is designed for making sophisticated computer music purely in the HTML5 environment. The system is especially suited for pieces that play online, for pieces that play indefinitely, for visual music, for algorithmic composition, and for live coding. cloud-5 runs on every system with an audio output that can run a Web server and a standards compliant Web browser. That includes _all_ computers running macOS, Linux, or Windows, as well as most Android devices. For recent changes, see the _[Release Notes](#release-notes)_ at the end of this document. ## Getting Started ### Pre-requisites - A Web server that will run from a configurable directory in which you can read, edit, and write files. On most systems, the simplest way to get a Web server is to install [Python 3](https://www.python.org/). - A standards-compliant Web browser (currently, that includes nearly all Web browsers). Should already exist on your system. On Android, install a Web server app such as [Phlox](https://play.google.com/store/apps/details?id=com.phlox.simpleserver). - A text or code editor for writing your compositions. A simple text editor should already exist on your system. I use [Visual Studio Code](https://code.visualstudio.com/) myself, as it is very powerful and yet easy to customize. On Android, install a text editor such as [QuickEdit Pro](https://play.google.com/store/apps/details?id=com.rhmsoft.edit.pro). ### Installation There is no installation! Simply download the release, and unzip it into a cloud-5 directory. cloud-5 can be stored on a USB thumb drive, and will run with all functionality _from_ the thumb drive. This makes it possible to carry all of your work in progress from computer to device to computer. Or, simply copy the entire cloud-5 directory with all contents to your computer or device. Make sure you can execute, read, edit, and write files in your cloud-5 directory. ### Configuration There is no configuration! Well, actually there might be one thing. You might need to configure your local Web server to serve files from your cloud-5 directory. ### Running 1. Start a local Web server to serve the cloud-5 directory. The easiest way to do this on most systems is to open a terminal, change to your cloud-5 directory, and execute `python3 -m http.server`. 2. Start your Web browser, and navigate to your cloud-5 Web site (usually just something like `https://localhost:8000`). Some users have problems with Firefox, e.g. with WebMIDI permissions. If you experience this, try the Chrome browser. 3. You should see this README as a Web page. Click on [cloud_music_no_1.html](cloud_music_no_1.html) and verify that you see animated graphics, and can play and hear the piece. 4. Some cloud-5 pieces use the dat.gui library to create a popup menu of controls for Csound instruments or other purposes. You can create new presets, and you can get the Web browser to remember the current preset parameters in local storage. If you need to revert to the hard-coded parameters in a piece, clear local storage in the browser settings, or in the browser's debugger. ## Making Music In cloud-5, musical compositions are written as Web pages, i.e. as .html files. It's a good idea for each composition to be written as just one .html file. It must be in your cloud-5 directory. Any Csound orchestra code, JavaScript code, and GLSL shader programs should simply be embedded in the HTML file in, e.g., template strings (string literals) in JavaScript code, or included as ` Githubissues.