newritual

Three-App Setup Guide

Get all three New Ritual browser apps playing together—Euclidean generates rhythms, Dodecahedron generates harmonies, and Ria improvises melodies over both. No hardware required.

What You’ll Need

  • Chrome or Edge (desktop)—all three apps require Web MIDI
  • A virtual MIDI bus (see below)
  • Optionally: a MIDI keyboard or controller
AppURL
Euclidean Rhythmseuclidean.newritual.com
Dodecahedrondodecahedron.newritual.com
Riaria.newritual.com

Step 1: Set Up a Virtual MIDI Bus

The three apps talk to each other via MIDI. You need a virtual MIDI cable so Chrome windows can route MIDI between them.

macOS

  1. Open Audio MIDI Setup (search Spotlight or find in Applications → Utilities)
  2. From the menu bar: Window → Show MIDI Studio
  3. Double-click IAC Driver
  4. Check “Device is online”
  5. You should see at least one port listed (e.g., “Bus 1”). That’s all you need.
  6. Click Apply, close.

If you want separate buses for cleaner routing, click + to add more ports (e.g., “Euclidean→Dodeca”, “Dodeca→Ria”). One bus works fine to start.

Windows

  1. Download and install loopMIDI (free): tobias-erichsen.de/software/loopmidi.html
  2. Open loopMIDI
  3. In the bottom text field, type a name (e.g., “Virtual MIDI”) and click +
  4. You should see a new virtual port appear. Leave loopMIDI running.

loopMIDI needs to stay open in the background. You can set it to auto-start in its settings.

Step 2: Open the Three Apps

Open each app in its own standalone Chrome window (not tabs in the same window). This is important—Chrome throttles background tabs, so apps in inactive tabs will stop generating audio and MIDI. Separate windows keep all three running simultaneously.

  1. Euclideaneuclidean.newritual.com
  2. Dodecahedrondodecahedron.newritual.com
  3. Riaria.newritual.com

Click anywhere in each app to start audio (Chrome requires a user gesture before playing sound).

When each app prompts for MIDI access, allow it. If any app asks about SysEx, allow that too.

Step 3: Configure MIDI Routing

Euclidean (sends rhythm + clock)

  1. Click the MIDI output icon (top right, looks like a MIDI plug)
  2. Set output to your virtual bus (IAC Driver on Mac, Virtual MIDI on Windows)
  3. Euclidean sends:
    • MIDI clock (tempo sync)—system realtime messages, no channel
    • Note triggers on its configured channel—these are the rhythmic pulses

Dodecahedron (receives rhythm, sends chords + harmony)

  1. Click the MIDI button (top right area)
  2. Set Input to your virtual bus
  3. Set Output to the same virtual bus
  4. Dodecahedron sends:
    • Chord notes on Channel 2 (default)
    • SysEx chord identity messages (root, mode, bass degree)—these tell Ria exactly what chord is playing
    • It also passes through the MIDI clock from Euclidean

Ria (receives everything, makes music)

  1. Open Settings (gear icon, top right)
  2. Under MIDI, click Connect if not already connected
  3. Set Input to your virtual bus (or “All Inputs”)
  4. Configure these channels:
    • Chord Ch: 2 (matches Dodecahedron’s output)
    • Clock Ch: 10 (matches Euclidean’s clock channel)
    • Keys Ch: ALL (or a specific channel if you have a keyboard controller)
  5. Under Harmony, toggle Auto-adapt ON
    • Mode: Classic is a good default (directly maps chord quality to scale mode)

Step 4: Start Playing!

In Euclidean: Press Play (▹). Set a tempo (try 80–120 BPM). Set up a few rings with different rhythmic patterns—try 5/8, 7/16, 3/4 for interesting polyrhythms.

In Dodecahedron: Enable Auto-Traverse—Dodecahedron will automatically move through chord faces in sync with Euclidean’s clock, changing keys on its own. Each face change sends the new chord to Ria via SysEx. Try enabling Drone for sustained chords.

In Ria: You should see:

  • A ~BPM readout in the Flutter panel (synced to Euclidean’s clock)
  • The chord symbol updating in the center display as Dodecahedron changes chords
  • The scale automatically adapting (e.g., C Major → D Dorian → G Mixolydian)

Now play interval keys (home row: A through ’)—you’re improvising over Dodecahedron’s chord changes, in sync with Euclidean’s rhythm!

Step 5: Turn On Flutter (Automated Improvisation)

