Patchwork

Patchwork

A dual function sequencer for monome norns, crow and grid.

Each sequence has both a note pattern and a command pattern. A command fires when the sequence reaches its position. Commands manipulate the sequences. Think octave and position jumping, direction changes, new notes, sequence syncing, etc.

The grid has two modes: NOTES and COMMANDS (you’ll see an indication of what mode you’re in on norns’ screen). Use the former to edit your note patterns, the latter to edit your command patterns.

To drive the sequences, send triggers into crow’s inputs. For output, you have two options (selectable from the PARAMS menu): ^^ outs (2 v/oct + trig pairs) or jf ii 1+2. If using the latter, make sure crow is connected to Just Friends via i2c.

Changelog

v1.0.1 released! See release post for details

Keys & Encoders

  • K2 (short) - toggle between sequences
  • K1 + K2 - toggle between grid modes
  • K3 (short) - randomizes commands for selected sequence
  • K3 (long) - clears commands
  • K1 - functions as an ALT key:
    • K1 + E1 - adjust length of both sequences
    • K1 + E2 - adjust length of sequence A
    • K1 + E3 - adjust length of sequence B
  • E1 - scroll between EDIT and REFERENCE pages
  • E2 - navigate to command step for selected sequence
  • E3 - select command at step for selected sequence

Commands

  • -: Jump down an octave
  • +: Jump up an octave
  • N: New note
  • M: Mute
  • D: Random direction
  • ?: Random position
  • 1: Sync both sequences
  • P: New note pattern

Output Modes

Patchwork has three output modes:

crow outs 1+2
  • crow out 1: sequence A (v/oct)
  • crow out 2: sequence A (trigger)
  • crow out 3: sequence B (v/oct)
  • crow out 4: sequence B (trigger)
crow ii jf 1+2
  • just friends out 1: sequence A
  • just friends out 2: sequence B
crow outs + ii jf
  • crow out 1: sequence A (v/oct)
  • crow out 2: sequence A (trigger)
  • just friends (in note mode): sequence B
  • crow out 3: random voltage (0-5v range), triggered by crow input 1
  • crow out 4: random voltage (0-5v range), triggered by crow input 2

Params

Head to the global params menu to select your output mode, scale and root note.

Requirements

Make sure you’re running the latest firmware versions of both norns and crow

Norns (2.0+)
Crow (1.0.2+)
Grid

Download

Github or zip

45 Likes

Congrats on another awesome release. Can’t wait to jump in and try this out!

1 Like

Awesome script! Just the other day I went to see of dunes had v/oct outputs and was hoping for something just like this.

Don’t know if it’s my crow, but I can only get channel B to respond to incoming clocks. If I put the same trigger signal into crow input #1 the sequence doesn’t advance in row A.

Still fun with only one channel though :+1:t2:

1 Like

Gotta get both of those inputs working :slight_smile: Tested here on my end, and both inputs are receiving triggers ok and driving the sequences. Curious – does running either crow.clear() or crow.reset() from maiden fix the issue for you? I need to put some safeguards in place…

2 Likes

@Olivier This is awesome! It’s so good how the sequences evolve and are so playable. Really enjoying this so far.
I did have a couple of thoughts and tried to implement them but my coding skills are pretty much non existent :rofl:
I was thinking it would great to have a third option for the outs. A combination of crow outs and JF would be so good to play a complimentary oscillator alongside JF.
Also if there is a way to enable JF to play notes sequentially then we could have the notes overlap and that would sound beautiful.
Thanks so much for all your amazing work :raised_hands:

EDIT***
I managed to code a 3rd mode that enables both crow out 1+2 (seq A) and JF (seq B) to play together as well as JF to play its notes sequentially which allows the notes to ring out.
Happy to share the code additions as its sounding unreal :grinning:

3 Likes

yup! i think it was crow.reset() that did the trick. curious though…the same issue happened to me when I was using less_concepts and the v/oct outs on crow. Resetting norns manually didnt solve the issue. would powering down the case with crow in it have the same effect as the maiden command? I ask because I haven’t played a show with norns + crow yet, and I never bring my laptop with me. So is there a hardware equivalent of the maiden command which I can use if I get the same problem but have no computer around?

1 Like

Hi congrats on your great script!
Can midi out be used?
My crow is used in max for live at the moment.
Cheers!

2 Likes

Thanks for the kind words everyone. Hope you’re all having fun.

@cosmicsoundexplorer That’s awesome! Send me a DM and we’ll take it from there – I’d love to add those additional output options.

@gnome666 Unless there’s a specific technical reason I should avoid this, I’m thinking that the script can actually take care of this for you by running crow.clear() and crow.reset() from the init function on load. I’ll double-check before I implement, but this feels like a hassle-free solution.

@thopa - I haven’t yet implemented anything with MIDI out myself, but I’ll look into it!

4 Likes

Hmm, I have the same problem… I tried running crow.clear() via Maiden when Crow was connected to Norns and I got this:

crow.reset()

crow: [string “eval”]:1: attempt to index a nil value (global ‘crow’)

also tried it via Druid with Crow connected directly to laptop but the problem still stays. Bummer!

Are you on the latest version of norns, and has crow worked for you with other norns scripts? The error suggests to me you may be on an old version which is why it can’t find that global “crow” value

1 Like

To further that, there was recently an update to crow as well.

I think I got this too. Maybe try crow.clear ()

Thanks all for your help, unfortunately the problem is still there – I had not in fact updated Crow and did that, but A channel is still unresponsive :neutral_face: Also tried crow.clear()

1 Like

@bereenondo - just sent you a dm!

EDIT: Got @bereenondo up and running with an updated version of the script that includes some crow safeguards at startup. If you’re experiencing any weirdness with your inputs, grab the latest version of the script on github!

4 Likes

daaaaang. thanks for the diligence. but more so for the inspired scripting!!!

1 Like

@Olivier, this is fantastic! I really like the alternate grid mode to edit the commands, it’s much less finicky than using the encoders. I’m having a lot of fun making music with this! Thank you!

2 Likes

Having a lot of fun using this with my DPO!!

Thanks for the great work <3

2 Likes

I’m a totally dunce, but how would I tune this to the key of F or something?

1 Like

:thinking: Hmm…I’m assuming that in the v/oct realm you’d need a module with some kind of tuning capability (like the G5 mode on Disting)? If your output mode is jf ii 1+2 and you have a teletype communicating w/ Just Friends, you could use JF.SHIFT to transpose by semitones. I could look at implementing a transposition param for those without a TT though…

EDIT: Got global transpose working, and implemented a third output mode that uses jf.play_note based on @cosmicsoundexplorer’s fantastic suggestion. It does indeed sound great. Will post an updated version tonight!

6 Likes

aaawwweeessssooooooommmmmeeee.

1 Like