User Guide

Willow

Looping soundscapes placed in 3D space around you — for focus, calm, and sleep. On Mac and iPhone, with an editor to make your own, and one file you can share.

The idea

A weave is a set of looping sounds — rain, a drone, distant birds — each pinned to a point in the space around your head and rendered binaurally. Over headphones it feels less like a stereo file and more like a room you're sitting in.

Every sound is a strand: one loop with its own level, its own place in 3D, and its own character. Play a weave and the strands run together, phase-locked, seamlessly, indefinitely.

Willow is a player on Mac (in the menu bar) and iPhone (fullscreen), plus Loom, the macOS editor that makes weaves — all sharing one engine. This guide covers all three.

Weave
A playable set of strands. Ships as one .weave file.
Strand
One looping sound, placed in space.
Group
Strands that mix as a unit — one fader.
Field
The map of where everything sits.
Listener
You, at the centre.

The field

The field is Willow's signature view: a top-down map of the space around you. You're the ember dot at the centre. Angle is direction — straight up is in front of you, right is to your right. Distance from the centre is how far away the sound is.

The Willow field A top-down radar-like map. The listener sits at the centre; four strands are placed around them at different directions and distances, one shown as a diffuse ring and one with a shaded randomization region. FRONT BEHIND LEFT RIGHT Rain — front-right, close Drone — behind-left, far Birds — lands somewhere new in the shaded arc, each play Room tone — diffuse: all around you, no direction You — the listener
The field, as it appears in both the player and the editor. Rings mark distance; the ember dot is you.
Headphones matter — and Willow checks for you. Spatial audio is rendered binaurally, which only works when each ear hears its own channel. Speakers can't do that: both of them reach both of your ears, and the effect collapses. So Willow watches what you're playing out of and switches automatically — pick your speakers or a display in the sound menu and it drops to plain stereo, greying out the Spatial button and telling you why; put headphones on and it comes back. The field still shows where everything is either way.

This is about headphones, not about a device being labelled "spatial audio" — a Studio Display or a HomePod supports Apple's spatial audio and still can't deliver Willow's, because the sound has to arrive one channel per ear.

Head tracking. With AirPods, switch Tracking on and the field stays anchored to the room rather than to your head — turn to look at something and the rain stays where it was. It needs your AirPods to be what you're actually listening on (not just connected) and Spatial to be on, so the button greys out otherwise and says which is missing.

"Forward" is wherever you're facing when you switch it on — often looking down at your phone. You don't have to get that right: hold your head steady for about five seconds, wherever feels natural, and Willow quietly re-centres the field to face you. Look around all you like in between; it only re-centres when you've settled.

Playing — the menu-bar app

Willow lives in the menu bar. Click it and the panel drops down: the weave's artwork on top — tap it to flip to the live field — transport in the middle, everything else a click away.

The player panel A schematic of the menu-bar panel: a header with the weave name and collection button, the field, a transport row with play, master volume and a mixer toggle, then mixer rows for a strand and a group, and a footer gear. Rainfall Rain on Glass Birds · group · 3 strands Your collection of weaves Click to flip: artwork ⇄ field Play / pause (or the space bar) Master volume — 0–200% Show the mixer A group is one fader for all its strands Settings
The player panel. Everything is one click deep; nothing is buried.

Mixing

Open the mixer to set each strand's level, or mute it. Strands the author put in a group collapse into a single row — one fader rides the whole group, so you can pull all the birds down without touching each one.

Some weaves arrive with a strand or group already off — a melody, a distant bell — left there for you to bring in when you want it. Unmute it and it stays that way.

Your mix is remembered per weave, and stored beside your weaves — never inside the shared file, so the original is untouched. Reset to defaults puts it back the way the author made it.

Master volume

The slider runs to 200%. Up to 100% it's ordinary volume; past 100% it's a real boost above unity, and the bar warms from aurora through ember toward red as you push it. Back it off if it's showing red.

Your collection