This is where the magic happens. Flutter is Ria’s generative engine—it improvises melody automatically based on the current scale and incoming rhythm.

  1. In Ria, click FLT (top bar) to open the Flutter panel
  2. Toggle Flutter ON
  3. Set Flutter Ch 1 to the channel Euclidean is sending on (try Ch 10 or ALL)—this tells Flutter to listen to Euclidean’s rhythmic triggers
  4. Start adjusting Flutter knobs:
    • Density—how often Flutter plays (start around 0.4–0.6)
    • Wander—how far Flutter’s notes roam from the current pitch (low = close, high = adventurous)
    • Pulse—how metronomic vs. random the timing is (high = locked to Euclidean’s grid)
    • Tempo—rate multiplier (1x = follows clock, 2x = double time)
    • Gate—note length (low = staccato, max = legato)
  5. Sit back and watch Ria improvise over Dodecahedron’s chord changes in Euclidean’s rhythm!

Tips for Getting the Most Out of It

Euclidean

  • Layer multiple rings with different step counts for polyrhythmic complexity (e.g., 3 against 5 against 7)
  • Auto Dub mode records your ring changes and plays them back—build up a rhythm section, then let it loop
  • Adjust Drift for gradual pattern evolution

Dodecahedron

  • Auto-Traverse is the key to hands-free operation—it walks through chord faces automatically, driven by Euclidean’s clock. This gives you continuously evolving harmony that Ria follows.
  • Sequence chord faces manually by clicking through them—each face change triggers a key/scale change in Ria
  • Try the bottom piano keys to set root notes—the dodecahedron rotates to show related chords
  • Use the mode selector (bottom right) to explore Dorian, Mixolydian, etc.—Ria follows

Ria

  • Tone Row—press [ to record a tone row, play some intervals, then press ] to end. Set the Clock dropdown to a division (Quarter, 8th, etc.) and the tone row auto-plays in sync with Euclidean!
  • Flutter + Tone Row together—record a tone row, set clock to 8th notes, and have Flutter also running. The tone row provides the melodic skeleton while Flutter ornaments around it.
  • Chord presets—press \ to cycle through chord voicings (Octaves, Triads, Jazz, etc.) for richer harmonic texture
  • Bass Mode—in the Flutter panel, try Bass Mode with pocket/walking/funk styles for an automatic bass line
  • Breathe—turn up the Breathe knob for slow, evolving dynamics (Flutter’s density/wander/intensity cycle like breathing)
  • Synth panel—click FX to shape Ria’s internal sound. Try different presets, adjust reverb/delay for ambient textures
  • Wrap Range—in Settings → Range, enable Wrap and set a note range (e.g., C3–C5) to keep melodies in a sweet spot

General

  • MIDI output—set Ria’s MIDI output to a DAW or external synth to hear everything through better sounds. The internal Tone.js synth is great for testing but a good piano/pad VST transforms the experience.
  • Record in a DAW—route the virtual MIDI bus into a DAW (Cubase, Ableton, Logic, Reaper) to capture everything as MIDI.
  • F-key shortcuts—in Ria, F1–F10 switch between saved scale presets. Configure them in Settings → Computer Keyboard → F-Key Scales for fast scale changes during performance.

Troubleshooting

ProblemSolution
No MIDI connectionMake sure the virtual bus is active (IAC Driver online / loopMIDI running). Refresh the app and re-allow MIDI access.
Ria doesn’t react to DodecahedronCheck that Chord Ch in Ria matches Dodecahedron’s output channel (default: Ch 2). Make sure Harmony Auto-adapt is ON.
No BPM display in FlutterCheck that Clock Ch in Ria matches Euclidean’s clock channel. Euclidean must be playing (press ▹).
Flutter doesn’t respond to EuclideanSet Flutter Ch 1 to the channel Euclidean sends note triggers on. Make sure Flutter is toggled ON.
MIDI feedback loop / echoRia has built-in anti-echo suppression. Make sure you’re not routing Ria’s output back into its own input on the same channel.
SysEx not workingChrome may need explicit SysEx permission. When Dodecahedron sends its first SysEx, Chrome should prompt—click Allow.
Audio glitchyClose other browser tabs. Web audio can be CPU-intensive with all three apps running. Consider closing the Euclidean/Dodecahedron visualizations to save resources.

Quick Reference: MIDI Channel Map

ChannelSourcePurpose
Ch 2DodecahedronChord notes → Ria Harmony Auto-adapt
Ch 10EuclideanClock pulses → Ria Flutter rhythm sync
SysExDodecahedronChord identity (root/mode/bass) → Ria
System RTEuclideanMIDI clock (0xF8 ticks, 0xFA start) → Ria BPM

Channel numbers are defaults—all are configurable in each app’s settings.