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 setup.py 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://pitchglitch.cc:3000 -s ctrlreturn -t renardo -T user:YOURNAME

For Foxdot:

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

…we jammed a byte/bit.


Tips:

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
print(SynthDefs)

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

Scale.default=Scale.minor

# `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)
Master().hpf=0

x=4
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
print(Player.get_attributes())

# Shows all available fx with keywords
print(Player.get_fxs())


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

# Show xtra attributes of particular synth
print(Player("piano").get_extra_attributes())

print(Player("piano").info())

b3 >> play("-")

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

a5 >> arpy(a1.degree, 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

print(globals())

print(Scale.default)

print(SynthDefs)

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()

print(Scale.major)

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: ctrlreturn@riseup.net
  • Chat: https://t.me/ctrlreturn