You could have more buffers than voices and provide a command to point a given voice at a an arbitrary buffer - this is simple and oefficient in SC but you gotta worry about buffer boundaries I guess.

Alternatively you could load your multiple samples into one large buffer and skip around in it

2 Likes

any special scripting necessary to get param midi learn working with a particular script? or any stuff that breaks it? a few folks have reported that they can’t map any of the params except volume in cranes :frowning:

2 Likes

parameter mapping is currently limited to Control param types.

working on a big update for all param types, along with range scaling and rotary encoder support

(also fyi new standalone softcut is amazinggg)

10 Likes

so so so stoked!

rad to know re: Control params – speeds are all options, so mystery solved, thank you!

1 Like

Yeah, thanks so much. Looking forward to the update. Not hurry. Got plenty to keep me busy.

Further to my thinking out loud about soundfile editing, saving files and the issue of filenaming: I was wondering if a nice solution to hunting through characters with encoders could be a random filename generator, but instead of characters and numbers it could generate filenames from a big dictionary of random words? I feel like it would be cool to have a lines’ey corpus of strings that could be mushed together to make quick filenames on the go for recordings that are more memorable than R-1239BLAH.wav

Useful or problematic?

The ER-301 module does something similar with naming its custom units. Here is a link to a discussion of their new approach. https://forum.orthogonaldevices.com/t/random-custom-unit-naming/2379

i’m with bobb on this one

5 Likes

(blushes in 20 characters)

A middle ground here could be hunting through small (10~) banks of words or symbols with encoders. These could be kind of like tags, and they could be kept specific or sufficiently abstract for people to ascribe meaning to them. That way you can get some amount of information attached to each file, but it’s still relatively quick to name them.

2 Likes

i literally half-implemented something like this for tape name generation!!

my (obviously not original) idea was to have a user text file with dictionary data to pull from, so the creation of the dictionary could simply be defined by the user

6 Likes

Is there a way to only confirm parameter setting by pressing key 3? I’m implementing a save/load function in parameters, and want params:set_action() to only work on key press.

i wrote a performance script for norns this year, here’s a quick demo vid https://vimeo.com/307916965

19 Likes

This looks/sounds awesome!

Wowwww this is amazing

1 Like

I hope I get a chance to play with this someday. So flexible and powerful.

hitting a Lua n00b wall with comparing tables.

attempting some 1-d CA stuff (a la ‘less concepts’), basically translating seed integers to binary and using comparisons against a fixed set of neighborhood rules to determine note events. stole a compare function from the internet.

so far, I have...
seed = 30
rule = 251

function seed_to_binary()
  seed_as_binary = {}
  for i = 0,7 do
    table.insert(seed_as_binary, (seed & (2 ^ i)) >> i)
  end
end

function rule_to_binary()
  rule_as_binary = {}
  for i = 0,7 do
    table.insert(rule_as_binary, (rule & (2 ^ i)) >> i)
  end
end

function init()
  seed_to_binary()
  rule_to_binary()
  seed_packs ={}
  seed_packs = {  {seed_as_binary[1], seed_as_binary[8], seed_as_binary[7]},
                  {seed_as_binary[8], seed_as_binary[7], seed_as_binary[6]},
                  {seed_as_binary[7], seed_as_binary[6], seed_as_binary[5]},
                  {seed_as_binary[6], seed_as_binary[5], seed_as_binary[4]},
                  {seed_as_binary[5], seed_as_binary[4], seed_as_binary[3]},
                  {seed_as_binary[4], seed_as_binary[3], seed_as_binary[2]},
                  {seed_as_binary[3], seed_as_binary[2], seed_as_binary[1]},
                  {seed_as_binary[2], seed_as_binary[1], seed_as_binary[8]}  }
                
neighborhoods = { {1,1,1},
                  {1,1,0},
                  {1,0,1},
                  {1,0,0},
                  {0,1,1},
                  {0,1,0},
                  {0,0,1},
                  {0,0,0} }

if compare (seed_packs,neighborhoods) then
    print("true!")
  else
   print("false")
end
end

function compare (s, n)
  if type(s) == type(n) then
        if type(s) == "table" then
                  for loop=1, 3 do
                    if compare (s[1][loop], n[8][loop]) == false then
                        return false
                    end
                  end

                return true
        else
            return s == n
        end
    end
    return false
end

getting stuck with the compare function working with the tables. right now, it’s only able to return results comparing line 1 of the seed table and line 8 of the neighborhood table. it currently verifies that binary seed cluster #1 (000) matches neighborhood #8 (000).

however, I want it to return ‘true’ when a line of the seed table matches a line of the neighborhood table, basically like this:

does binary seed cluster #1 match neighborhood #1?
if yes, event and move on.
if no, move on and try with seed cluster #1 + neighborhood #2, then neighborhood #3, etc etc until neighborhood #8, then:
does binary seed cluster #2 match neighborhood #1?
and again.

this is likely murky, but figured I’d ask :slight_smile:

Check this out maybe

1 Like

ah! duh. totally spaced on elca!

are there any example scripts that utilize it or show a simple application? i couldn’t wrap my head around elcos before it got pulled.

I can resurrect elcos and make it run in the new script framework. it’s pretty simple

My favorite trick with running elca in the grid, is allowing you to toggle a cell in the history, and altering the current rule such that the new state would have been produced

4 Likes