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.
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.
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.
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.
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.
This is the best option with ChucK-savvy users who want to check Concrète Mixer out on a pi:
-
Clone the Concrète Mixer repo:
git clone https://github.com/concrete-mixer/concrete-mixer
-
Enter the repo directory:
cd concrete-mixer
-
Copy concrete.conf.sample to concrete.conf:
cp concrete.conf.sample concrete.conf
-
Run ./pi-install.sh to install various packages (note that it's probably easier to use a Docker image; see below.)
-
Run init.sh
./init.sh
-
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 modifyconfig.conf
to suit.
There's a Docker image which installs Concrète Mixer and its dependencies automatically.
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.
A list of configuration options is documented in concrete.conf.sample
.
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.
- 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.
- If you're having performance difficulties you can enable the rpi setting by setting rpi=1 in
- 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.
- routing digital audio through HDMI (run
This code is distributed under the GPL v2. See the COPYING file for more details.