MUZUNGUMASCHIN — User Manual

Version: Early Access 0.9 Format: VST3 / AU Platform: Windows 10/11, macOS 11+


Table of Contents

  1. [Concept and Philosophy](#1-concept-and-philosophy)
  2. [Installation](#2-installation)
  3. [User Interface — Overview](#3-user-interface--overview)
  4. [Title Bar](#4-title-bar)
  5. [Panel 1 — Polygon Display](#5-panel-1--polygon-display)
  6. [Polygon Canvas](#6-polygon-canvas)
  7. [Mode Row](#7-mode-row)
  8. [Layer Strip](#8-layer-strip)
  9. [Panel 3 — Inspector](#9-panel-3--inspector)
  10. [Step Sequencer](#10-step-sequencer)
  11. [Patch Editor](#11-patch-editor)
  12. [MIDI Routing](#12-midi-routing)
  13. [INFO Mode](#13-info-mode)
  14. [Tips and Workflow](#14-tips-and-workflow)
  15. [Glossary](#15-glossary)

1. Concept and Philosophy

MUZUNGUMASCHIN is built on a physical thesis:

Rhythm and harmony are the same phenomenon — at different time scales.

A triangle on the time circle creates a triplet rhythm. The same triangle on the pitch circle creates an augmented triad. Speed up a 3:2 polyrhythm far enough and it becomes a perfect fifth (702 cents).

Each layer in MUZUNGUMASCHIN is a polygon: its corners (vertices) are notes, distributed evenly or unevenly around a circle. A rotating line triggers notes as it passes each vertex.

The Four Approaches

ModeDescription
POLYRHYTHMAll 8 layers share one cycle. A layer with 3 vertices fires 3×, a layer with 7 fires 7× per cycle.
POLYMETEREach layer has its own 16th-note grid. Euclidean patterns (K pulses in N steps).
Polygon MappingPolygon shape → chord type (triangle = augmented, square = dim7, etc.)
EuclideanBjorklund algorithm: K pulses distributed evenly across N steps.

2. Installation

Windows (VST3)

  1. Copy MuzunguMaschin.vst3 to your VST3 folder:
- Default: C:\Program Files\Common Files\VST3\ - Reaper: Any folder registered in Reaper preferences
  1. Restart DAW → search for "MUZUNGUMASCHIN"
  2. Load as a MIDI effect on an instrument track (or MIDI bus)

macOS (AU / VST3)

MIDI Routing

MUZUNGUMASCHIN is a MIDI generator: it sends MIDI notes to the host DAW. Notes must be routed to an instrument. In Reaper: plugin on a track → MIDI output routed to instrument on another track.


3. User Interface — Overview

┌─────────────────────────────────────────────────────────────────────┐
│  [MZ]  MUZUNGUMASCHIN   [FILE] [INFO] [⚙] [↩]   [PATCHEDIT]  ...  │  ← Title Bar (56px)
├──────────────────────────────────┬────────────────┬─────────────────┤
│                                  │                │                 │
│        PANEL 1                   │    PANEL 2     │    PANEL 3      │
│   (Polygon Display)              │  (2nd Display  │  (Inspector /   │
│                                  │   optional)    │   PATCH)        │
│   [Polygon Canvas]               │                │                 │
│                                  │                │                 │
│   [Mode Row]                     │                │                 │
│   [Layer Strip: 8 cards]         │                │                 │
├──────────────────────────────────┴────────────────┴─────────────────┤
│  ● SYNC  BPM 120.0  4/4  1:1:000                        ▶ PLAY      │  ← Footer
└─────────────────────────────────────────────────────────────────────┘

The three panels are separated by draggable dividers that can be freely resized.


4. Title Bar

[MZ-Logo]  MUZUNGUMASCHIN  [FILE] [INFO] [⚙] [↩]  [PATCHEDIT]   [½][1×][2×][M]  [CTRL][SEQ]
ElementFunction
MZ LogoHexagon logo
FILELoad/save patch, default preset, export
INFOToggle hover help (blue underline when active)
Settings
Undo
PATCHEDITEdit node graph (only when DAW is stopped)
½ / 1× / 2×Cycle length: ½ bar, 1 bar (default), 2 bars
MCustom cycle length (e.g. 3:4 or 1.5)
CTRLController automation curve editor
SEQOpen step sequencer window

Cycle Length

The cycle determines how long the rotating line takes for one full revolution:

The cycle length is calculated from the DAW time signature: in 6/8, one bar = 3 PPQ.


5. Panel 1 — Polygon Display

The main panel consists of three areas from top to bottom:

┌─────────────────────────────────────┐
│  [Node Header]  Name  CLONE  SLAVE  │  ← Header (28px)
├─────────────────────────────────────┤
│                                     │
│         [Polygon Canvas]            │  ← Visualization
│                                     │
├─────────────────────────────────────┤
│  [POLYRHYTHM] [POLYMETER]           │  ← Mode Row (72px)
│  SWING  SCAT  VEL  GATE  PROB  RSD  │
├─────────────────────────────────────┤
│  [1][2][3][4][5][6][7][8]           │  ← Layer Strip (140px)
└─────────────────────────────────────┘

6. Polygon Canvas

The canvas shows 8 concentric rings. Each ring corresponds to one layer.

         ·  ·  ·
      ·           ·
    ·     Layer 1   ·      ← Ring 1 (inner)
   ·   △ (Triangle)  ·
    ·               ·      ← Rotating line
      ·           ·           starts at 12 o'clock
         ·  ·  ·

Elements

ElementDescription
Rings8 concentric circles = 8 layers
Polygon corners (vertices)Note positions — colored dots on the ring
Polygon edgesLines connecting active vertices
Rotating lineMoves clockwise, one revolution = one cycle
Vertex glowBrief flash on note-on
Small dotsRest positions (inactive steps in Euclidean pattern)

Mouse Interaction

ActionFunction
Left-click on empty spotAdd new vertex
Left-click on vertexSelect vertex
Drag on vertexMove vertex (change phase)
Double-click on vertexDelete vertex
Right-click on vertexContext menu (note, velocity, gate...)
ScrollZoom canvas
Drag on ringSelect layer

CTRL Mode (Curve Editor)

When CTRL is active, the canvas shows a curve editor instead of polygon corners:


7. Mode Row

[POLYRHYTHM ●] [POLYMETER]    SWING ○   SCAT ○   VEL ○   GATE ○   PROB ○   [RSD]

POLYRHYTHM / POLYMETER

ModeDescription
POLYRHYTHMAll layers share one cycle. A layer with N vertices fires exactly N× per cycle. Rhythmic ratios emerge directly from geometry.
POLYMETEREach layer has its own 16th-note subdivision. The Euclidean algorithm distributes K pulses across N steps evenly.

Scatter Knobs

All scatter knobs have two functions:

KnobColorFunction
SCATGreenPosition scatter: shift vertices around their base position
VELOrangeVelocity scatter: each note gets a different attack strength
GATEPurpleGate scatter: each note gets a different duration
PROBCyanProbability scatter: each note has a different trigger probability

RSD — Pattern Reseed

Generates a new random Euclidean pattern for the active layer (keeps K/N ratio).

SWING

Delays even beats (0 = no swing, 1 = maximum shuffle).


8. Layer Strip

The layer strip shows all 8 layers as cards. The active layer has an orange border.

┌──────┐ ┌──────┐ ┌──────┐ ... ┌──────┐
│  1   │ │  2   │ │  3   │     │  8   │
│ [M][S│ │ [M][S│ │ [M][S│     │ [M][S│
│ N-·N+│ │ N-·N+│ │ N-·N+│     │ N-·N+│
│ K-·K+│ │ K-·K+│ │ K-·K+│     │ K-·K+│
│ REP○ │ │ REP○ │ │ REP○ │     │ REP○ │
└──────┘ └──────┘ └──────┘     └──────┘
ElementFunction
Number / NameLayer number or custom name
MMute — silence the layer
SSolo — hear only this layer (right-click = clear all solos)
N− / N+Remove / add vertices (1 to 16)
K− / K+Remove / add pulses (Euclidean, 0 to N)
REPRepulsor strength: vertices repel each other → more even distribution

Rename Layer

Double-click on a layer card opens a text input. The name replaces the number.

Layer Color

Right-click on a layer card opens a context menu with 16 color choices.


9. Panel 3 — Inspector

The inspector shows parameters for the currently selected vertex or layer.

Vertex Parameters

ParameterDescription
PhasePosition on the ring (0.0–1.0, corresponding to 0°–360°)
NoteMIDI note (0–127, default = layer note)
VelocityAttack strength (0–127, 0 = layer default)
GateDuration as fraction of step length (0.0–2.0)
ProbabilityTrigger probability (0.0–1.0)
JitterRandom timing deviation in phase units
NudgeFixed timing offset (forward/backward)
ActiveEnable/disable vertex

Layer Parameters (no vertex selected)

ParameterDescription
Steps (N)Number of vertices
Pulses (K)Number of active vertices (Euclidean)
VelocityDefault attack strength for all vertices
GateDefault duration
NoteBase MIDI note
MIDI ChannelChannel 1–16
Rotation (ROT)Overall polygon rotation (phase offset)
Euclidean Rotation (EUC)Cyclic rotation of the Euclidean mask (POLYMETER): same E(K,N) shape, different starting offset. Son Clave / Rumba Clave / Bossa Nova are rotations of each other.
SNAP TO BALANCEButton: moves active vertex phases via gradient descent until the polygon's centroid hits the center (perfectly balanced). First active vertex stays as anchor.
MOS Generator (g)Generator value [0..1] for Well-Formed scales. Iterating (i·g) mod 1 and sorting produces an MOS polygon with at most two step sizes (Myhill property). Default g = log₂(3/2) ≈ 0.585 (perfect fifth) → diatonic family.
L:s Ratio (r)Morphs the long-vs-short step ratio of the MOS polygon without changing the L/s pattern. r = 1 → equal-step (regular polygon). Higher r → MOS unevenness increases. (XronoMorph's r-slider concept.)
GEN MOSButton: regenerate vertex positions using current N, g, and r. Pattern label shows the L/s structure (e.g. "5L + 2s" for diatonic, "2L + 3s" for pentatonic).

Balance Visualization

When a layer is selected, the polygon canvas shows the layer's balance vector as an arrow from the center: B = Σ exp(2πi·φ_k) over active vertices. The magnitude |B|/K is shown as a 0..1 score next to the arrow. When the polygon is perfectly balanced (|B| ≈ 0), the arrow disappears and a BALANCED badge lights up at the center in the layer's color.

Balance is the principle behind many ethnomusicologically beautiful rhythms (bell patterns, son clave, aksak): not perfectly even (boring), not random (formless), but in equilibrium. See Milne, Bulger, Herff & Sethares (2015), "Perfect Balance: A Novel Principle for the Construction of Musical Scales and Meters."

MOS / Well-Formed Scales (Carey & Clampitt 1989)

A scale is well-formed (or "MOS" — Moment of Symmetry, Erv Wilson) when it is generated by iterating a single interval g modulo the period and the result has exactly two distinct step sizes (the Myhill property). Examples:

ConfigurationPatternName
N=5, g=0.5852L + 3sPentatonic
N=7, g=0.5855L + 2sDiatonic
N=12, g=0.5855L + 7sChromatic
N=13, g=0.789variousBohlen-Pierce family

The same construction works for rhythms — Aksak (Balkan), sub-Saharan African additive meters are MOS rhythms with L=3, s=2.


10. Step Sequencer

Open via the SEQ button in the title bar. Opens in its own free-floating window.

     [Position][Velocity][Gate][Probability][Jitter][Nudge][CTRL]   ← Tab bar
     ┌──────────────────────────────────────────────────────────────┐
L 1  │ SN │ DAW │ POLY │ 1/16 │ Q │     Layer Name    │            │
     ├────┴─────┴──────┴──────┴───┴──────────────────────────────── ┤
     │  ▓  ▓  ░  ▓  ░  ░  ▓  ░  ▓  ▓  ░  ░  ▓  ░  ░  ░   ← Notes │
     ├──────────────────────────────────────────────────────────────┤
L 2  │ SN │ DAW │ POLY │ 1/8  │ Q │     Layer Name    │            │
     ├──────────────────────────────────────────────────────────────┤
     │  ▓  ░  ▓  ░  ▓  ░  ▓  ░                                     │
     └──────────────────────────────────────────────────────────────┘

Tab Bar

TabGrid Display
PositionVertex phase positions (horizontal line)
VelocityAttack strengths as bars
GateGate lengths as bars
ProbabilityTrigger probabilities as bars
JitterTiming scatter as bars
NudgeTiming offset (center = 0)
CTRLController curves

Side Strip (per layer)

ButtonFunction
SNSnap: vertices snap to grid divisions when dragging
(CTRL tab)Seamless Loop: curve interpolates smoothly from end to start
DAWGrid mode: DAW grid (1/16, 1/8, 1/4, etc.)
POLYGrid mode: polygonal grid (N × subdivision)
1/16 (DAW)Select grid division
QQuantize: snap all vertices to nearest grid division
÷N (POLY)Display subdivision count
−/+ (POLY)Decrease/increase subdivision

Grid Interaction

ActionFunction
Left-click on empty spotAdd vertex
Drag on vertexMove vertex (change phase)
Drag on value barChange value (velocity/gate/prob etc.)
Double-click on vertexDelete vertex
ScrollZoom (horizontal)
Shift + ScrollScroll

11. Patch Editor

Open via the PATCHEDIT button (only when DAW is stopped).

The patch editor shows the node graph: nodes are connected with Bezier cables.

Node Types

CategoryNodes
GeneratorPolygonNode (main sequencer)
MIDIMIDI Out, MIDI In, MIDI Merge, MIDI Split, MIDI Filter, MIDI Monitor
TransformTranspose, Velocity Map, Math, Mixer
ControllerLFO, Envelope, Sample & Hold, Quantize, Random
ConverterMIDI↔Controller, Pulse↔Controller, Rhythm↔MIDI
FUNK!Funk Send, Funk Receive, Funk Bind
DAWDAW Param Out (automatable parameter in DAW)

Adding Nodes

Connections


12. MIDI Routing

In Reaper

  1. Load plugin on an empty track (no instrument needed)
  2. Track MIDI output → route to instrument track
  3. In the plugin: each layer sends on its own MIDI channel (default: layer 1 = channel 1)

MIDI Channels

Each of the 8 layers has its own MIDI channel (configurable in the Inspector). This allows different instruments to be played from a single plugin.

DAW PARAM OUT

The DawParamOutNode exports internal values as automatable DAW parameters. These appear in Reaper under "Parameters" and can be controlled with automation curves.


13. INFO Mode

Click INFO in the title bar to activate hover help mode (blue underline appears).

In INFO mode, hovering over any control shows a tooltip with a detailed description. The tooltip follows the mouse cursor.

Deactivate INFO: click INFO again.


14. Tips and Workflow

Getting Started: First Sound in 2 Minutes

  1. Load plugin, start DAW (press Play)
  2. In the layer strip: Layer 1 is active by default (3 vertices = triplet)
  3. Route MIDI to an instrument → hear the first notes
  4. Press N+ → add a vertex → rhythm changes
  5. Activate second layer (click Layer 2 in layer strip) → set N to a different number → polyrhythm!

Polyrhythm Basics

Set Layer 1 to N=3 and Layer 2 to N=4 → 3-against-4 polyrhythm. Both complete one cycle, but at different speeds within the cycle.

Creating Euclidean Patterns

  1. Switch to POLYMETER mode
  2. Select a layer, set N to e.g. 16
  3. Set K to e.g. 5 → 5-in-16 Euclidean pattern (similar to Shiko)

Adding Life with Scatter

  1. Turn up the VEL knob slightly → each note gets a slightly different attack
  2. GATE knob → varies note length
  3. Click a scatter knob → new random sequence at same scatter intensity

Swing

SWING knob at 0.5–0.7 → classic shuffle. Works in both modes.

Rhythm-Harmony Connection


15. Glossary

TermMeaning
VertexA point on the polygon ring = one note in the sequencer
PhasePosition on the ring (0.0 = 12 o'clock, 0.5 = 6 o'clock, 1.0 = 12 o'clock)
CycleOne complete revolution of the rotating line
EuclideanBjorklund algorithm: K pulses evenly distributed across N steps
GateNote duration (1.0 = full step duration)
ProbabilityChance that a note is triggered (1.0 = always)
JitterRandom timing deviation around the note position
NudgeFixed timing offset (positive = forward, negative = backward)
RepulsorRepulsion force between vertices → more even distribution
FUNK!Wireless modulation system: streams from one node to another
PPQPulses Per Quarter Note — DAW internal time unit
ScatterRandom variation of a parameter (velocity, gate, prob, position)
ReseedGenerate new random sequence at the same scatter value

MUZUNGUMASCHIN Early Access — Feedback: ohrbyte@gmail.com