Open the Collection window to see every weave as a card. Single-click one to play or pause it. Filter by mood and tags. To add a weave, drag a .weave or .weavepack file onto the window.

Star a weave — the star on its card, or the right-click menu — and it moves to a Favourites row at the top. Your favourites live on this device, kept beside your weaves like your saved mixes.

Settings

Sleep Timer
Fades out and pauses after 15/30/45/60 min.
Normalize Loudness
Evens out level between weaves from different authors, so switching doesn't jump.
Launch at Login
Start Willow when you log in.

Media keys and Now Playing work too — play/pause from the keyboard or Control Centre.

Free to play, with one unlock. Willow is free, and two of the weaves it ships with play in full, forever. The rest — including any weave you add yourself — play for 30 seconds as a preview, then fade out; press play for another 30. A single one-time purchase (Willow Pro, in the settings gear) unlocks everything the app comes with plus anything you import or make in Loom, on both your Mac and your iPhone at once. A preview-limited weave shows a muted cover and a small Preview tag, with a ring counting the seconds down around its play button — so nothing stops without telling you why.

On iPhone

Willow on iPhone is the same player, fullscreen, and it keeps going with the screen locked or the app in the background — it's built to play you to sleep. Everything above about the field, spatial audio and head tracking is the same; the phone just puts it within thumb reach.

Getting around

