yarns-loom

Introduction

Loom is an alternate firmware for the Yarns synthesizer module ↗. This firmware is aimed at making Yarns more powerful and user-friendly.

This manual explains how Loom is different from the original firmware for Yarns. For documentation of the original firmware, see the Yarns manual ↗ and Yarns firmware changelog ↗.

Contents

Panel interface

  1. ▽S (SETUP MENU): configuration, MIDI input/output
  2. ▽O (OSCILLATOR MENU): audio mode and timbre for the voice oscillator
  3. ▽A (AMPLITUDE MENU): voice envelope and tremolo LFO

Part swap command

Save/load commands

Panel controls

Active part control

Tap tempo

Display and LEDs

Full display of integer setting values

When display shows an integer setting value that has three characters, blink a prefix character over the left displayed digit:

Other changes to display and LEDs

MIDI controller input

Control Change messages

CC mode

New global setting CC (CONTROL CHANGE MODE) sets how a CC’s value is interpreted:

  1. OFF: CCs are ignored
  2. ABSOLUTE: the CC’s value becomes the new setting value
    • CC’s value is down-scaled to match the setting’s range
    • For use with traditional potentiometers
    • Original firmware behavior
  3. RD RELATIVE DIRECT: the CC’s value is added to (or subtracted from) the setting’s current value
    • For use with endless encoders
    • Uses the “twos complement” standard for translating the CC’s value into an increment
      • MIDI value 1 => setting + 1 (increment)
      • MIDI value 127 => setting - 1 (decrement)
    • Settings will increase or decrease by one value for each click of the encoder
    • Depending on how many values the setting has, the encoder may take anywhere from 2 to 128 clicks to scan the range of setting values
    • Send 0 to display current value without change
  4. RS RELATIVE SCALED: the CC’s value is added to (or subtracted from) the value of a “virtual potentiometer”
    • Similar to RELATIVE DIRECT, but always takes 128 encoder clicks to scan the range of setting values, no matter how many setting values there are
    • Gives all encoders the same travel distance from minimum to maximum

Added CC types

Macro CCs that control combinations of settings

Other CC improvements

Play mode

How play mode works

Play mode options

  1. MANUAL: output is generated by MIDI input only
  2. SEQUENCER: output is generated by the sequencer
  3. ARPEGGIATOR: output is generated by the arpeggiator

New layouts

Note processing

Input octave transpose

Filtering by velocity

Fix for playing on part A while recording part B

Hold function

How the hold function works

Hold mode

New part setting HM (HOLD PEDAL MODE) sets how the part responds to MIDI key-releases and the state of the hold function:

  1. OFF: hold function has no effect
  2. SUSTAIN: sustains key-releases while hold is active, and stops sustained notes on hold deactivation
    • Matches original firmware behavior when pressing the pedal to sustain
  3. SOSTENUTO: while hold is active, sustains key-releases only on keys that were pressed before hold activation; stops sustained notes on hold deactivation
  4. LATCH: sustains key-releases while hold is active; stops sustained notes on key-press regardless of hold state
    • Matches original firmware behavior when holding START/STOP button to latch
  5. MOMENTARY LATCH: like LATCH, but stops sustained notes on hold deactivation, instead of on key-press
  6. CLUTCH: while hold is active, sustains key-releases only on keys that were pressed before hold activation (like SOSTENUTO); while hold is inactive, stops sustained notes on key-press (like LATCH)
    • Notes triggered while hold is active are not sustained, and do not cause sustained notes to be stopped, which allows temporarily augmenting a sustained chord
  7. FILTER: while hold is active, ignores key-presses and sustains key-releases; while hold is inactive, stops sustained notes on key-press
    • By setting opposite hold polarity on two parts, allows using the hold function to play one part while latching another

Hold polarity

New part setting HP (HOLD PEDAL POLARITY) inverts the part’s active/inactive hold state:

Display of keys affected by the hold function

Display blinks 1 tick mark for each pressed/sustained key in the active part (max 6 keys):

  1. Bottom-half tick: key is manually pressed, and will stop when released
  2. Full-height tick: key is manually pressed, and will be sustained when released
  3. Steady top-half tick: key is sustained, and will continue after the next key-press
  4. Flickering top-half tick: key is sustained, and will be stopped by the next key-press

Clocking

Clock settings

Master clock offset

New global setting C+ (CLOCK OFFSET) allows fine-tuning the master clock phase by ±63 ticks:

Settings for synced events

Master clock controls

Start/stop master clock

Set master song position

Cueing synced events from master song position

Synced events have deterministic clocking

How synced events respond to master song position

Sequencer

Sequencer controls

Sequencer input response

Part setting SI (SEQ INPUT RESPONSE) sets the response of the part’s sequencer to MIDI input (when not recording):

  1. OFF: ignores MIDI input
  2. TRANSPOSE: original firmware behavior
  3. REPLACE: sequencer controls note timing, but MIDI input overrides note pitch
  4. DIRECT: MIDI input is directly voiced, allowing accompaniment of a sequence

Step sequencer

Step swing

Step selection interface

Step slide interface

Step offset

Other step sequencer changes

Loop sequencer

How the loop sequencer works

Recording a new loop

Editing a recorded loop

Loop phase offset

Arpeggiator

Arpeggiator basics

Arpeggiator rhythm settings

Selecting an arpeggiator rhythm basis

Using sequencer-based arpeggiator rhythm

Sequencer-programmed arpeggiator

Using sequencer notes to program the arpeggiator

JUMP direction

GRID direction

Note voicing

Polyphonic voice allocation

Polyphonic voicing options

New and improved values for VO (VOICING) setting:

Note priority changes

Other polyphony changes

Legato and portamento

Legato settings

Portamento setting

Voice modulation

Envelope

Envelope shape

How the envelope adapts to interruptions

Envelope adjusts to notes that begin/end while a stage or another note is in progress:

  1. Problem: release/attack is farther from target than expected
    • Cause: note ends while decay is falling toward sustain; new note reverses the polarity of the timbre envelope
    • Solution: steepen stage curve to cover more distance in the same time
  2. Problem: attack/release is closer to target than expected
    • Cause: note begins during release; note ends while attack is rising toward sustain
    • Solution: shorten stage duration in proportion to remaining distance, maintaining nominal curve shape
  3. Problem: attack starts above the peak level
    • Cause: after an early release from a high peak level, new note begins with a low peak level
    • Solution: skip to decay
  4. Problem: new note begins with an updated sustain level, without a release from the previous note
    • Cause: legato play
    • Solution: use a decay stage to transition to updated sustain level

Modulation destinations for envelope output

Low-frequency oscillator

LFO speed and sync

LFO spread: dephase or detune

Modulation destinations for LFO output

Voice oscillator

Oscillator audio mode

Part setting OM (OSCILLATOR MODE) in ▽O (OSCILLATOR MENU) sets whether the part outputs audio:

  1. OFF: no audio output
  2. DRONE: audio gain is modulated by tremolo LFO, but not by envelope
  3. ENVELOPED: audio gain is modulated by both tremolo LFO and envelope

Oscillator timbre

Oscillator shape

*- Filtered noise

┌┐CZ Phase distortion, resonant pulse

|⟍CZ Phase distortion, resonant saw

-◝ State-variable filter, low-pass

-W Pulse-width modulation

|⟍┌┐ Saw-pulse morph

-$ Hard sync

-F Wavefolder

┴┴ Dirac comb

ST Compressed sine: hyperbolic tangent (tanh) function

SX Exponential sine

FM Frequency modulation