Skip to content

Commit d85ae8d

Browse files
committed
initial commit
0 parents  commit d85ae8d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+5632
-0
lines changed

.editorconfig

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# EditorConfig is awesome: https://EditorConfig.org
2+
3+
# top-most EditorConfig file
4+
root = true
5+
6+
# Unix-style newlines with a newline ending every file
7+
[*]
8+
end_of_line = lf
9+
insert_final_newline = true
10+
trim_trailing_whitespace = true
11+
12+
# Matches multiple files with brace expansion notation
13+
# Set default charset
14+
[*.{js,py}]
15+
charset = utf-8
16+
17+
# 4 space indentation
18+
[*.py]
19+
indent_style = space
20+
indent_size = 4
21+
22+
[*.rs]
23+
indent_style = space
24+
indent_size = 2
25+
26+
[*.scd]
27+
indent_style = space
28+
indent_size = 2
29+
30+
# Tab indentation (no size specified)
31+
[Makefile]
32+
indent_style = tab
33+
34+
# Indentation override for all JS under lib directory
35+
[lib/**.js]
36+
indent_style = space
37+
indent_size = 2
38+
39+
# Matches the exact files either package.json or .travis.yml
40+
[{package.json,.travis.yml}]
41+
indent_style = space
42+
indent_size = 2

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.DS_Store
2+
sc_osx_standalone
3+
samples
4+
sclang
5+
SoundsFromTheScape.app

.jackdrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/usr/bin/jackd -d alsa -d hw:1 -r 48000 -p 4096 -n2 -s

.sclang_conf.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
includePaths:
2+
- ./classes
3+
- ./extensions

Dockerfile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
FROM debian:11-slim
2+
3+
ENV DEBIAN_FRONTEND noninteractive
4+
5+
RUN ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime
6+
7+
RUN apt-get --quiet --yes update && apt-get install -yqq \
8+
supercollider \
9+
exiftool \
10+
unzip \
11+
make \
12+
coreutils \
13+
procps \
14+
findutils \
15+
gawk
16+
17+
RUN cd /usr/bin && ln -s /bin/readlink
18+
19+
ARG NB_USER=sfts
20+
ARG NB_UID=1000
21+
ENV USER ${NB_USER}
22+
ENV NB_UID ${NB_UID}
23+
ENV HOME /home/${NB_USER}
24+
25+
RUN adduser --disabled-password \
26+
--gecos "Default user" \
27+
--uid ${NB_UID} \
28+
${NB_USER}
29+
30+
WORKDIR /home/${NB_USER}
31+
32+
USER ${NB_USER}
33+
34+
RUN mkdir -p classes extensions .sfts samples
35+
COPY --chown=${NB_USER} classes/ classes/
36+
COPY --chown=${NB_USER} extensions/ extensions/
37+
COPY --chown=${NB_USER} assets/configs/ .sfts/
38+
COPY --chown=${NB_USER} assets/samples/ samples/
39+
40+
COPY --chown=${NB_USER} assets/PortedPlugins-Linux.zip .
41+
RUN unzip /home/${NB_USER}/PortedPlugins-Linux.zip -d extensions
42+
43+
COPY --chown=${NB_USER} Makefile .
44+
COPY --chown=${NB_USER} gui.scd .
45+
COPY --chown=${NB_USER} .sclang_conf.yaml .
46+
COPY --chown=${NB_USER} .jackdrc .
47+
48+
RUN ln -s $(which sclang)
49+
50+
CMD ["make", "random-composer]

Makefile

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# SCLANG=/Applications/SuperCollider/SuperCollider.app/Contents/MacOS/sclang
2+
# SCLANG=/Applications/SuperCollider.app/Contents/MacOS/sclang
3+
SCLANG=$(shell /usr/bin/readlink sclang)
4+
5+
docker-build:
6+
docker build -t sfts-supercollider -f Dockerfile .
7+
8+
docker-run-on-debian-linux: docker-build
9+
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
10+
11+
# Following this and the docker image might start on macos:
12+
# https://gist.github.com/cschiewek/246a244ba23da8b9f0e7b11a68bf3285
13+
# But sound device does not
14+
docker-run-macos-quartz: docker-build
15+
docker run --rm --net=host --env DISPLAY=${HOSTNAME}:0 --privileged --device /dev/snd --device /dev/midi* --group-add audio --volume /tmp/.X11-unix:/tmp/.X11-unix --volume $$XAUTHORITY:${HOME}/.Xauthority sfts-supercollider make random-composer
16+
17+
docker-run-interactive: docker-build
18+
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 -it sfts-supercollider /bin/bash
19+
20+
osx-release:
21+
echo "DANGER: Distructive action, edit Makefile and remove this notice"
22+
and_remove_this
23+
## Destruction and disaster follow .... beware
24+
rm -fr sc_osx_standalone
25+
git clone --depth=1 --branch 3.12.2a [email protected]:dathinaios/sc_osx_standalone.git
26+
cd sc_osx_standalone && unzip Frameworks.zip && rm Frameworks.zip
27+
cd sc_osx_standalone && timeout 5 sh run.sh || :
28+
rm -fr sc_osx_standalone/Resources/sounds/*
29+
cp assets/sc_osx_standalone/exiftool sc_osx_standalone/Resources
30+
cd sc_osx_standalone && mkdir Resources/assets SCClassLibrary/install
31+
cp -R assets/configs sc_osx_standalone/Resources/assets/
32+
cp -R assets/samples sc_osx_standalone/Resources/assets/
33+
cd sc_osx_standalone && ln -s Resources/assets/samples
34+
cd sc_osx_standalone && rm -fr .git .gitattributes README.md
35+
yes | cp assets/sc_osx_standalone/init.scd sc_osx_standalone/init.scd
36+
cp classes/* sc_osx_standalone/SCClassLibrary
37+
cp extensions/* sc_osx_standalone/SCClassLibrary
38+
cd sc_osx_standalone/SCClassLibrary/install && unzip ../../../assets/PortedPlugins-macos.zip
39+
echo "Now start Platypus to build app"
40+
41+
shell:
42+
${SCLANG} -l .sclang_conf.yaml
43+
44+
random-composer: kill-existing-server
45+
${SCLANG} -l .sclang_conf.yaml gui.scd
46+
47+
start-jackd:
48+
jackd -d alsa -d hw:1 -r 48000 -p 4096 -n2 -s
49+
50+
.PHONY: sample-comments
51+
sample-comments:
52+
find ./samples -type f \( -name \*.wav -o -name \*.aiff \) -print | xargs -I {} exiftool -T -FileName -Comment {}
53+
54+
.PHONY: kill-existing-server
55+
kill-existing-server:
56+
ps auxwww | grep scsynth | grep -v grep | awk '// { print $$2 }' | xargs -I {} kill {}
57+
58+
.PHONY: help
59+
help:
60+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
61+
62+
.DEFAULT_GOAL := help

README.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Sounds from the Scape
2+
3+
Soundscape generated written in [SuperCollider](https://supercollider.github.io/).
4+
5+
There is a longer [project description](https://gregorius.rippenstein.art/works/sfts) and a collection of samples soundscapes on [SoundCloud](https://soundcloud.com/user-47380021).
6+
7+
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.
8+
9+
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.
10+
11+
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.
12+
13+
## How does it work?
14+
15+
Loopable samples are played endless and mutated while they play. Controlled by a Midi controller, currently that is an [Arturia MiniLab MK II](https://www.arturia.com/products/hybrid-synths/minilab-mkii/overview) with a specific [layout](/assets/sfts-arturia-layout.minilabmk2).
16+
17+
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.
18+
19+
## User Interface
20+
21+
When started, the interface looks like this:
22+
23+
<img src="/assets/screen-1-clean.png"/>
24+
25+
What does this all do? Here are some highlights:
26+
27+
<img src="/assets/screen-1.png"/>
28+
29+
## Setup
30+
31+
### Locally
32+
33+
Install [SuperCollider](https://supercollider.github.io/), for MacOS the [DMG](https://supercollider.github.io/downloads#mac) or for Linux `sudo apt-get install supercollider` or [download from SC](https://supercollider.github.io/downloads#linux).
34+
35+
Clone the repository and change directory:
36+
```
37+
git clone [email protected]:gorenje/sfts
38+
cd sfts
39+
```
40+
41+
The code assumes there is a link to the `sclang` executable in the base directory. To do this,
42+
43+
On MacOS:
44+
45+
```
46+
ln -s /Applications/SuperCollider.app/Contents/MacOS/sclang
47+
```
48+
49+
Or on Linux:
50+
51+
```
52+
ln -s /bin/sclang
53+
```
54+
55+
Create a soft link to the samples directory in the assets folder:
56+
57+
```
58+
ln -s assets/samples
59+
```
60+
61+
Create a config directory in your home directory and copy the sample scapes and presets files into that directory:
62+
63+
```
64+
mkdir ${HOME}/.sfts && cp assets/configs/*.yaml ${HOME}/.sfts/
65+
```
66+
67+
Start the application with
68+
69+
```
70+
./sclang -l .sclang_conf.yaml gui.scd
71+
```
72+
73+
74+
### Dockerfile
75+
76+
There is also a docker file that can be used to create an container, this also requires make and probably is best done using Linux:
77+
78+
```
79+
make docker-run-on-debian-linux
80+
```
81+
82+
That make task represents two commands:
83+
84+
```
85+
docker build -t sfts-supercollider -f Dockerfile .
86+
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
87+
```
88+
89+
90+
### MacOS Application
91+
92+
There is also a MacOS Application built with [Platypus](http://sveinbjorn.org/platypus) and [sc_osx_standalone](https://github.com/dathinaios/sc_osx_standalone).
93+
94+
The app is available under releases.
95+
96+
97+
## What does it sound like?
98+
99+
A collection of samples soundscapes on [SoundCloud](https://soundcloud.com/user-47380021).
100+
101+
## What is the hardest thing to do?
102+
103+
> The hardest thing to describe is oneself, which is closely followed by the second hardest thing to describe: ones own projects. - Me.
104+

assets/PortedPlugins-Linux.zip

448 KB
Binary file not shown.

assets/PortedPlugins-macos.zip

321 KB
Binary file not shown.

assets/app-icon.png

180 KB
Loading

0 commit comments

Comments
 (0)