Showing posts with label Strudel. Show all posts
Showing posts with label Strudel. Show all posts

Thursday, January 8, 2026

Online music creators/editors




Sonic Pi – A very popular live-coding music synth you install and code music (Ruby-like syntax). Great for beginners & performances. Sonic Pi
TidalCycles – A powerful live-coding language (in Haskell) focused on patterns and rhythms (used for algorave). Wikipedia 



*SuperCollider IDE
  • hush = stop music, keep system ready

  • s.freeAll = emergency silence

  • s.quit = shut everything down

Muscle memory going forward (Mac)

  • ⌘ + Enter → run music / blocks

  • Shift + Enter → single-line testing

  • Cmd + A → ⌘ + Enter → run whole file

  • Stop sound: s.freeAll;

    a = { Limiter.ar(FreeVerb.ar(RLPF.ar(Splay.ar(SinOsc.ar([110, 137.5, 165]*LFNoise1.kr(0.12).range(0.985,1.015),0,0.05)), LFNoise1.kr(0.10).range(900,4200), 0.25), 0.85, 0.95, 0.35), 0.95) }.play;

    a.free;

    b = { Limiter.ar(FreeVerb.ar(RLPF.ar(Splay.ar((VarSaw.ar([55, 69.3, 82.4]*LFNoise1.kr(0.25).range(0.98,1.02),0,0.25,0.05) + SinOsc.ar([27.5, 41.2],0,0.04))*0.8), LFNoise1.kr(0.22).range(220,1200), 0.18), 0.75, 0.95, 0.4), 0.95) }.play;

    b.free;

    c = { Limiter.ar(FreeVerb.ar(RLPF.ar(Splay.ar(SinOsc.ar([220, 277.2, 330]*LFNoise1.kr(0.18).range(0.99,1.01),0,0.04) + HPF.ar(WhiteNoise.ar(0.02), 3500)), LFNoise1.kr(0.15).range(1200,6000), 0.22), 0.9, 0.95, 0.25), 0.95) }.play;

    c.free; s.freeAll;




Strudel – The browser-based live coding environment you mentioned; excellent for JavaScript-style music coding. Strudel




Orca – A grid-based live coding tool (not traditional text code, but very code-like and musical) https://100r.co/site/orca.html

ORCA KEYSETS / OPERATORS (PRACTICAL)
🔁 TIME / TRIGGERS
D — Clock / Bang
D8
DC
DF
DC (12 in hex)

🎹 MIDI OUTPUT
: — MIDI Note Sender
D8 :03C
: [channel][octave][note]
:03C
:02G
:14A

🎼 NOTE / DATA SOURCES
Letters A–G
:03C
:03G

L — Walker / Lookup (VERY IMPORTANT)
L3CDE
D8 L3CDE
:03L

🔢 NUMBERS & VALUES
0–9, A–F
A=10 B=11 C=12 D=13 E=14 F=15

➕ FLOW / STRUCTURE
. — Delay / Empty Cell
DF....:03C

⚠️ OPERATORS THAT ARE VERSION-SENSITIVE (USE CAREFULLY)
? — Random

* / + -

❌ THINGS NOT TO TRUST IN YOUR BUILD (for now)

🔑 CORE RULES (PRINT THESE MENTALLY)

Minimal “everything works” template
D8 L3CDE
:03L
These decide when something happens.
Single hex digit only (1–9, A–F)
Sends a trigger to the right
D12 (does not work)

These actually make sound.

Sends MIDI when it receives a trigger
Must be to the right of a trigger
Format:
Examples:


These decide what note/value is sent.

Musical notes
Used as constants or inputs

This is your safe complexity generator.
Steps through values one at a time
Cycles, not random
Stable with : in your build
Used like this:

Used everywhere.

Hex digits

Used for:

Clock speeds
Channels
Octaves
Walker lengths
Hex reminder:
Does nothing
Adds time / spacing
Critical for slow evolution
More dots = slower feel.

Unstable in your build when feeding :
Can break rows
Best avoided for now

Math operators
Multiply / divide / add / subtract
Useful later, but not needed yet
R (random) → maps to *
Multi-digit clocks (D24)
: + ?
Vertical-only routing (no horizontal connection)
None of these are “your fault” — they vary by ORCA version.

Left → Right = signal flow
Clocks take ONE hex digit
: only fires if touched by a trigger
L is your safest complexity tool
Dots = time
If it’s not flashing → it’s not wired
Whenever things go weird, return to this:
If that plays, ORCA is fine.




🧑‍💻 Web & Browser
Based Code Music Platforms

These are easy to start with right in your browser:


EarSketch – Web platform where you write Python or JavaScript to compose studio-quality tracks. It’s educational but fully functional. EarSketch
TunePad – Learn & create music using Python code in your browser. TunePad
Chrome Music Lab: Music Lab / Song Maker – Not pure code but lets you experiment with structured music (visual interface) that’s useful for understanding concepts. Code.org+1
BeepBox – A simple in-browser tool for sketching songs (not code input but very pattern-based).

Strudel — long, subtle, atmospheric, chill

// Strudel — long, subtle, atmospheric, chill (no harsh transients)

// Paste into strudel.cc


setcpm(82)


const root = "<a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2>"


// soft kick-ish thump + brushed hats

