Looks like the development team is currently trying to get their arms around the various I2C messaging schemes implemented within the existing “TT & friends” ecosystem. If you’ve been involved in the previous development efforts for these modules, I’m sure your input would be valued! For the home user, here’s a status report:

I2C devices currently working:

  • Just Friends
  • w/
  • Meadowphysics
  • Ansible (partial), Kria

I2C devices yet to be incorporated:

  • TXi, TXo
  • 16n
  • ER-301
  • Earthsea, Orca, White Whale
  • Matrixarchate
9 Likes

I’ve been kind of perplexed with clocking crow. I’ve been using the sequencers on Norns, but with the 2 scripts(awake and less concepts) the only external clock info I see is from midi clock and no way to take a trig in from one of crows inputs as a sync source. I’m trying to sync this awesome new piece of gear into my whole rig and idk if I’m just missing something on how to do this.

There is info here on reading the input (part 2):

https://monome.org/docs/crow/norns/

It shows how to detect a change on the input – you could use this detected change to advance your metro or clock.

4 Likes

by design on my script – just didn’t think to add the param. will fold it in this week, thank you for the feedback!

4 Likes

I did exactly this with my midirecorder script and it works as expected.

Edit: to be precise, I have the detected changes calling a function that executes all of the time-step actions. No metro/clock in the loop.

If I plug a midi keyboard directly into Crow will it output cv / gates from its physical outputs or does it require a specific midi keyboard script to work? Just wondering whether Crow auto recognises midi devices and HID device like Norns or not at all.

1 Like

What license is used for Lua scripts from the monome / mannequins team? What is best practice for sharing and repurposing code within the community?

According to GitHub, the Norns code appears to be GPL-3.0. I didn’t take a look through the scripts or Crow, but you could.


@mlogger I think that Crow is a USB device, so plugging a MIDI controller into its USB port won’t work?

3 Likes

@mlogger – thought I read that one of the inputs would accept a midi trs connector, but it is not a host, so it won’t be USB? Probably needs a script as well.

2 Likes

I got norns and crow talking successfully last night, but I ran into some gotchas along the way:

  • I was stuck for a while wondering why I could set an output action and run it from druid, or interactively in maiden, but putting it in a clock-triggered script was giving me lots of inscrutable errors. Turns out this was a result of trying to assign the action every clock. This is not an instant operation and should be done on init! That’s quite a sensible restriction but the error message isn’t at all helpful at figuring out what’s wrong. The errors also appeared to leave crow in a weird state that required a couple resets to get working again.
  • Understanding differences between druid and norns/maiden: I was aware up front, either from the docs or discussion here, that .action code needed to be quoted in norns/maiden, but not in druid. But it took me a while to figure out that in druid you have to do output[x]() instead of norns/maiden’s output[x].execute().

Thanks for the feedback!

Re 1. Do you have an example script here? I don’t see why this is failing (and I’d like to make sure it doesnt). .action should be reassignable on the fly, even if it’s not the most efficient approach.

Re 2. I’ll add an alias on crow standalone so .execute works via druid.

1 Like

Sure, happy to help! Here’s a distilled example. I’m using crow 1.0.0 but I saw similar effects prior to the update. I’m using the USB cable that came with crow in the leftmost norns USB port.

test script
-- crow: example of setting action on clock

local BeatClock = require 'beatclock'
local clk = BeatClock.new()

local function step()
  local a = 4
  local b = 2
  local c = 5
  crow.output[1].volts = a
  crow.output[2].action = "pulse(0.1, 8, 0)"
  crow.output[2].execute()
  crow.output[3].volts = b
  crow.output[4].volts = c
end

function init()
  
  clk.on_step = step
  clk.on_select_internal = function() clk:start() end
  clk:add_clock_params()

  params:set("bpm", 91)
  params:default()

  crow.reset()
  
  clk:start()
  
end

function cleanup ()
  clk:stop()
end

This works initially – but the pulse sounds too fast, almost double-time. And eventually, sometime between a couple triggers and a couple minutes later, it starts failing with this error:

crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')
crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')
crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')
crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')
crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')
crow receive: [string "local Asl = {}..."]:115: attempt to get length of a nil value (field 'exe')

Sometimes, if the script is able to run for a while, periodic instances of this error also appear in the console. Sometimes the error is accompanied by a single missed pulse, but not always.

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

If I move the crow.output[2].action line into init() after crow.reset(), then I never see the local Asl errors, and the timing on the pulse is correct. I do occasionally still see the attempt to index a nil value message, but more rarely, sometimes with a dropped pulse also.

(In both cases, I also have about a 10% failure rate with hitting Play in maiden and having the script work, hitting Play again usually fixes it, maybe I need a delay after calling crow.reset()?)

1 Like

Thanks for the detailed response. Seems the same as this issue on github. Seems like it might be norns specific, but I’ll investigate! (also copied your comment to GH).

1 Like

Awesome, thanks! Will move any further commentary to GitHub. Overall very excited about crow as a development platform, thanks for all the hard work!

3 Likes

Did you get it working in the end?

I have the same issue - crow seems to be working otherwise, and all other M4L devices are working. JF is updated to latest firmware. I2C cable is 15cm long and oriented correctly (GND to GND). All this but no luck using JF in synthesis mode.

q for the devs: did crow conceptualize as a means to integrate norns with modular or was the project under development prior to norns?

also in trying to summarize for a friend the difference between crow and teletype, is it far off to say: crow is capable of more abstraction through lua (@Galapagoose), has less i/o (smaller footprint), and allows storage of a single script up to ~400 lines? is it also fair to say teletype allows more control over long musical sequences through patterns (arrays)? by the way, this isn’t a measure of quality of device, but more me trying to make sense of things as i navigate the monome ecosystem.

3 Likes

Just purchased 2 Crows.

One is working fine (druid, m4l devices, norns, and first all working as expected).

The other one is having a ton of issues:

  • druid connects (i can successfully upload scripts and download to print the scripts on screen) but nothing comes out of the outputs on the device when running the scripts. Even First doesn’t work and I checked on Druid and it’s the current script on the device.
  • just friends i2c completely unresponsive most times. Though i recently tried it again and it worked for about 5 minutes before freezing up my norns and stopping. Norns unfroze as soon as i unplugged the USB cable from Crow.
  • when connected to the max for live devices the connection constantly drops or freezes.
  • when connected to norns it works for a minute, then connection drops or freezes.

I uploaded the firmware on both crows with the same firmware update (v1.0.0) . i attempted to do a reupload of the firmware on the finniky crow and both times it said the update was successful, but the same issues are persisting.

Any thoughts?

just to double check, are you using both at the same time or just the wonky one when things are wonky?

Just the wonky one when things are wonky.

Tried it in 2 different euro racks with different power and different modules.

The good one works fine in both cases.

The wonky one has the same problems in both cases.

I’m wondering if I’m not experiencing similar symptoms with mine. I’m getting consistent results from Max4Live, and norns has been mostly good, but druid is less reliable in my case.

I was trying testing an alternate firmware, but plan on jumping back to v1 tonight and will run some of the same tests tonight