Bistro

bistro

a “press cafe” remake for Norns (originally by @stretta)

Instructions

Each column along the grid’s x-axis represents a note.

Each row along the grid’s y-axis holds a pattern.

Tap and hold a grid key to play the given note (column) with the given pattern (row). Press different buttons in the same column to vary the rhythm, and different buttons in the same row to vary the pitch. Hold down different combinations of buttons for polyrhythmic interaction among pitches.

Requirements

  • Norns
  • Grid (64 compatible, not tested on a 128 but it should work)
  • KarplusRings engine (from community we package, installed by default)

Documentation

Use ENC1 to switch pages.

PLAY page: (see above)

PATTERNS page: alter the trig sequence for each pattern. Patterns are displayed horizontally, unlike the original “press cafe”, since they are issued by row interaction and it makes more sense to my brain.

LENGTHS page: alter the length of the patterns on the previous page. Pattern lengths are displayed horizontally here as well.

Set the base note + intervals and synth engine params in the PARAMS menu.

Finally, here’s a video of stretta demonstrating the original “press cafe” patch to get a feel for how it works:

Install

Run the following command from Maiden:

;install http://github.com/cfdrake/bistro

Check out the repository on Github.

75 Likes

Awesomeness. Let’s try it out :star_struck: :v:

3 Likes

@cfd90 This isn’t loading for me, getting error:load fail on screen with this in maiden:

Summary

script load: /home/we/dust/code/bistro/bistro.lua

cleanup

script clear

MISSING INCLUDE: we/lib/karplus_rings

SCRIPT ERROR: load fail

/home/we/dust/code/bistro/bistro.lua:9: MISSING INCLUDE: we/lib/karplus_rings

stack traceback:

/home/we/norns/lua/core/norns.lua:138: in function </home/we/norns/lua/core/norns.lua:138>

[C]: in function ‘error’

/home/we/norns/lua/core/startup.lua:49: in function ‘include’

/home/we/dust/code/bistro/bistro.lua:9: in main chunk

[C]: in function ‘dofile’

/home/we/norns/lua/core/script.lua:186: in function </home/we/norns/lua/core/script.lua:186>

[C]: in function ‘xpcall’

/home/we/norns/lua/core/norns.lua:139: in field ‘try’

/home/we/norns/lua/core/script.lua:186: in function ‘core/script.load’

/home/we/norns/lua/core/menu/preview.lua:23: in function ‘core/menu/preview.key’

/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>

script clear

I have KarplusRings installed (from awake rings) but maybe it’s in the wrong place?

Can’t wait to play with this. One of my all time favorite scripts!

Edit— I deleted we and then reinstalled and it’s working!

1 Like

Nice - glad the reinstall worked!

for posterity: Bistro depends on including the rings params from we/lib/karplus_rings.

Love that demo, this looks so fun!

@cfd90
super cool!
jamming with it for a while now.

running into a few bugs…
the install path at the top doesn’t seem to point to an active directory.
also…i think the ; needs to not have a space after it.

i did get it installed via Github! :slight_smile:

it was running horizontally on a 128 Grid and then it crashed.
it runs vertically now with the Grid.
(of course i can just physically rotate my Grid)
i just thought it was weird that it changed it’s X/Y after it crashed.

i tried changing the patterns but it seems to ignore any of the changes.

couple of feature requests if possible… :slight_smile:
would it be possible to add a latch?
can you add MMC for external MIDI clock and transport as well as MIDI out?

I have to say this is the one script I always wanted to see on Norns. I used to use Press Cafe alot back in the day, when it was originally released. So a big thankyou for doing this - you made my month :grinning:

28 Likes

@cfd90

Thank you for this, a great script, so much fun to play.

I did hit a glitch once in changing from the play to pattern modes, making adjustment and then switching back and for some reason there was no sound, though relaunching the script resolved it. Will monitor and report back if happens again.

As shared above, a latch mode would be great and I can also imagine a slow LFO moving around some of the Rings parameters would add even more aural interest.

2 Likes

This script – so simple, so fun. Thanks for porting this!

I ran into the same thing. Entire grid was unresponsive until restart. Pattern randomization seemed to work, but only generated solid patterns.

