Soundscape generated written in SuperCollider.
There is a longer project description and a collection of samples soundscapes on SoundCloud.
This exists because I felt that I needed something that provides a sound scape or sound teppich (german for carpet) to distract my conscious and allow myself to concentrate on my thoughts. I cannot write listening to music that has vocals or that stops after three minutes. I needed something that is calming yet changing, something to which my conscious attempts to find the undefined pattern in the music. I also meditate with headphones while listening to these soundscapes.
You mileage my vary however what I have found is that since I recorded the samples, I have images of the places where I made these records. That means that these images are triggered when I listen to a soundscape. I feel myself transported to the forest where I recorded various birds sounds or to the beach where I recorded the waves crashing onto the shore or mundane sounds such as a wineglass in my kitchen.
I am also fascinated by how simple sounds can be morphed into deeper, stranger sounds. A chicken sounds as it were a dog when slowed down, a wine glass as a church bell or birds sound the same played forward or backward. The combination of the morphed and alternated becomes the soundscape.
It has become a specific loop machine, but something that I developed to match my purpose. The freedom to reinvent the loop machine is the reason we have so many different loop machines.
Loopable samples are played endless and mutated while they play. Controlled by a Midi controller, currently that is an Arturia MiniLab MK II with a specific layout.
Many of the operations done using the midi controller can also be done directly with the mouse, only the pendulums require the use of the midi controller.
When started, the interface looks like this:
What does this all do:
-
Sample Effect Values
Effects that can be applied to a sample. Things like pan, reverb, volume and frequency. Each of the eight dials all duplicated for all 16 samples, i.e., each sample has its own values for each effect and those values are shown in the
Playing Samples Area
. -
Pendulum Selector
Pendulums are triggers that move the dials automatically. Things like timer that moves a dial between two values in a give period of time. Record which records the changes to a dial of a period of time and endlessly replays those.
-
Synth and Sample Selector
Here a synth can be selected and then a sample is selected. The sample is then shown in the
Notes Playing
area. Once the note is clicked on, it is moved the thePlaying Samples Area
. This is done because the application was built with a midi controller with keys. So pressing a key would initially have the note playing and if a pad was hit the note was moved in the samples area. If the key was lifted, the note was removed again. -
Playing Samples Area
All samples that are currently playing are shown here. The can be removed with a right click. All effects of a sample can be adjusted by using the mouse on the dials. The synth of a sample can be changed by using the synth dropdown for that sample.
-
Notes Playing
All notes are shown here. They can be moved to the samples area with a left click on the number-label or removed with a right click on the number label.
Top left hand corner is the Load Scape
button for loading a scape, this is a good place to begin to have something playing.
After loading a scape, in this case scape.221121_144649.yaml, the player shows the samples:
Some highlights of what is going on:
- Marked with a green star is the load scape button. Some predefined scapes come with the application and can be modified. Changes can be saved with the
Save Scape
button. - The red rectangles are indicating the that the eight dials for each sample are the same effects as shown at the top. Each effect is applied separately to each sample that is playing. The effects are: volume, pan, speed, reverb, frequency, damp, mix, front-back location.
- The dials marked with the blue hexagon are pendulum dials. Pendulum is the term I came up with to describe patterns that move dials automatically. There are a number of a pendulums: record, timer, randomise, and a couple more. They can only be sensibly configured using a midi controller. Pendulums are simply predefined values for a dial over a time period. For example, a timer will move a dial between two values over a specific duration, simply back and forth.
- The black arrows point to the synth drop down for each playing sample. Changing the synth is probably the simplest change that can be made to a sample.
A new sample can be selected via the Sample Selector
, a sample first appears as a note in Notes Playing
area. By clicking on it, it will be moved to the samples area. The volume is set to zero by default, so to hear a sample, the volume dial for the sample needs uplifting - volume dial is top, left dial for each sample.
Install SuperCollider, for MacOS the DMG or for Linux sudo apt-get install supercollider
or download from SC.
Clone the repository and change directory:
git clone git@github.com:gorenje/sfts
cd sfts
The code assumes there is a link to the sclang
executable in the base directory. To do this,
On MacOS:
ln -s /Applications/SuperCollider.app/Contents/MacOS/sclang
Or on Linux:
ln -s /bin/sclang
Install the PortedPlugins from the assets directory:
On MacOS:
unzip assets/PortedPlugins-macos.zip -d "$(make extensions-folder)"
On Linux:
unzip assets/PortedPlugins-Linux.zip -d $(make extensions-folder)
Create a soft link to the samples directory in the assets folder:
ln -s assets/samples
Create a config directory in your home directory and copy the sample scapes and presets files into that directory:
mkdir ${HOME}/.sfts && cp assets/configs/*.yaml ${HOME}/.sfts/
Start the application with
$(readlink ./sclang) -l .sclang_conf.yaml gui.scd
You might also have to install the exiftool for the samples to have names and be listed. I make an assumption that is already installed, for MacOS there is a copy of exiftool or install it via brew.
There is also a docker file that can be used to create an container:
docker build -t sfts-supercollider -f Dockerfile . && docker run --rm --net=host --env DISPLAY=${DISPLAY} --env XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} --privileged --device /dev/snd --device /dev/midi* --group-add audio --volume ${XDG_RUNTIME_DIR}:${XDG_RUNTIME_DIR} --volume $$XAUTHORITY:${HOME}/.Xauthority sfts-supercollider make random-composer
Releases are also available from DockerHub, for examples release 0.0.1:
docker run --rm --net=host --env DISPLAY=${DISPLAY} --env XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} --privileged --device /dev/snd --device /dev/midi* --group-add audio --volume ${XDG_RUNTIME_DIR}:${XDG_RUNTIME_DIR} --volume $$XAUTHORITY:${HOME}/.Xauthority gorenje/sfts:0.0.1 make random-composer
There is also a MacOS Application built with Platypus and sc_osx_standalone.
The app is available under releases.
A collection of samples soundscapes on SoundCloud.
A soundscape is a term used to describe the acoustic environment of a particular place or space. It refers to the combination of all the sounds that are present in that environment, including natural sounds like birds singing or the wind blowing, as well as human-made sounds like traffic or people talking. The term was coined by the composer and acoustic ecologist R. Murray Schafer in the 1970s, and it is often used to describe the ways in which sounds interact with each other and with the environment to create a unique acoustic experience. Soundscapes can be natural, urban, or even imaginary, and they can have a profound impact on our perception of a place and our overall well-being. - ChatGPT What is a soundscape?
The hardest thing to describe is oneself, which is closely followed by the second hardest thing to describe: ones own projects. - Me.