GridStep

gridstep

gridstep is a polyphonic, isomorphic grid keyboard sequencer for monome norns + grid using the timber engine.

https://www.instagram.com/p/CH_JGvhh5JG/

page_trig

grid_step_edit

requirements

  • norns
  • grid - note input and sequencing
  • timber - for internal sounds. install from maiden

optional

  • external midi devices - for getting more sounds than just Molly The Poly

features

  • The grid can be played in an isomorphic layout that is either chromatic or in-scale.
  • It can sequence up to 16 tracks.
  • 16 sounds can be loaded into the Timber engine.
  • Sequences are stored as grid positions rather than notes and can be recorded from the grid input or programmed in.
  • Each track can send it’s notes to the internal sound engine (Molly The Poly) or to any midi channel or device.
  • Each track can have up to 16 patterns that can be quickly changed individually or as scenes.
  • Each pattern can have up to 16 bars and the length of a bar can be set between 1 step to 16 steps. By mixing up bar lengths, you can create interesting polyrhythms!
  • Each step can have trigger conditions to create dynamic patterns!
  • Each step can have a different velocities and note lengths.
  • Each step can be offset ± 12 substeps or 16 substeps if the pattern is in triplet mode.
  • The entire project can be saved and projects can be loaded during playback.

documentation

documentation for gridstep can be found here.

download

Summary

gridstep github

installation

gridstep.lua should be placed in “/home/we/dust/code/gridstep/gridstep.lua”
the “lib” and “img” subfolders will also need to be placed in that folder
“/home/we/dust/code/gridstep/lib/”
“/home/we/dust/code/gridstep/img/”

easiest way to install from ssh is:

cd /home/we/dust/code/
git clone https://github.com/Quixotic7/gridstep.git

make sure you have installed Timber from maiden.

system > reset then launch gridstep

changelog

1.2.4 - Experimental support added for loading kits. Go to kit page, select “load kit” using K3, then select a sample, the entire folder will be loaded and the active track’s sound source will change to kit. Use the new layout mode to map all the sounds across the grid. Samples can be adjusted in params menu, kit samples start at 16 and sample 16 maps to kit sample 1/C0, sample 17 kit sample 2/C#, etc…

v1.2.3 - Added beat synced delay based on halfsecond from awake.

v1.2.1 - Changed the sound engine to Timber. No UI yet, use the params menu to change sounds. There are 16 sound slots which are currently mapped to a track’s midi channel parameter.

v1.1.1 - Bug fix to prevent too many of the same note from triggering at once which can crash Molly The Poly

v1.1.0 - Added support for 64 / 8x8 grids.

  • works mostly the same as for 128 grids.
  • in 64 grid mode, keys 7 and 8 on the toolbar(y = 8) can be used to select steps 1-8 or steps 9-16 for editing.
  • use key 3 to round robin through the grid pages: play, pattern launch, sequence.
  • cut, copy, and paste have been moved to keys 4,5,6
  • in grid play and grid sequence keys 7 and 8 on row 7 can be used to scroll up and down
  • in grid pattern launch mode use shift + 5 and 6 to scroll the pattern view up and down.
  • All the shortcuts for the 128 mode are unchanged.

v1.0.1 - fixed bug that could occur when changing the number of bars in a pattern.

v1.0.1 - initial release

39 Likes

Update v1.0.1 - fixed a show stopping bug that could occur when changing the number of bars in a pattern.

Also building out a feature list for the next major release, let me know if there’s anything you’d love to see added! Already planned are: split isomorphic grid to play and record to two tracks at once, midi fighter twister as a control surface, cc sequencing, randomization options for shuffling steps(could go crazy with this), UI pages for controlling Molly The Poly’s sound, playhead modes like ping-pong and reverse, and drum layouts.

4 Likes

Cool! I dont know all types of sequencers and scales but does this allow for a free playing -> auto loop way of using the grid inn earthsea manner. I mean unstepped/unquantized but tempo being free form by own playing speed.
Could you evaluate if adding the grid type recognition from timber could be implementet for the non 128 users?
Any chance of timber player and or passersby as internal engine instead polly?

Will this get up to maiden soon? Much easier to get that way. For example i am without computer these days but maiden works on mobile.

congrats! looking great
Have you looked into time divisione per track? that would be awesome.
Thanks for sharing!

@thopa Thanks! There’s a triplet mode that makes each step 1/8T time instead of 16th time. You can also change the number of steps in a bar to create different time divisions.

@Hlp recording is similar to earthsea in that the key positions are recorded and played back. However the recording is done to the current temp. Recorded notes will be placed on to a 16th step and the steps time will be offset to the time at which they are played.

Calculating the tempo based on what you play is a great idea! Not sure how that will work once you have stuff playing in other tracks but it could definitely be something that could be used to start a project.

I’d have to rethink of some of the UI elements with a non 128 grid but some of it could definitely work.

I was hoping to eventually create my own sound engine but timber or timber keys would work very well since they’re multitimbral. I started with Molly since it was easy to implement and I wanted to focus on developing the sequencing features.

I agree, I’ll look into submitting this to Maiden.

1 Like

Thanks @Quixotic7 looking forward to trying it out :slight_smile:
Gracias

