Choirless

A musical collaboration project for disconnected performers

Introduction

Choirless is a musical collaboration platform built to enter the Call for Code 2020 global competition. It allows music groups to create a video wall recording of a piece of music, where all of the individual submissions are captured separately on the performers' phone, tablet or laptop.

The core technology that powers Choirless has been released as a Call for Code with The Linux Foundation project named Rend-o-matic.

Choirless came about during the 2020 Covid-19 Pandemic, as countries went into lockdown and social-distancing prevented choirs, bands and other musical ensembles from meeting and performing in person. Video meeting platforms such as Zoom and Webex proved useless for live collaboration because of the network latency and the audio being optimised for speech.

Choirless aims to make it very easy for choir leaders to create songs made out of several parts (e.g. alto, tenor, soprano) and to organise choir members to provide renditions of a part. All of the contributed videos are stitched together into a video wall with no special equipment and without employing costly and time-consuming video editing software.

Who are we?

The Choirless Crew consist of three members who met at IBM:

How does it work?

Choirless consists of a number of microservices working together:

Choirless components

  1. The Application Server powers the Choirless front-end website. It is built with HTML and vanilla JavaScript and is deployed using Cloud Foundry in the IBM Cloud
  2. The Choirless API is a RESTful API service written in Node.js which stores its state in a Cloudant JSON document store.

Rend-o-matic components

  1. The Renderer is a collection of Python and Node.js serverless actions that run in the IBM Cloud Functions framework. They are triggered by objects arriving in Cloud Object Storage and from user-driven events. Each action performs a specific audio/video processing job, such as resizing video or creating montages of multiple video sources.
  2. Boxjam is a Node.js module that fits many rectangles into another rectangle - useful if you're creating video montages of videos that are of various sizes and orientations.
  3. Stitcheroo is a Node.js module that fits many combines multiple videos sources into an output montage. It can also process the audio tracks for stereo spread and reverberation ambience.

The Rendering Process

The Rendering service is a multi-step process, where each step is triggered by the arrival of an object in a COS bucket. Some actions are taken in parallel to speed up the process:

How can I try it?

Simpy visit Choirless.com and sign up for an account. Or, check out the Rend-o-matic GitHub organisation to explore the underlying engine that powers Choirless.

Open source

All of our source code is open-sourced under the MIT license on GitHub.
© Choirless 2020-2021