First Meetup to learn by coding audio/visuals

CtrlReturn » Jam&Learn No. 1

In our first meetup, we spend time on an installation procedure, particularly for macOS.

After we installed all needed software and python modules (tkinter not necessary for meetup)…

  1. Install SuperCollider
  2. Install SuperCollider Plugins 3.

For Foxdot:

Install PitchGlitch FoxDot Distro 1. Install python module playsound via pip 2. “git clone” Distro onto your machine and run “python3 install” 3. Start SuperCollider IDE, execute “Quarks.gui” and activate “FoxDot”

For Renardo: Install FoxDot/Renardo

  1. Install Flok

  2. Run SuperCollider via Renardo GUI, or open SuperCollider IDE and (if FoxDot execute “FoxDot.start”

  3. Open Terminal and run following command

For Renardo:

npx flok-repl@latest -H wss:// -s ctrlreturn -t renardo -T user:YOURNAME

For Foxdot:

npx flok-repl@latest -H wss:// -s ctrlreturn -t renardo -T user:YOURNAME
  1. Open your browser and go to

…we jammed a byte/bit.


1. Start your synth in low amplify=0.1 and increase over time to get it fade intro!

2. Do not use octaves below 3 or above 9!

3. To avoid harm to ear and machine use in SuperCollider “Quarks.gui” to install “SafetyNet”

It was fun time, and I hope we see more visual coding next time as well! :-)

Clock.bpm = 125

c1 >> play("t ", amp=1)


# `x` - Closed hi-hat or snare hit
# `o` - Bass drum hit
# `-` - Rest or silent beat
# `s` - Snare drum hit
# `*` - Crash cymbal
# `.` - Shorter rest (typically half a beat)
# `i` - High tom
# `I` - Low tom
# `[` and `]` - Grouping for chords or tuplets
# `{` and `}` - Polyrhythm grouping
# `<` and `>` - Alternative patterns that switch every cycle

Master().hpf = Pvar([linvar([0, 2000], [16, 0]), 2000, 0], [16, 16, 32], start=nextbar)

dur=[1/x, 1/5-x]

g8 >> play("x...")

s9 >> saw(lpf=sinvar([100,2000], 4), amp=3).solo(0)

# ['loop', 'stretch', 'play1', 'play2', 'abass', 'acidbass', 'alva', 'ambi', 'angel', 'angst', 'arpy', 'audioin', 'bass', 'bassguitar', 'bbass', 'bchaos',
#'bell', 'bellmod', 'benoit', 'birdy', 'blip', 'blips', 'bnoise', 'borgan', 'bounce', 'bphase', 'brass', 'brown', 'bug', 'charm', 'chimebell', 'chipsy', 'cicada', 'click', 'clip', 'cluster', 'combs', 'creep', 'cricket', 'crunch', 'cs80lead', 'dab', 'dafbass', 'dbass', 'dblbass', 'dirt', 'donk', 'donk1', 'donk2', 'donkysub', 'donorgan', 'dopple', 'drone', 'dub', 'dust', 'dustv', 'ebass', 'ecello', 'eeri', 'eoboe', 'epiano', 'faim', 'faim2', 'fbass', 'feel', 'filthysaw', 'flute', 'fm', 'fmbass', 'fmrhodes', 'four', 'fuzz', 'garfield', 'glass', 'glitchbass', 'glitcher', 'gong', 'grat', 'gray', 'growl', 'harp', 'hnoise', 'hoover', 'hydra', 'jbass', 'kalimba', 'karp', 'keys', 'klank', 'ladder', 'lapin', 'laserbeam', 'latoo', 'lazer', 'lfnoise', 'linesaw', 'longsaw', 'marimba', 'mhpad', 'mhping', 'moogbass', 'moogpluck', 'moogpluck2', 'noise', 'noisecomb', 'noisynth', 'noquarter', 'nylon', 'organ', 'organ2', 'orient', 'pads', 'pasha', 'pbass', 'phazer', 'piano', 'pianovel', 'pink', 'pluck', 'pmcrotal', 'ppad', 'prayerbell', 'prof', 'prophet', 'pulse', 'quin', 'radio', 'rave', 'razz', 'rhodes', 'rhpiano', 'ripple', 'risseto', 'rissetobell', 'rlead', 'rsaw', 'rsin', 'saw', 'sawbass', 'scatter', 'scrap', 'scratch', 'shore', 'sillyvoice', 'sine', 'sinepad', 'siren', 'sitar', 'snick', 'soft', 'soprano', 'sos', 'sosbell', 'space', 'spacesaw', 'spark', 'spick', 'sputter', 'square', 'squish', 'ssaw', 'star', 'steeldrum', 'strings', 'subbass', 'subbass2', 'supersaw', 'swell', 'tb303', 'total', 'tremsynth', 'tribell', 'tritri', 'triwave', 'tubularbell', 'twang', 'tworgan', 'tworgan2', 'tworgan3', 'tworgan4', 'varicelle', 'varsaw', 'vibass', 'video', 'vinsine', 'viola', 'virus', 'waves', 'windmaker', 'wobble', 'wobblebass', 'wsaw', 'wsawbass', 'xylophone', 'zap']

a9 >> acidbass([0,2,1,9], oct=2, dur=[1/8, 1/4, 1/8, 1/2], bend=[0,1,0,1/2,0,0,1], room=4/5, mix=1/2, amplify=2/3*P[1, 1/2, 1/2], lpf=2000)

a2 >> play('x ')
a3 >> play('[--]', hpf=5000)
a4 >> play('  g ')

# Shows attributes of all SynthDefs player

# Shows all available fx with keywords

x1 >> play("{[ v]  }", lpf=200)

# Show xtra attributes of particular synth


b3 >> play("-")

b1 >> bass([0,0,3], oct=3, dur=PDur([2,3],4), amplify=3/4)

a5 >> arpy(, dur=PDur(5, 8), formant=2, shape=1, amplify=3/5, amp=1)

b1 >> play("S", dur=1, delay=1/2, echo=[0, 0, [1/2, 0]], hpf=900, hpr=1/4, amplify=1/2)

n2 >> angel([0], dur=[1, 0.5, 0.5], oct=[(4, 5), (5, 6), [(3, 4), (6, 4)]], amplify=2)

p2 >> pluck([4, 2, 0], amplify=0.6).often("stutter", PRand(1,4), oct=PRand(3,6))

b1 >> birdy(amp=1, dur=5, oct=5).stop()

c1 >> blips(amp=1).stop()

Scale.default = Scale.minor




s1 >> angel([0])

d1 >> play("<(x )-o{[--------]-}><1  2   3   4   >", room=PRand([1,50]) / 10, amp=0.4)

b1 >> play("Vi", sample=1, dur=2, delay=[0, 1/2], amplify=2/3, amp=1)

b2 >> play("s", dur=1, delay=1/2, amplify=2/3)

p1 >> piano([0, 2, 4], oct=4, dur=[4,2], amplify=7/8, amp=0.5).stop()


p2 >> piano23wegb3([(0, 1, 2), (2, 4), (7,9)], oct=5, dur=PDur([3,4],8), delay=2, amplify=4/8, amp=2)

d1 >> play("x-")

a1 >> acidbass([1,2,0], amplify=0.2)

n3 >> abass(var([0, 2], [3, 1]), oct=6, dur=3, chop=6, pan=(-2/3, 2/3), amp=linvar([1, 0], [3, 0])).solo(0)

Check Out Point

  • Space: Berlin c-space
  • Email:
  • Chat: