Loom: alternative firmware for Yarns (looper, paraphony, and more)

I’ve been working on this on and off for a few years, and am excited to release it to the public! I hope people enjoy using it. Pasting from the README:

Objectives

  • Enhance Yarns as a tool for solo and collaborative musical composition
  • Obtain maximal functionality from a minimal MIDI controller
  • Expand Yarns’ abilities as a digital synthesis voice

Features

  • New layouts, including a layout that features a 3-voice paraphonic part with internal envelopes
  • Looper with real-time recording
  • Global control and display of the active part and its play mode
  • Oscillator PWM
  • Velocity filtering
  • More control over vibrato, input octave, sustain behavior, and sequencer/keyboard interaction
  • Sequencer-driven arpeggiator
  • Check the changelog for more!

Caveats

  • Installation of this firmware is at your own risk
  • Presets saved in this firmware cannot be loaded with the manufacturer’s firmware, and vice versa
  • Some changes are not documented in the changelog
  • Some of Yarns’ stock capabilities have been downgraded to accomodate new features (e.g. the sequencer holds 16 notes instead of the original 64)

Installation

  1. Download yarns.syx from the latest release’s assets
  2. Follow the manufacturer’s instructions for installing new firmware

Contributing

  • License: MIT License
  • Forks, pull requests, feature ideas, and bug reports are welcome
  • Responses and merges are at my discretion

Acknowledgements

7 Likes

:sparkles: :fireworks: :sparkler: :sparkler: :fireworks: :sparkles:
Trying it immediately! Congratulation for the release

1 Like

This looks really promising i will check it out tonight :slight_smile:
Are there also new midi CC options to play with?

Edit: is it true that a lot of cc targets are changed? If so can you provide a list with what does what?
Im using the needles expansion for yarns (Needles - 1U MIDI Controller - Yarns Companion) i can then update the software of needles to support this new firmware

Thanks for the interest! I’d love to hear people’s thoughts on the new features and interface.

I haven’t added new MIDI CC options, no. The closest I’ve gotten is adding more options to how Yarns responds to the CC for the sustain pedal – see description of the new SU(STAIN MODE).

My MIDI controller is a super vanilla keyboard, so I don’t have a lot of insight into how CCs are used. What parts of the new functionality would benefit from CCs?

Hi Footker thx for your response. It seems like the needles controller isnt working because of the changed play mode if i understand it correctly from the release notes.

OSC PW INITIAL
OSC PW MOD
The play modes (hold TAP) in yarns you can set the arp settings through cc but this has changed now with the new play modes?
Setting active part through cc
maybe RQ so you can set it to loop through cc? (for the midi looper feature)
And if you add that it would also be nice to have record so you can have button closer to your keyboard if your midi looping

this is the current CC chart: https://docs.google.com/spreadsheets/u/0/d/15TJX1dSbiRo1jPDxPYR4GV2ICQuVu5B6wAjiAAwP60o/pub?gid=1

Lastly: i couldnt find where the vibrato output setting was (the setting to set it to cv 3and 4 when you are in 2m)

What layout and play mode are you using? The manual mode (M) is the simplest (rules out arp issues, etc).

Thanks, I see the issue – I accidentally removed the CC for the ARP DIRECTION setting. I’ll post a fix in the next few days! Let me know if other CC stuff is broken. I double-checked the settings and it looks like that’s the only one that was affected.

Should be fine for the OSC settings.

For active part, RQ, and recording – this is difficult, for reasons that also affect the stock firmware. The UI (display/encoder/buttons) mediates these changes, and is not currently equipped to handle a state change via CC. In technical terms, state that’s currently stored in Ui would have to instead be centralized in Multi, which could broker access by both the UI and CCs.

It should be the same CV (CV OUT) setting as before. Does it show up in the ▽S (SETUP MENU)?

Thx for answering again :slight_smile: i will look into this this evening.

So if i understand the changes the arp is only activated once you change the “play” mode to arp? In the official version this happens once you change arp range is set to 1 or higher. This made it so that the arp mode can be set on and off through the cc messages (0 is no arp)

edit: Played with it this evning things are getting clearer to me. I dont know if i found some bugs or i am just getting lost in old patterns. Right now i cant start the sequence i recorded(step mode). Im in the normal menu where it shows 1M and LA (so first menu item of 1M) and when i press start it doesnt start my sequence.

editedit: found it i think i pressed TAP alot of times and numbers show up when the numbers went to 40 my clocks started but my sequence i played in through steps was gone. Is this a bug or am i the bug?

editeditedit: played with the arp mode. What is the reason behind that you need to record a sequence for the arp mode to work? and what does it do when you also use the arp pattern. When i change it i get different patterns but i cant find out what it does with each other

final edit really: is it possible to add B- to the cc messages? this way you can control the loop length through a cc pot (c/ is already threre)

Yes, arp is enabled only for the Arpeggiator play mode. The idea behind play mode was to allow switching between manual/arp/record without needing to use the encoder or delete a sequence – that’s why I moved away from using the arp range as an implicit control of arp on/off. But keeping the ability to toggle arp via CC is definitely a good idea, despite the difficult implementation. I’m looking into it.

The numbers showing up after TAP are the resulting tempo. Maybe your unit was previously set for external clocking? I added some info about tap tempo changes to the release notes.

The sequencer step and the arp pattern are combined via a boolean “and”. The sequencer-driven arp is useful for custom patterns, but combining it with the built-in patterns might not be useful. I’m considering some alternatives here, like making the sequencer-driven arp a special value of the AP setting.

Good idea, I’ll add it to the list! Thanks again for feedback.

Thx for your answer. It made some things clear to me.

Yes, arp is enabled only for the A rpeggiator play mode. The idea behind play mode was to allow switching between manual/arp/record without needing to use the encoder or delete a sequence – that’s why I moved away from using the arp range as an implicit control of arp on/off. But keeping the ability to toggle arp via CC is definitely a good idea, despite the difficult implementation. I’m looking into it.

Yeah dont mind me if this is to hard to do. im getting used to it right now.

The numbers showing up after TAP are the resulting tempo. Maybe your unit was previously set for external clocking? I added some info about tap tempo changes to the release notes.

Hmm i dont know if this was the case. I think i was just getting lost and didnt know in which state i was. Natural response for me then is to press every button on the module until works again. If it happens again i wil report back

The sequencer step and the arp pattern are combined via a boolean “and”. The sequencer-driven arp is useful for custom patterns, but combining it with the built-in patterns might not be useful. I’m considering some alternatives here, like making the sequencer-driven arp a special value of the AP setting.

Yeah i thought of it but it was hard to check. Recorded seqeunce as pattern 1 would be really top notch

Good idea, I’ll add it to the list! Thanks again for feedback.

Thx :). if you need any beta testing im here. You can also dm me if that keeps this thread clean

1 Like

@bloc Do you send CCs via the Remote Control channel, or on part-specific channels? There’s unfortunately not much room in the CC table to add RC mappings for new settings.

Im using the part specific channels CC there is more room there. Have you seen the midi cc chart i send you above?

Yup, I made a duplicate sheet where I’m planning out the changes (search for “Loom”):

How do those look? I figured that “set active part” and “set recording on/off” probably belong under RC, since they’re global-type controls.

It looks great :). Maybe its more logical to bring the active part and recording CC’s to 114 and 115 right under Record tie and reset. Or maybe bring play mode and active part together. Thx for all the great work and just call me if i can help you with anything. Ow and is B- gonna make it into the CC’s? :innocent:

Thx for the reminder on B-! I’m actually considering decoupling the loopers from the global bar duration, in favor of using a new per-part setting (with the same semantics – loop length in terms of number of quarter notes).

For part/rec CC, 114/115 would put them in the part channel, right? I don’t know if that works, since those are global settings (at least for now – multi-part recording would be another substantial rewrite).

New version is up!

Direct firmware download

yarns-loom.syx (174.9 KB)

Changelog

Full details are in the manual! Please note that this release’s preset storage format is not compatible with previous releases.

Thanks to @bloc for support, bug reports, and excellent feature ideas!

New features

  • Looper
    • Max notes for looper (and step sequencer) increased from 16 to 31
    • L- (LOOP LENGTH) setting
    • Hold TAP while recording a loop to toggle overwrite mode
    • Use encoder/CC to move loop phase forward or backward in time
  • Envelope improvements
    • Can use velocity to modulate envelope’s amplitude and ADSR segments
    • Envelopes available in all layouts: can switch OM (OSCILLATOR MODE) between OFF , DRONE , and ENVELOPED
    • Added ENVELOPE as an option for CV output settings ( CV , 3> , 4> )
  • Expanded support for MIDI Control Change (CC) messages
    • Added CC support for Loom-specific settings
    • Can use CC to start/stop/delete recording
    • Can use CC to switch play mode between manual/arpeggiator/sequencer
    • Result of all CCs displayed on screen
  • Hold pedal improvements
    • SOSTENUTO option for HOLD PEDAL MODE , as well as a novel CLUTCH
    • The status of active keys is flashed on the display (manually held, sustainable, sustained, or about to be released)
    • Added HOLD PEDAL POLARITY to accommodate Casio/Korg pedals
  • Remote control channel serves as a global channel for notes, as well as for CCs that don’t have a remote-control mapping
  • New clock divider system based on integer ratios