A tab bar along the bottom: Play (the weave, its field, and the transport), Strands (the mixer — one fader per strand or group), Weaves (your collection), and Unlock (only until you've bought it).

The transport

Spatial and Tracking sit either side of the play button, wrapped around it — how you're listening and whether you're listening, together. They light up when on, and go dashed with a reason when they can't (no headphones, Spatial off). Tapping them gives a small tap back, so a quiet target on a dark screen feels like a real switch.

Volume

The slider catches gently at 100% — unity, the level weaves are made and balanced at — so it's easy to land there without looking.

Sleep timer

Press and hold the play button and a row of times appears above it — 15, 30, 45, 60 minutes, and Off. Pick one and the music starts if it wasn't already; when the time's up it fades down over a quarter-minute and pauses. A ring around the play button counts it down, with a bright mote sweeping the arc so you can see it's still running from across the room. Pausing cancels it.

Not offered on a preview-limited weave — the preview is shorter than the shortest timer.

Managing weaves

On the Weaves tab, swipe right on a weave to favourite it (favourites gather in a section on top), or swipe left to delete it. The filter glyph opens the same mood and tag filters as the Mac.

To add one, AirDrop a .weavepack to your phone, or open one from Files or a download — Willow offers itself as the place to open it.

Making a weave — Loom

Loom is the editor. Three panes: your strands on the left, the field in the middle, and precise controls on the right.

The Loom editor layout Three panes side by side: a strand list on the left showing strands and a group, the field stage in the middle with a level meter beneath it, and a three-tab inspector on the right. STRANDS Rain on Glass Low Drone Birds 3 Sparrow Owl drop here OUTPUT LEVEL Weave Strand Group POSITION Randomize Azimuth 70° 130° Elevation -10° 20° Distance 2.5m 3.8m LEVEL PLAYBACK Random Min Gap Max Gap 8s 30s
Loom: strands and groups on the left, the field in the middle, precise numbers on the right.

Loom opens on a welcome screen: New Weave for a blank field, Open Weave for one you've saved, or a link to open Under the Willow — the example that ships with Loom, worth a look to see how a finished weave is put together. That link is also how to get the original back if you ever overwrite it in your collection.

1 · Bring in sound

Drag audio files onto the strand list, or use the add-strand button at the top of it. Anything Willow can read gets converted to mono — a strand is a point in space, so it can't be stereo. Your original files are never moved or changed.

No sound to hand? File ▸ Add Test Sound makes one for you — see below.

2 · Place it

Drag an orb on the field to set its direction and distance. Right-drag it to raise or lower it (height stays gentle — steep angles lose their sense of place). Hold ⌥ while dragging to snap to neat values, or hold ⇧ to keep one thing fixed — push straight toward or away from the centre and the direction holds while only the distance changes; slide around the centre and the distance holds while only the direction changes. Double-click an orb to mute it. Every move can be undone with ⌘Z.

3 · Mix it

Set levels in the strand list. Mute and solo are just for listening while you work — they're never saved. Double-click a name to rename it. Right-click a strand to Duplicate it, or choose Normalize on a quiet one to bring it up to a healthy level.

Mute by Default (in the inspector) is the one that ships. Turn it on and that strand — or a whole group — starts silent for listeners, so you can include a layer, a melody or a distant bell, that they bring in when they feel like it. It doesn't affect what you hear here, and their choice is remembered separately from your weave. Set it on a group and it covers every member; a strand inside a group follows the group.

4 · Organize

Make a group to keep related strands together — they'll appear as one fader in the player. Drag rows to reorder them, drop a strand onto a group to add it, or drag it out to take it back out.

5 · Share it

Save with ⌘S. Export Weavepack wraps the whole thing — audio, artwork and all — into a single .weavepack file anyone can open. Install to Collection drops it straight into your own player.

Installing the same weave again updates the copy in your collection rather than piling up duplicates — Willow recognizes it by the ID at the foot of the Weave tab, whatever you've renamed the file to. It asks first. If you meant to make a variant and keep the original, press ↻ beside that ID to make it a separate weave.

A shared .weavepack carries its cover art with it: in Finder on the Mac, and in Files on iPhone, it shows the weave's own artwork rather than a plain file icon.

Audition auto-stops. Playback pauses after 60 seconds without pointer movement, so Loom won't sit there looping at you while you're elsewhere. Move the mouse to keep it going.

Test sounds

File ▸ Add Test Sound drops in a made-up sound with known behaviour, so you can hear where a strand actually sits. They don't all place equally — and that's the point. If a strand feels vague, swapping in clicks tells you whether the position is wrong or the sound simply has nothing to place with.

White noiseFlat, broadband hiss. The all-round reference — easy to place, easy to hear.
Pink noiseBroadband too, but weighted to sound even across the spectrum. Gentler on the ear.
Low noiseDeep rumble. Deliberately hard to place — low sounds carry very little direction, which is why a bass layer can sit anywhere.
High noiseBright hiss. The easiest of all to place: your ears read direction mostly from the high end.
ClicksSharp ticks. Nothing pins a direction better than a transient — the best way to check a placement.
ToneA steady 440 Hz note. Famously ambiguous. If you can't place it, that's not your fault.

Giving a strand character

Beyond level and position, a few switches change what a strand is. These are the difference between a flat loop and a place that feels alive.

LoopThe default. Plays continuously and seamlessly, forever. Rain, drones, room tone.
RandomPlays once, then again after a random gap you set. For occasional accents — a bird, a creak, a distant gust.
DiffuseNo direction at all — the sound surrounds you instead of coming from a point. Position stops applying.
Randomize positionA random strand lands somewhere new every time it plays, inside a range you set. Scatters a sound around you.
GroupRelated strands under one fader in the player. Set a group to Random and it plays just one member at a time, picked at random.
Reverb & occlusionA weave shares one reverberant space. Each strand chooses how much it feeds it, and how muffled it sounds — as if behind something.
Random groups only pick from random strands. If you set a group to Random, any member still set to Loop will never be chosen — a loop never ends, so it can't take a turn. Loom warns you and counts them.

Gestures & shortcuts

Everywhere

Space
Play / pause
Media keys
Play / pause from the keyboard
Click the field
Flip between the field and the artwork

In Loom

Drag orb
Direction + distance
Right-drag orb
Height (elevation)
⌥ + drag
Snap to neat values
⇧ + drag
Lock direction or distance
Double-click orb
Mute (just for listening)
Double-click name
Rename
Right-click a strand
Duplicate · Normalize · group it
Drag / scroll a number
Adjust it
Tab
Next number in the group
⌘S · ⌘Z
Save · Undo (incl. moves)
Hold ⌥ or ⇧
Show the gesture hints