Skip to content

Releases: gogins/cloud-5

cloud-5 version 1 beta

17 Apr 16:02
Compare
Choose a tag to compare
Pre-release

This is the first full release of the cloud-5 browser-based computer music system, which enables writing sophisticated computer music compositions that run in Web browsers and can use browser-based Csound, Strudel, and CsoundAC.

  • The code has been refactored into a cloud-5.js file that defines custom HTML elements and code for simplifying the writing of cloud-5 compositions.
  • Examples have been added that illustrate the use of these custom elements.
  • API documentation has been added.
  • The release now includes a production-ready cloud-5.zip. Download this archive, unpack it into a directory, and run a local (or other) Web server in that directory. One can then immediately run the examples in your Web browser or create new compositions in that directory. There are no external dependencies.

For more information, see README.md or the jsdocs.

This is a beta release. Please enter any bugs, comments, or requests in the GitHub issues for this repository.

cloud-5 v0.2

18 Jan 19:07
Compare
Choose a tag to compare

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

For recent changes, see the Release Notes at the end of
this document.

It also is possible to run cloud-5 pieces locally in NW.js
using csound.node. In this
case, csound.node provides a native code build of Csound, and such pieces can
load native code plugins and read and write to the local filesystem.

Components

  • Csound version 6.19, one of the oldest and most
    powerful sound programming languages, compiled for WebAssembly to run in
    Web browers in csound-wasm.

  • CsoundAC, my C++ library for
    algorithmic composition with Csound,
    compiled for WebAssembly to run in Web browsers in
    csound-wasm, and incorporating
    my implementation of mathematical theories of chord space and
    neo-Reimannian operations, and scales and functional harmony, by
    Dmitri Tymoczko.

  • A collection of predefined Csound instrument definitions by me from
    CsoundAC.

  • Strudel, a JavaScript port of the
    widely used live coding system Tidal Cycles, by
    Alex McLean, Felix Roos, and others. Note: cloud-5 makes several
    necessary patches to the Strudel source code and distribution.

  • Of course, a standards-compliant Web browser, which has an awesome set of
    capabilities, including the most widely used programming language,
    JavaScript, which can call Csound, CsoundAC, and Strudel.

Capabilities

  • High-resolution, sample-accurate sound synthesis using one of the largest and
    most capable libraries that exists for synthesis and signal processing, the
    Csound opcodes.

  • Interactive live music coding using the domain-specific, real-time music
    programming language Strudel; this includes a neat animated piano roll
    display of the notes from the music that is playing.

  • Control of Csound from Strudel. This includes both real-time notes
    generated by Strudel patches for the csound and csoundm outputs, and
    real-time control channel values created by Strudel Patterns, including the
    new slider widget.

  • MIDI input and output from Csound and Strudel.

  • Open Sound Control input and output from Csound and Strudel.

  • Several systems for time-frequency analysis/synthesis, from Csound, including
    Victor Lazzarini's
    phase vocoder streaming
    (PVS) opcodes.

  • Several high-fidelity sample players, from Csound
    (Fluidsynth opcodes)
    and Strudel (superdough).

  • High-resolution, three-dimensional, animated computer graphics using
    WebGL and/or OpenGL Shader Language (GLSL), from the Web browser.

  • All of the staggering panoply of capabilities that are built into every
    standards-compliant Web browser, see HTML5 Test.

Running in the Browser

Limitations

The major limitation of running in the browser is that csound-5 pieces are
sandboxed, and cannot write to the file system. In other words, cloud-5
cannot write soundfiles, or any other kind of files. That means all audio is
streaming audio.

However, it is possible to use an audio loopback driver such as
BlackHole to route
audio produced by cloud-5 to a digital audio workstation that can write
soundfiles. The maximum resolution of such soundfiles is floating-point
samples at 48 KHz, significantly higher resolution than the CD format.

To set this up on the Mac, open the Audio MIDI Setup app, click on the + at
the bottom, and click on Create Multi-Ouput Device, including both your
standard audio output and BlackHole. Then, in the Sound settings, select that
Multi-Output Device as the default output. Finally, in your DAW or recording
software, select BlackHole as the audio input device.

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.

  • 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.

  • A text or code editor for writing your compositions. A simple text editor
    should already exist on your system. I use
    SciTE myself as it is very
    lightweight and yet very easy to customize. On Android, install
    a text editor such as
    QuickEdit Pro.

  • Of course, an audio driver that will play audio from Web browsers! Should
    already be part of your operating system.

Installation

There is no installation!

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 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.

Running in NW.js

It also is possible to run cloud-5 pieces locally in NW.js
using csound.node.

This involves installing a number of pre-requisites, but the advantages
include somewhat higher performance from native code Csound, the ability to
use native plugins (both Csound plugin opcodes and VST3 plugins), and the
ability to read and write in the local filesystem.