Hold would be great, but also sostenuto. That would let you set a couple notes repeating and then play over the top.

(also also midi out) :grin:

4 Likes

Thanks, it’s nice to see stretta’s work ported to norns. Next Mlooper? :grinning:

Very nice initiative to port this script.

Just spotted a small typo in the install instructions.

Should be:

;install http://github.com/cfdrake/bistro
4 Likes

@mlogger thanks for sharing! sounds wonderful, glad you’re enjoying it.

@eigen oops - thanks for noting that, I’ve fixed the install snippet in the original post and will hopefully get this in the script librarian soon.

I’m curious about the folks seeing crashes - anything of note in the Maiden console window when the crash happens? I don’t have a 128 so I’m wondering if I’ve got a loop boundary issue in there somewhere for larger grids.

2 Likes

very excited to see this! going to take for a spin today. I remember trying a sigabort script for my launchpad back in the day and press cafe was lots of fun.

+1 for midi out and clock/transport sync

Thank you for sharing

2 Likes

Yes, when going to the 3rd page w/ E1, I get this:

lua: 
/home/we/norns/lua/core/paramset.lua:359: invalid paramset index: pattern_9_length
stack traceback:
	[C]: in function 'error'
	/home/we/norns/lua/core/paramset.lua:359: in function 'core/paramset.lookup_param'
	/home/we/norns/lua/core/paramset.lua:265: in function 'core/paramset.get'
	(...tail calls...)
	/home/we/dust/code/bistro/bistro.lua:305: in function 'core/script.redraw'
	/home/we/dust/code/bistro/bistro.lua:240: in function 'core/encoders.callback'
	/home/we/norns/lua/core/encoders.lua:71: in function 'core/encoders.process'
lua: 
/home/we/norns/lua/core/clock.lua:82: /home/we/norns/lua/core/paramset.lua:359: invalid paramset index: pattern_9_length
stack traceback:
	[C]: in function 'error'
	/home/we/norns/lua/core/clock.lua:82: in function 'core/clock.resume'

where do i get that karplus_rings library? I have Awake rings installed but i’m getting the same load error. is there a way to solve this without deleting the “we” directory?

Summary
1

matron

supercollider

# script load: /home/we/dust/code/bistro/bistro.lua

# cleanup

# script clear

### MISSING INCLUDE: we/lib/karplus_rings

### SCRIPT ERROR: load fail

/home/we/dust/code/bistro/bistro.lua:9: MISSING INCLUDE: we/lib/karplus_rings

stack traceback:

/home/we/norns/lua/core/norns.lua:143: in function </home/we/norns/lua/core/norns.lua:143>

[C]: in function 'error'

/home/we/norns/lua/core/startup.lua:49: in function 'include'

/home/we/dust/code/bistro/bistro.lua:9: in main chunk

[C]: in function 'dofile'

/home/we/norns/lua/core/script.lua:186: in function </home/we/norns/lua/core/script.lua:186>

[C]: in function 'xpcall'

/home/we/norns/lua/core/norns.lua:144: in field 'try'

/home/we/norns/lua/core/script.lua:186: in function 'core/script.load'

/home/we/norns/lua/core/menu/preview.lua:23: in function 'core/menu/preview.key'

/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>

# script clear

clock: ignoring resumption of canceled clock (no coroutine)

clock: ignoring resumption of canceled clock (no coroutine)

I may wait for midi out implementation to install i guess

thanks for making this, btw. looks awesome

*edit: “We” reinstall worked. thanks for the walkthrough dan, i was imagining doing that manually via sftp in cyberduck and potentially losing some kind of dust data

The error seems to be at line 304. I guess it should be looping on rows instead of cols.

The problem is more deeply rooted, this cannot work on asymetric grids unless folding / scrolling is implemented:

4 Likes

This is really nice, thanks!
Any chance you’re considering adding MIDI out :pray:?

2 Likes

FYI - Bistro seems to work just fine on a 256 :sunglasses:
(neotrellis 256 anyway)

4 Likes

I’m getting the same issue showing up resulting in the grid not responding afterwards.