Tambla

tambla

a semi-generative rhythmic arpeggiator with bendable playheads

tambla-play-m

tambla affords exploration of polyrhythms and syncopation. it was born out of a love for arpeggiators and the desire to explore what might happen when wandering off strict grid based timing.

patterns consist of four rows. rows have 2-16 triggers with velocity, duration, and chance values per step. holding down a key generates notes at the given pitch with the trigger pattern in the first (top most) row. each subsequent key held, begins generation based on the trigger pattern in next lower row. note generation starts from the current playhead position instead of the beginning of the row ensuring the overall rhythmic structure is maintained unless note based sync it chosen.

the four playheads scanning each row are synchronized to a common clock. individual rows can divide down the clock for linear phasing effects or bending the clock or both. bend values < 1.0 result in the playhead progressing in a logarithmic fashion (fast then slowing down) where as bend values > 1.0 result in exponential progression (slow then speeding up).

tambla aspires to one day provide sequencing of patterns or generative variation so as to provide something to play against while learning/exploring djembe and handpan. areas of immediate interest include expanding performance controls, developing an engine to provide a unique self contained voice, and crow support.

tambla is also a technical experiment. it is built using a high level event processing framework called sky which imagines writing norns scripts in a declarative fashion using chains of high level building blocks that transform events.

requirements

  • norns (201029 or later)
  • midi keyboard - for note input, preferably with velocity sensitivity
  • midi controller (encouraged) - for mapping performance parameters to dedicated
    controls

optional

  • grid - note input
  • arc - various performance controls

pairs well with

  • multi-channel MIDI-CV converters
  • (one or more) velocity sensitive polyphonic MIDI sound sources
  • delays
  • clock synchronized setups

documentation

available in the tambla-docs repository on GitHub.

download

latest version always available via maiden

sketches

over the course of development various experiments were captured along the way. tambla itself is still looking for its voice, it can make music but it is still learning how. the experiments below are just that, norns driving softsynths via midi:

77 Likes

Can’t wait to try this out (and taking a look at the code). Thanks for sharing!

WOW!
super kewl!

going to pair this up with my RAV drum!

Very interested to try this out! Is a midi keyboard required if Grid is being used for note input?

1 Like

this looks awesome! so many great norns scripts these days :partying_face:

2 Likes

either a MIDI keyboard or a grid can be used, sorry for the confusion!

2 Likes

this is exciting!

thanks @ngwese

2 Likes

i’m curious to see what comes of this. it is daunting to share when there is so many amazing tools being generated out there. it is very easy to stay tinkering in a corner.

using small bend values on one or two tracks brings some nice but subtle interplay between the patterns. …just thinking about this makes me want to add lfos to animate the bend parameters slightly to create a sensation of rushing and dragging.

12 Likes

hi i like the script! i just wanted to sequenz a external synth but no luck. just the internal sound engine response. if i try awake script to midi out synth response. so in that case i do something wrong with ur script :slight_smile:

the main output is either the internal polyperc synth or midi. the default is polyperc. to change where things are routed one has to set the output parameter, see the tambla: i/o part of the docs

note that there are ways to set each row to output to a different destination and/or channel as well.

2 Likes

Thank you for sharing this! Can’t wait to play around and take a closer look at how it all comes together.

every day it becomes less clear to me why I own an OP-1

2 Likes

tambla: rows -> midi out did the trick! realy nice :smiley:

Those sketches sound tasty, can’t wait to give this a try. Nice work.

a small test :
pyramid 4 drone Notes -> Tambla -> Microfreak

i love ur script! :slight_smile: thank you very much!

6 Likes

cool, thanks for sharing!

…there is a lot of potential which i haven’t fully explored by clocking the script from a sequencer and using norns parameter mapping to drive tambla parameters remotely via MIDI in addition to playing live.

1 Like

This looks amazing!
Can’t wait for crow support and JF over i2c.

need a little help, getting a load fail error:

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

cleanup

script clear

ERROR (i2c/hp) failed to write
including /home/we/norns/lua/extn/sky/unstable.lua
including /home/we/norns/lua/extn/sky/prelude.lua
using /home/we/norns/lua/extn/sky/core/object.lua
using /home/we/norns/lua/extn/sky/v1/core/event.lua
using /home/we/norns/lua/extn/sky/v1/core/process.lua
using /home/we/norns/lua/extn/sky/v1/device/utility.lua
using /home/we/norns/lua/extn/sky/v1/device/virtual.lua
using /home/we/norns/lua/extn/sky/v1/device/make_note.lua
using /home/we/norns/lua/extn/sky/v1/device/arp.lua
using /home/we/norns/lua/extn/sky/v1/device/switcher.lua
using /home/we/norns/lua/extn/sky/v1/device/transform.lua
using /home/we/dust/code/tambla/lib/device/linn.lua
using /home/we/norns/lua/extn/sky/unstable/io/grid.lua
using /home/we/norns/lua/extn/sky/unstable/io/norns.lua
using /home/we/dust/code/tambla/lib/io/grid.lua
using /home/we/norns/lua/extn/sky/unstable/io/arc.lua
using /home/we/norns/lua/extn/sky/unstable/engine/polyperc.lua
including /home/we/dust/code/tambla/lib/halfsecond.lua
including /home/we/dust/code/tambla/lib/model.lua
including /home/we/dust/code/tambla/lib/pages.lua
using /home/we/norns/lua/extn/sky/unstable/core/page.lua

MISSING INCLUDE: lib/dep/rxi-json/json

SCRIPT ERROR: load fail

/home/we/dust/code/tambla/lib/pages.lua:4: MISSING INCLUDE: lib/dep/rxi-json/json
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:48: in function ‘include’
/home/we/dust/code/tambla/lib/pages.lua:4: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/startup.lua:42: in function ‘include’
/home/we/dust/code/tambla/tambla.lua:29: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/script.lua:172: in function </home/we/norns/lua/core/script.lua:172>
[C]: in function ‘xpcall’
/home/we/norns/lua/core/norns.lua:139: in field ‘try’
/home/we/norns/lua/core/script.lua:172: in function ‘core/script.load’
/home/we/norns/lua/core/menu/preview.lua:21: in function ‘core/menu/preview.key’
/home/we/norns/lua/core/menu.lua:139: in function </home/we/norns/lua/core/menu.lua:116>

script clear

ERROR (i2c/hp) failed to write
clock: ignoring resumption of canceled clock (no coroutine)

sorry, my bad - i’m guessing the zip file was used? i just pulled down the link for now. the rxi-json lib is being pulled in as a git submodule which the maiden install will handle but the zip file is missing.

i’ll correct the zip file next chance i get.

i’d recommend deleting the install you have and using maiden

3 Likes

thanks for the help! i was unaware that i needed to refresh the community catalog actually haha. found on maiden now and working

lovely script by the way!

1 Like