Sounds so good thank you!
Yes the free play sequencing of earthsea and grid is what drew me to monome in the first place, its super great for more human feeling less machine like music and that fits samples/timber so if you think you wanna work in that direction you ll make a lot of ppl happy!

I think no visibility of the 2nd 8 steps of 16 alone isnt a big issue for 64ers

@Hlp btw, notes are fired in the function grid_note_on() in gridstep.lua line 715 and grid_note_off() line 736. The engine isn’t too tightly tied with the rest of the system so it should be pretty easy to switch it out.

@Hlp I took the challenge and added support for 8x8 64 grids! This mode will be enabled if the grid reports 8x8 for it’s dimensions. I tested it with my 128 grid but don’t have a 64 grid so can’t confirm it fully works but it should!

You can fully edit all the steps, keys 7 and 8 on the toolbar(row 8) can be used to toggle between editing steps 1-8 or 9-16. See the changelog for the full list of shortcut changes.

3 Likes

Much apreciated, thank you!

1 Like

Excited to try to this, but I get a “load fail” error on my factory norns when trying to run the script. On the select page, I am able to view the help text. The error occurs when hitting K3 to load.

Attempted two installs over dust and had the issue both times.

Have you restarted the device? Intent to get that error if I forget to do that

Yes, I tried both sleep and restart (I’ve made that a habit when installing new scripts, even when unnecessary).

I also get a ‘load fail’ I have restarted

@Gexex make sure you install Molly The Poly from Maiden. You might also need to type ';restart ’ in maiden console to to reload the libraries. If it’s still failing, try running it from Maiden and let me know if any errors are reported.

Thanks! The issue is not molly (thought I might have failed to re-install molly after a previous update, but it’s there).

Here’s the maiden print out (appears to have something to do with the lua files in the lib folder?):

?

norns.script.load(“code/gridstep-master/gridstep.lua”)

script load: /home/we/dust/code/gridstep-master/gridstep.lua

cleanup

script clear

SCRIPT ERROR: load fail

/home/we/dust/code/gridstep-master/gridstep.lua:19: module ‘gridstep/lib/Q7Util’ not found:
no field package.preload[‘gridstep/lib/Q7Util’]
no file ‘/home/we/norns/lua/gridstep/lib/Q7Util.lua’
no file ‘/home/we/norns/lua/core/gridstep/lib/Q7Util.lua’
no file ‘/home/we/norns/lua/core/params/gridstep/lib/Q7Util.lua’
no file ‘/home/we/norns/lua/lib/gridstep/lib/Q7Util.lua’
no file ‘/home/we/norns/lua/softcut/gridstep/lib/Q7Util.lua’
no file ‘/home/we/dust/code/gridstep/lib/Q7Util.lua’
no file ‘/usr/local/share/lua/5.3/gridstep/lib/Q7Util.lua’
no file ‘/usr/local/share/lua/5.3/gridstep/lib/Q7Util/init.lua’
no file ‘/usr/local/lib/lua/5.3/gridstep/lib/Q7Util.lua’
no file ‘/usr/local/lib/lua/5.3/gridstep/lib/Q7Util/init.lua’
no file ‘/usr/share/lua/5.3/gridstep/lib/Q7Util.lua’
no file ‘/usr/share/lua/5.3/gridstep/lib/Q7Util/init.lua’
no file ‘./gridstep/lib/Q7Util.lua’
no file ‘./gridstep/lib/Q7Util/init.lua’
no file ‘/usr/local/lib/lua/5.3/gridstep/lib/Q7Util.so’
no file ‘/usr/lib/arm-linux-gnueabihf/lua/5.3/gridstep/lib/Q7Util.so’
no file ‘/usr/lib/lua/5.3/gridstep/lib/Q7Util.so’
no file ‘/usr/local/lib/lua/5.3/loadall.so’
no file ‘./gridstep/lib/Q7Util.so’
stack traceback:
/home/we/norns/lua/core/norns.lua:138: in function </home/we/norns/lua/core/norns.lua:138>
[C]: in function ‘require’
/home/we/dust/code/gridstep-master/gridstep.lua:19: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/script.lua:191: in function </home/we/norns/lua/core/script.lua:191>
[C]: in function ‘xpcall’
/home/we/norns/lua/core/norns.lua:139: in field ‘try’
/home/we/norns/lua/core/script.lua:191: in function ‘core/script.load’
(…tail calls…)

script clear

clock: ignoring resumption of canceled clock (no coroutine) >>

@Gexex the problem is that the gridstep lib’s are not being found. gridstep should be in “/home/we/dust/code/gridstep”, make sure you cloned the whole repository and not just gridstep.lua.

cd /home/we/dust/code/
git clone https://github.com/Quixotic7/gridstep.git

and you should be good.

Sounds good, I’ll look into it this evening. I cloned the whole thing, but I’m wondering if I placed the lua files in the lib folder in the wrong directory in norns (probably).

1 Like

Yes, you probably cloned to the wrong place. It would be nice if I could use relative paths for the libs, instead of requiring them to be in dust/code/gridstep/lib/ but the libs never get found unless I hardcode the path.

@PerVildman also check and make sure you cloned to home/dust/code/