I am also finding that I cannot get input[1] to respond to gates:

  crow.input[1].mode('change',1.0,0.1,'rising')
  crow.input[1].change = function(s)
    step_channel_1()
  end

  crow.input[2].mode('change',1.0,0.1,'rising')
  crow.input[2].change = function(s)
    step_channel_2()
  end

but only channel 2 is working.

@germinal what modules are you clocking with?
Have you tried changing the threshold value (currently 1.0 in your codeblock). I’d try something around 2.0, and if that still doesn’t work, something lower like 0.4V.

Thank you @Galapagoose -
I’m using gate outputs from Marbles - the spec says 0-8v gates.
I tried setting the threshold to 2.0, 4.0, and 0.4 - input[2] triggers accurately with all of those threshold
settings, no response from input[1]

I tried using input.query() to check what values are present at each input, got this:

>> crow.input[1].query()
<ok>
crow input stream: 1 0.05141783
>> crow.input[1].query()
<ok>
crow input stream: 1 7.651477

>> crow.input[2].query()
<ok>
crow input stream: 2 0.05831957
>> crow.input[2].query()
<ok>
crow input stream: 2 7.721452

I think this suggests that I am reading the right voltages at both inputs, but for some reason only input[2] is triggering the action?

I started looking at the Norns crow lib - if i understand right, it’s sending Lua over the serial connection? - and I wonder if Norns should be sending the command set_mode instead of mode here:

to match the crow API?

Update: since this looks like a Norns issue rather than a crow issue, I made an issue and a pr on norns – no idea if I’m on the right track or not though.


1 Like

Any tips for using asl actions like lfo or the ar envelope in norns scripts? I tried including a local copy of the asllib.lua file and pointing to it from my norns script, but I still get errors when attempting to call the ar function - for example - from init(), i.e.

crow.output[1].action = ar(0.01,0.5,5)

Is this a syntax thing, or am I better off creating an envelope manually with to{}?

It has to be wrapped in double quotes like a string, I think it’s getting run on Crow itself.

crow.output[1].action = “ar(0.01,0.5,5)”

2 Likes

wow, this is totally confusing as i swear the crow studies were working. thanks for investigating, i’ll check this out tomorrow.

1 Like

Amazing — got it working just now, thanks!

1 Like

Been thinking about bi-directional communication between Crow and Norns a little more. I would love to be able to run an algorithm on Crow and plug in Norns in order to say, manipulate some parameter values with my Arc, but not have to keep the Norns plugged in beyond that point.

That ability to add a layer of abstraction as opposed to directly setting output values from the Norns code, could let people do some pretty cool stuff with hybrid Crow/Norns scripting,

I have this kind of thing working, but it’s a lot of boiler plate to keep the devices synced. Working on a little library for norns to standardize these kinds of interactive setups. Hoping to have something posted this week, there’s just so many things to focus on!

7 Likes

I’m pretty sure this will work already. I’ve asked a question about doing something similar, and my understanding is the crow script is always running, so you could have a second norns script for modifying your crow script params (which would work the same as updating those values by livecoding in druid), and if you switch norns scripts (or disconnect norns) it should remain in that state.

1 Like

ok i’ve stumbled upon this crow norns connection issue: https://github.com/monome/norns/issues/915

working on it. this crept in with v1.0.0

edit: fixed it! norns update forthcoming (tomorrow)

2 Likes

fwiw @nosollution @jakecarter - I managed to fix my input[1] by running crow.clear() from the maiden console - no clue if y’all are still seeing that issue or even if it’s the same root cause, but thought I’d share in case it helps.

In general, I wonder if it should be best practice for norns scripts that use crow to call crow.init(), crow.reset(), or crow.clear() at startup?

I’ll admit to being a little bit confused by crow keeping a stored script in flash that is different from, and can interfere with, what it receives from norns.

1 Like

That would explain some other oddities I noticed the other day. Thanks for the tip!

not sure the latest update fixes this, but I’ve been getting inconsistent results with Norns->Crow–>i2c–>JF connections. Is there a particular order in which to power things on so that leader/follower etc. doesnt get messed up? Whici to power on first? Norns, then crow/JF eurorack? keep the Norns-Crow USB plugged in during power up or only connect after powerup? apologies if this has already been addressed.

@gnome666 you need to run the update as crow doesn’t attach reliably to norns without it. it should work well after.

Bumping this. For some reason, after the latest update, I had to restart crow a couple of times before it could establish a connection with the norns script I had been working on pre-update. All good now, but I’d love to fold any of these commands into my init script if that’s the best course of action.

2 Likes

When I output a pulse on Crow from a Norns script, I get intermittent errors from the same command. For example, in Norns I am executing a loop with:

  crow.output[2].action = 'pulse(.1,10,1)'
  crow.output[2].execute()

This works 95% of the time and successfully outputs a pulse from Crow, but every now and then then the pulse fails and I get the following error in Matron:

crow: [string "eval"]:1: attempt to index a nil value (field 'vooutput')

Any ideas what this error means? I’m using the latest versions of Norns and Crow.

I’m experimenting with combining Crow and Ansible through Norns. For now I have two challenges;

  • I can’t get the parameter/event system to work. When trying to execute a crow.ii.ansible.get( "trigger"), i get an attempt to call a nil value (field 'get') error
  • also i’m sending simple pulse every second, that doesn’t always go through. I’m initializing all 4 channels in init() like this:
  crow.reset()
    crow.ii.pullup(true)
      for j=0,3 do
            crow.ii.ansible.trigger_time(j,0.5)
            crow.ii.ansible.trigger(j,0)
        end

and then every second:

for j=0,3 do
         crow.ii.ansible.trigger_pulse(j)
end

But, instead of 4 pulsing triggers I get a weird pattern, where some gets turned off, some on. I guess it might be a timing issue - or probably just me, that doesn’t get a whole lot about i2c :slight_smile: - I was then trying to get the state of each trigger out, to maybe resolve timing - but alas, thats where the “nil value” turns up…

I have updated crow to latest firmware, btw…

update fixed the problem. thanks!

I ran into this too. (See GitHub issue below.) For a workaround, if you aren’t changing the action every call, assign it during init and only call the execute in your loop.

1 Like