Giter VIP home page Giter VIP logo

Concrète Mixer

About

Concrète Mixer is an program that mixes and scrambles a set of sound recordings in interesting ways. The name is a pun on musique concrète.

Concrète Mixer is designed to be run on a Raspberry Pi. You can either run Concrète Mixer:

  • through an rpi's audio out into a mixer or stereo amplifier
  • in a Docker container which will provide an Icecast mp3 stream suitable for internet radio broadcasting.

Concrète Mixer can play audio files stored locally or downloaded them from a SoundCloud playlist.

What does it sound like?

Have a listen to an hour long demo. This demo consists of two renderings of the app with the same set of sounds. The demo tracks are presented 'as-is' with no post-processing or editing.

What's it written in?

The audio processing is written in ChucK. A small shell script is used to initiate playback. SoundCloud playlist download is facilitated with a python script.

Prerequisites

Concrète Mixer is intended for use on the latest model of Raspberry Pi (currently Raspberry Pi 3) running Rasbpian GNU/Linux (currently version 'Jessie'). It can run on other hardware and operating systems with a bit of extra configuration but this documentation is focussed on Raspbian support only.

Installation

Concrète Mixer is a relatively simple program but has a lot of software dependencies and fiddly configuration. The easiest way to get up and running is to install one of the Concrète Mixer docker images.

Install for evaluation via git checkout

This is the best option with ChucK-savvy users who want to check Concrète Mixer out on a pi:

  1. Clone the Concrète Mixer repo:

    git clone https://github.com/concrete-mixer/concrete-mixer

  2. Enter the repo directory:

    cd concrete-mixer

  3. Copy concrete.conf.sample to concrete.conf:

    cp concrete.conf.sample concrete.conf

  4. Run ./pi-install.sh to install various packages (note that it's probably easier to use a Docker image; see below.)

  5. Run init.sh

    ./init.sh

  6. concrete.conf.sample is set up to source a couple of SoundCloud playlists for audio. If you want to use your own sounds on the pi or from another SoundCloud playlist, you can modify config.conf to suit.

Concrète Mixing machine via docker

There's a Docker image which installs Concrète Mixer and its dependencies automatically.

Creating a Concrète Mixing internet radio station

If you'd like to operate Concrète Mixer as a radio station, there's a Docker image that marries up Concrète Mixer with Darkice and Icecast2 to provide an internet radio stream.

Customising configuration options

A list of configuration options is documented in concrete.conf.sample.

SoundCloud support

Concrète Mixer will download sound files from SoundCloud playlists as long the files are made downloadable (this can be configured in the permissions tab when you upload a sound.

If not already compatible, downloaded files will be converted to wav so that ChucK can use them). The conversion process makes use of the FFmpeg library, so any audio format that FFmpeg can convert should be acceptable. The following compressed formats are known to work:

  • mp3
  • ogg
  • aac
  • flac

Compressed lossless audio (eg flac) is the optimal format having the best fidelity with a (relatively) small file size. In practice though whatever works for you is fine. Note that converting some formats may have a greater performance penality than others.

The art of Concrèting

  • Concrète Mixer was intended to mix field recordings of non-musical (or probably non musical) sounds together to create a surrealistic soundscape. However, the app could be used in other ways. For example, concrete.conf provides a tempo setting (bpm) which is used to define timings for things like LFO speeds, delay times, and fade times. You could potentially take musical recordings in a compatible tempo and key and mix them together.
  • From experience sound files of about 90 seconds to two and a half minutes seem to work best in terms of the flow of the mix, but this will depend on the dynamics of the recording and (to a large degree) the taste of the listener.
  • You should mix the samples' levels to be generally consistent so that any one sample should not be disproportionately louder than any other. I tend to mix these reasonably quietly as enloudened environmental sound can be a bit exasperating blaring out over speakers.
  • You can specify several configuration options in the conf/concrete.conf file. Refer to concrete.conf.sample for more options.
    • If you're having performance difficulties you can enable the rpi setting by setting rpi=1 in concrete.conf. This setting utilises a less CPU-intensive reverb ugen and also refrains from using a reverse delay chugen. The author can run CM on an rpi3 without needing this setting, but earlier models will require it.
  • The Pi's analogue audio output is noisy; better sound may be obtained by:
    • routing digital audio through HDMI (run raspi-config > Advanced options > Audio to achieve this), and using an HDMI adapter with an audio out (preferably powered); or
    • using a USB sound card.

Licence

This code is distributed under the GPL v2. See the COPYING file for more details.

Contact

[email protected]

concrete-mixer's Projects

cm-rpi-docker-internet icon cm-rpi-docker-internet

A Docker container for Raspbian with Concrete Mixer, DarkIce and Icecast providing an mp3 stream.

markdown-cv icon markdown-cv

a simple template to write your CV in a readable markdown file and use CSS to publish/print it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.