$: stack(

  // low thump (soft, sparse)

  s("bd ~ ~ ~ bd ~ ~ ~ ~ ~ bd ~  ~ ~ ~ ~")

    .gain("0.32 0.0 0.0 0.0  0.28 0.0 0.0 0.0  0.0 0.0 0.22 0.0  0.0 0.0 0.0 0.0")

    .lpf(170)

    .room(0.35).size(0.85),


  // whisper hats (very subtle movement)

  s("[~ hh:2]*16")

    .gain("0.06 0.04 0.05 0.03  0.06 0.04 0.05 0.03  0.06 0.04 0.05 0.03  0.07 0.04 0.05 0.03")

    .hpf(6500)

    .room(0.55).size(0.95)

    .delay(0.18).delayfb(0.22).delaytime(0.33)

)


// warm pad chord bed (slow harmonic drift)

$: n("<0 0 0 0  2 2 2 2  5 5 5 5  4 4 4 4>")

  .add(note(root))

  .add("<0 7 12 7>")

  .s("saw")

  .slow(8)

  .attack(1.2).release(6.8)

  .gain(0.12)

  .lpf("<900 1100 950 1200 1000 1300 980 1250>")

  .lpq(0.25)

  .room(0.8).size(0.98)

  .delay(0.25).delaytime(0.5).delayfb(0.28)


// high, glassy “air” layer (tiny notes, lots of space)

$: n("<12 14 16 19  16 14 12 11  12 14 16 19  21 19 16 14>")

  .add(note(root))

  .s("triangle")

  .slow(2)

  .attack(0.02).release(1.8)

  .gain(0.05)

  .hpf(2500)

  .room(0.9).size(0.99)

  .delay(0.33).delaytime("<0.375 0.5 0.625 0.75>").delayfb(0.35)


// gentle evolving bass (not punchy)

$: n("<0 0 0 0  0 -2 -2 -2  -5 -5 -5 -4  -4 -4 -2 -2>")

  .add(note(root))

  .s("sine")

  .slow(4)

  .attack(0.15).release(1.2)

  .gain(0.10)

  .lpf(220)

  .room(0.25).size(0.7)


// occasional texture swells (like distant noise / tape)

$: s("noise:2")

  .slow(16)

  .attack(2.5).release(6.5)

  .gain("<0.00 0.02 0.00 0.03 0.00 0.02 0.00 0.04>")

  .hpf(1800).lpf(9000)

  .room(0.95).size(0.99)

  .delay(0.5).delaytime(0.75).delayfb(0.22)




≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈



setcpm(82)

const root = "a2"

// soft pulse
$: s("bd ~ ~ ~ ~ ~ ~ ~")
  .slow(2)
  .gain(0.25)
  .lpf(160)
  .room(0.4).size(0.8)

// airy hats
$: s("~ hh*8")
  .gain("0.04 0.03 0.05 0.03")
  .hpf(6000)
  .room(0.7).size(0.95)
  .delay(0.2).delaytime(0.33).delayfb(0.25)

// warm drifting pad
$: n("0 0 2 5 4 2")
  .add(note(root))
  .add("0 7 12")
  .s("saw")
  .slow(8)
  .attack(1.5).release(7)
  .gain(0.12)
  .lpf("900 1100 1000 1200")
  .room(0.85).size(0.98)
  .delay(0.25).delaytime(0.5).delayfb(0.3)

// high shimmer
$: n("12 14 16 19 16 14")
  .add(note(root))
  .s("triangle")
  .slow(2)
  .attack(0.02).release(2)
  .gain(0.05)
  .hpf(2500)
  .room(0.9).size(0.99)
  .delay(0.33).delaytime("0.375 0.5 0.75").delayfb(0.35)

// gentle bass
$: n("0 0 -2 -5 -4")
  .add(note(root))
  .s("sine")
  .slow(4)
  .attack(0.2).release(1.4)
  .gain(0.1)
  .lpf(220)

// distant texture swell
$: s("noise")
  .slow(16)
  .attack(3).release(7)
  .gain("0 0.02 0 0.03")
  .hpf(2000)
  .room(0.95).size(1)
  .delay(0.5).delaytime(0.75).delayfb(0.2)

≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈

// ultra-chill, very slow, ambient Strudel
// safe strings, nothing fancy

setcpm(60)

const root = "a2"

// deep soft breath
$: n("0")
  .add(note(root))
  .s("sine")
  .slow(8)
  .attack(3)
  .release(10)
  .gain(0.12)
  .lpf(180)
  .room(0.7)
  .size(0.9)

// warm pad drift
$: n("0 3 5 7 5 3")
  .add(note(root))
  .s("saw")
  .slow(16)
  .attack(4)
  .release(14)
  .gain(0.08)
  .lpf(900)
  .room(0.85)
  .size(0.98)

// high air shimmer
$: n("12 14 16 14")
  .add(note(root))
  .s("triangle")
  .slow(12)
  .attack(1)
  .release(6)
  .gain(0.04)
  .hpf(3000)
  .room(0.9)
  .size(1)

// distant noise wash
$: s("noise")
  .slow(32)
  .attack(6)
  .release(18)
  .gain(0.025)
  .hpf(2000)
  .room(0.95)
  .size(1)


≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈



GLOWSTATE — Chillsynth / LoFi Synthwave Mix (3 Original Tracks)

INCOPREA AUDIO · ORIGINAL RELEASE · SEPTEMBER 2026 GLOWSTATE A three-track Chillsynth / LoFi Synthwave mix for blue-hour drives, e...