Installation

  1. Install regular Csound for desktop computers.
  2. Install pnpm.
  3. Install [csound.node](https://github.com/gogins/cs...
Read more

cloud-5 v0.1

02 Jan 14:12
Compare
Choose a tag to compare

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

For recent changes, see the Release Notes at the end of
this document.

It also is possible to run cloud-5 pieces locally in NW.js
using csound.node. In this
case, csound.node provides a native code build of Csound, and such pieces can
load native code plugins and read and write to the local filesystem.

Components

  • Csound version 6.19, one of the oldest and most
    powerful sound programming languages, compiled for WebAssembly to run in
    Web browers in csound-wasm.

  • CsoundAC, my C++ library for
    algorithmic composition with Csound,
    compiled for WebAssembly to run in Web browsers in
    csound-wasm, and incorporating
    my implementation of mathematical theories of chord space and
    neo-Reimannian operations, and scales and functional harmony, by
    Dmitri Tymoczko.

  • A collection of predefined Csound instrument definitions by me from
    CsoundAC.

  • Strudel, a JavaScript port of the
    widely used live coding system Tidal Cycles, by
    Alex McLean, Felix Roos, and others. Note: cloud-5 makes several
    necessary patches to the Strudel source code and distribution.

  • Of course, a standards-compliant Web browser, which has an awesome set of
    capabilities, including the most widely used programming language,
    JavaScript, which can call Csound, CsoundAC, and Strudel.

Capabilities

  • High-resolution, sample-accurate sound synthesis using one of the largest and
    most capable libraries that exists for synthesis and signal processing, the
    Csound opcodes.

  • Interactive live music coding using the domain-specific, real-time music
    programming language Strudel; this includes a neat animated piano roll
    display of the notes from the music that is playing.

  • Control of Csound from Strudel. This includes both real-time notes
    generated by Strudel patches for the csound and csoundm outputs, and
    real-time control channel values created by Strudel Patterns, including the
    new slider widget.

  • MIDI input and output from Csound and Strudel.

  • Open Sound Control input and output from Csound and Strudel.

  • Several systems for time-frequency analysis/synthesis, from Csound, including
    Victor Lazzarini's
    phase vocoder streaming
    (PVS) opcodes.

  • Several high-fidelity sample players, from Csound
    (Fluidsynth opcodes)
    and Strudel (superdough).

  • High-resolution, three-dimensional, animated computer graphics using
    WebGL and/or OpenGL Shader Language (GLSL), from the Web browser.

  • All of the staggering panoply of capabilities that are built into every
    standards-compliant Web browser, see HTML5 Test.

Running in the Browser

Limitations

The major limitation of running in the browser is that csound-5 pieces are
sandboxed, and cannot write to the file system. In other words, cloud-5
cannot write soundfiles, or any other kind of files. That means all audio is
streaming audio.

However, it is possible to use an audio loopback driver such as
BlackHole to route
audio produced by cloud-5 to a digital audio workstation that can write
soundfiles. The maximum resolution of such soundfiles is floating-point
samples at 48 KHz, significantly higher resolution than the CD format.

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.

  • 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.

  • A text or code editor for writing your compositions. A simple text editor
    should already exist on your system. I use
    SciTE myself as it is very
    lightweight and yet very easy to customize. On Android, install
    a text editor such as
    QuickEdit Pro.

  • Of course, an audio driver that will play audio from Web browsers! Should
    already be part of your operating system.

Installation

There is no installation!

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 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.

Running in NW.js

It also is possible to run cloud-5 pieces locally in NW.js
using csound.node.

This involves installing a number of pre-requisites, but the advantages
include somewhat higher performance from native code Csound, the ability to
use native plugins (both Csound plugin opcodes and VST3 plugins), and the
ability to read and write in the local filesystem.

Installation

  1. Install regular Csound for desktop computers.
  2. Install pnpm.
  3. Install csound.node. Note that
    the API for csound.node is virtually the same as the API for my WebAssembly build
    of Csound.
  4. Install NW.js.

Configuration and Running

Read about csound.node
and make sure that the application directory for your csound.node pieces is the ...

Read more

cloud-5 v01 beta 6

20 Oct 15:03
Compare
Choose a tag to compare
cloud-5 v01 beta 6 Pre-release
Pre-release

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

Release Notes

v0.1beta6

  • Introduced the CsoundAC track function, a variant of Strudel's arrange
    that does not crash when the number of cycles for a section is set to zero
    to silence it.

  • Improved the CsoundAC csoundn output to send all control parameters
    with names beginning gi or gk to Csound as control channel values;
    these channels must first be set up in the Csound orchestra with the same
    names.

  • Added cancyle.html, a piece designed for live performance by doing a
    modest amount of live coding during play.

v0.1beta5

  • Updated Strudel to get the extremely useful slider, which can be either
    discrete or continuous. The slider is embedded directly into the Strudel
    patch.

  • Added some code to csoundn that sends the value of any Strudel control
    registered with createParam and whose name begins with gi or gk to
    Csound as a control channel value. This also means that the new slider
    widget in Strudel can send its value to the Csound control channel.

v0.1beta4

  • Attempts have been made to correct the scheduling of the csoundn output
    based on a trigger, and to get csoundn to output correct piano roll
    events.

  • Put in diagnostic messages marked sync for testing.

  • Colorize notes in the piano roll that come from csoundn.

  • In package.json always make a releasable zip file in each build.

v0.1beta3

  • Put in needed patch for cyclist.mjs.

  • Restored concatenated Strudel controls string in csoundac.mjs.

v0.1beta2

  • Improved README.md/index.html.

  • Corrected broken links and incorrect credits in example pieces.

  • Replaced the favicon from Strudel with cloud-5's own favicon.

v0.1beta

  • This was the initial release.

cloud-5 v0.1 beta release 5

04 Oct 17:22
Compare
Choose a tag to compare
Pre-release

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

Release Notes

v0.1beta5

  • Updated Strudel to get the extremely useful slider, which can be either
    discrete or continuous. The slider is embedded directly into the Strudel
    patch.

v0.1beta4

  • Attempts have been made to correct the scheduling of the csoundn output
    based on a trigger, and to get csoundn to output correct piano roll
    events.

  • Put in diagnostic messages marked sync for testing.

  • Colorize notes in the piano roll that come from csoundn.

  • In package.json always make a releasable zip file in each build.

v0.1beta3

  • Put in needed patch for cyclist.mjs.

  • Restored concatenated Strudel controls string in csoundac.mjs.

v0.1beta2

  • Improved README.md/index.html.

  • Corrected broken links and incorrect credits in example pieces.

  • Replaced the favicon from Strudel with cloud-5's own favicon.

v0.1beta

  • This was the initial release.

cloud-5 beta release 3

02 Oct 12:46
Compare
Choose a tag to compare
Pre-release

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

Release Notes

v0.1beta4

  • Attempts have been made to correct the scheduling of the csoundn output
    based on a trigger, and to get csoundn to output correct piano roll
    events.

  • Put in diagnostic messages marked sync for testing.

  • Colorize notes in the piano roll that come from csoundn.

  • In package.json always make a releasable zip file in each build.

v0.1beta3

  • Put in needed patch for cyclist.mjs.

  • Restored concatenated Strudel controls string in csoundac.mjs.

v0.1beta2

  • Improved README.md/index.html.

  • Corrected broken links and incorrect credits in example pieces.

  • Replaced the favicon from Strudel with cloud-5's own favicon.

v0.1beta

  • This was the initial release.

Ooops! Bugfix release to included all needed patches to Strudel

27 Sep 19:01
Compare
Choose a tag to compare

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system and toolkit for making sophisticated computer
music purely in the HTML5 environment! The system is especially suited for
pieces that run 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. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

Release Notes

v0.1beta3

  • Put in needed patch for cyclist.mjs.

  • Restored concatenated Strudel controls string in csoundac.mjs.

v0.1beta2

  • Improved README.md/index.html.

  • Corrected broken links and incorrect credits in example pieces.

  • Replaced the favicon from Strudel with cloud-5's own favicon.

v0.1beta

  • This was the initial release.

First binary release of cloud-5

26 Sep 20:40
Compare
Choose a tag to compare
Pre-release

cloud-5

An HTML5-based computer music system with Csound, CsoundAC, and Strudel by Michael Gogins.

Creative Commons License

Musical examples herein are licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.

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.
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

Welcome to cloud-5, a system for making sophisticated computer music purely in
the HTML5 environment! The system is especially suited for pieces that run
indefinitely, for pieces that run online, for live coding, for visual music,
and for algorithmic composition.

cloud-5 runs on every system that has audio output, that can run a Web server,
and that has a standards compliant Web browser. That includes all computers
running macOS, Linux, or Windows, as well as most Android devices. It is also
possible to run cloud-5 on single-board computers (SBCs) such as Bela,
Norns, BeagleBoards,
Raspberry Pi, and others. However, running
cloud-5 on a SBC requires installing at least a Web server (and probably also
a Web browser) on the device. Most users without special need for a SBC (such
as an installation or kiosk) will be better off just using a personal
computer.

cloud-5 is used by my own Web site of "always-on" computer music pieces,
cloud-music.

Release Notes

This is the first release of cloud-5.

Full Changelog: https://github.com/gogins/cloud-5/commits/v0.1beta