Bug fixes

  • Fix numerous looper crashes
  • Fix bad voice mapping in many layouts
  • Reinstate menu access to settings for min/max MIDI note
  • Fix menus for the 4T layout
  • Fix an issue with the resolution of aux CV
  • Fix envelope retrigger
  • Fix bad scrolling in submenus
  • Fix UI splashing the wrong part when a recording is deleted
  • Fix stock Yarns ignoring negative CC values

Tweaks

  • Arpeggiator is sequencer-driven only when using the SEQUENCER value for ARP PATTERN
  • Looper reacts to tempo changes more smoothly
  • Prevent looper from killing sustained keys, and from sustaining keys on its own
  • Simplify checks for transpose vs. record vs. multiple parts: recording part gets dibs, otherwise note is available to other parts
  • Remove VIBRATO CONTROL SOURCE
  • Optimize refresh code for display and voices
2 Likes

A new version is available! This release aims to give Loom users deep and flexible control of timbre and amplitude dynamics.
Release Yarns Loom v2.2.0 · rcrogers/yarns-loom · GitHub

Direct firmware download:
yarns.syx (207.1 KB)

Full details are in the manual! Please note that this release’s preset storage format is not compatible with previous releases.

Thanks again to @bloc for ongoing support and testing!

New features

  • Braids-inspired oscillator synthesis models with variable timbre
    • Filtered noise (4), phase distortion (8), state-variable filter (2), pulse-width modulation (2), hard sync (3), wavefolder (2), tanh compression, Dirac comb, phase modulation (15)
  • Oscillator timbre can be internally modulated by envelope, velocity, and LFO
  • Tremolo LFO with variable depth and 4 shape options
    • Can be applied to both envelope CV and oscillator
  • Changed how velocity can modulate envelope amplitude: new PEAK VEL MOD scales only the envelope AD peak, leaving the sustain level unaffected, to allow direct control over envelope ‘punch’
  • New FILTER mode for the hold pedal: part receives notes only when the pedal is in the state selected by HOLD PEDAL POLARITY, and latches any notes that are “silently” released. Allows using the pedal as a part selector!

Tweaks

  • Wider range of envelope segment times: min 1ms, max 5s
  • Envelope uses buffered rendering and linear interpolation for higher audio quality
  • Display optimization
    • Minimize redraws by switching active character only after completing a brightness PWM cycle
  • Replace transposable checks with a note routing strategy that gives direct priority to the recording part
  • Disable LFO frequency variability between voices of the same part (revert to stock behavior)
  • Reduce CV/gate sample rate from 8kHz to 2kHz
  • Reduce loop/step sequencer note count from 31 to 30
  • Added CC for OUTPUT CLOCK RATIO

Hello. :slightly_smiling_face:

This looks really interesting and extends the complexity of Yarns no doubt. May I ask if this firmware (or, indeed, the stock one) allows a more simple setup of just mapping CCs to CV outs and notes to gate outs?

Apologies if I’ve missed this in the documentation or elsewhere on the internet, I’ve not been able to find a definite answer.

Hi, thanks for the interest! Yes, stock Yarns has this, though the documentation is a little hard to find because it was added in a later firmware update, and those changes aren’t in the manual:

Mutable Instruments | Yarns

  • Added a new layout called 4V , for raw conversion of continuous controllers into CVs. It consists of 4 parts. For each part PA , you can select a MIDI channel CH and a data source CV . Values are mapped between 0V and +5V.

The available data sources that can be converted to CV are: velocity, modulation wheel (CC 1), aftertouch, breath controller (CC 2), foot pedal (CC 4), pitch bend, vibrato LFO (the intensity is controlled by the mod. wheel), and raw vibrato LFO (constant intensity).

The gates are still controlled by notes in this layout.

Loom retains this layout, with a few changes:

  • Envelope is available as a CV output
  • The output range is 0-7V instead of 0-5V (7V is the maximum positive voltage available on the Yarns DACs), for use with modules with a large input voltage range
1 Like

This is great news and many thanks for the info that I had completely missed, @Footkerchief!

Are the MIDI notes that trigger the gates configurable in the 4V layout? And when velocity is selected for the CV out, does it get that from the MIDI note that triggers the paired gate (i.e., if CV2 set to velocity, the value would be the velocity of the MIDI note triggering Gate 2)?

(Sorry for all the questions, just trying to figure out if Yarns is the right fit.)