^^ crow 2.0+ help: general (connectivity, device q’s, ecosystem)

thanks for the info @csboling. I would love to have crow i2c for the trilogy modules, meadowphysics being my main interest but I think it would be a great update for the whole trilogy. hopefully in a future update :crossed_fingers:

Is there any way to clear the scale setting entirely from an output? Additionally it doesn’t seem to clear with a crow.reset(), is this a bug?

To unset you can use output[1].scale(‘none’).

I checked and this is not in the reference. I’ll add it, and also add it to the crow.reset() behaviour.

In the meantime you can always use ^^r which performs a complete reboot (same as turning the power off/on).

1 Like

Thanks this worked. I dind’t know that the folder included that file.

General question: as of now it seems like crow cannot be clocked via an external midi device, but in previous threads I’ve seen rumblings of that being a possibility. Anyone know if still planning on being implemented?

This won’t be happening as a TRS MIDI input like we hoped before the initial release.

We are entertaining the idea of supporting MIDI over USB though, so it should be possible to clock crow from a USB host (like a laptop / norns / rpi etc). There’s still much design work to figure a smart way to implement that, but it is on our radar.


Is there a way to double check if an update of Crow was successful?

I did get this message in Termanial:

Download	[=========================] 100%       
Download done.

However, one script is not working as intended, so I just wanted to make sure…

Looks like it worked! What is the problem you are having?

leaving this up for posterity but i would direct anyone struggling to posts by @cfurrow and @midouest in the crow.1.3.0 thread - everything works now ^.^ just missing steps or not following the proper order

spoke too soon druid is back to freezing every time i try to run a script -_-

hey! i’m having trouble updating the crow firmware - i’m using a mac os and tried to run the update from the firmware and got this message in terminal

i’m sure its an easy fix or solution, i was wondering if anyone could pointme in the right direction?

thanks alot!

update - just restarted the setup phase with homebrew etc and got to the df-util stage again and this was the result
Screen Shot 2020-08-26 at 11.29.22 PM

tried opening druid afterwards to run some script but its freezing when i try to run anything

This actually looks like everything is working! The r and u commands are a bit strange because if they can’t find the file mentioned, they just send the line you entered to crow (because you might have wanted to do a variable assignment like r = 1.5). So I guess there is no markov.lua file in the directory where you ran the druid command, and the message is actually coming from crow saying that it couldn’t evaluate the string r markov.lua as Lua text. If you send something like print(2 + 2), crow should evaluate it and send back 4. This should let us confirm that crow is connected and working.

Are you saying that druid freezes when you enter the last line in your last screenshot (r Downloads/python/druid-master/src/druid/markov.lua)? If that’s where the markov.lua file is, maybe there’s something in that script that’s crashing crow? Where did the markov.lua script come from?

i downloaded that from github but since then i’ve just tried to use quantize and cvdelay from bowery. I’ve tried to run ^^c and used a differed script to see if its the code or druid/crow on my end and still freezing.

Can you run even a one line command like print(2 + 2) or output[1].volts = 5? If that works maybe you can try creating a minimal script and running that, like

function init()

When you try running a script, what happens? druid freezes?

ran them all and druid doesn’t freeze, but doesn’t run anything after i entered the code either

Thanks for the video, that’s super helpful. What’s odd is that druid shows <crow connected> when you start it — this should mean that a crow was found and it’s in normal mode and not the bootloader – but you’re not getting any response from crow. In your earlier screenshot the lines starting with repl:1: are definitely being sent back by crow’s Lua evaluator.

Is it possible you have multiple druid windows open? This can result in weird behavior where more than one program is trying to read crow’s output. Currently druid doesn’t know how to detect / prevent this.

just quit the current druid one, quit terminal, reopened and still having the same issues

Huh! After opening druid, maybe turn crow off and back on (you may have been trying this all along)? I wonder if it is stuck in some Lua code from a script and can’t respond to input. You should see something like:

<crow connected>
<crow disconnected>
<crow connected>

where the first crow connected message is the message druid shows on startup when it detects that crow is there, then disconnected / connected happens when you turn crow off and back on. After that maybe see if you can run something simple like print(2+2) again?

1 Like

by the way, thanks so much for following this so closely i really, REALLY appreciate it haha

just tried that and still no results …

1 Like

This is working, the “No user script” and “Calibration failed” messages are coming from crow. But it sounds like when you try to run a script like r druid-master/quantizer.lua that druid freezes and then crow becomes unresponsive? Can you upload the quantizer.lua file here that you’re trying to run so we can confirm what it looks like? Maybe there’s something in the file that’s confusing crow?

heres the script, replaced the bad version but still freezes druid

quantizer.lua (1.8 KB)

— quantizer example
– s wolk 2019.10.15
– in1: clock
– in2: voltage to quantize
– out1: in2 quantized to scale1 on clock pulses
– out2: in2 quantized to scale2 on clock pulses
– out3: in2 quantized to scale3 continuously
– out4: trigger pulses when out3 changes

– nb: scales should be written as semitones (cents optional) in ascending order
octaves = {0,12}
Persian = {0,1,4,5,6,8,10}
dmpen = {1,5,7,9,12}
csus = {1,6,8}
majorTriad = {0,4,7,12}
dominant7th = {0,4,7,10,12}

– try re-assigning scale1/2/3 to change your quantizer!
scale1 = Persian
scale2 = dmpen
scale3 = csus

function quantize(volts,scale)
local octave = math.floor(volts)
local interval = volts - octave
local semitones = interval / 12
local degree = 1
while degree < #scale and semitones > scale[degree+1] do
degree = degree + 1
local above = scale[degree+1] - semitones
local below = semitones - scale[degree]
if below > above then
degree = degree +1
local note = scale[degree]
note = note + 12*octave
return note

– sample & hold handler; sets out1 & out2
input[1].change = function(state)
– sample input[2]
local v = input[2].volts

– quantize voltage to scale
local note1 = quantize(v,scale1)
local note2 = quantize(v,scale2)

– convert semitones to volts and update out1 & out2
output[1].volts = n2v(note1)
output[2].volts = n2v(note2)

– streaming handler; sets out3 & out4
input[2].stream = function(volts)
– find current quantized note
local newNote = quantize(volts,scale3)

– check if quantized voltage is equal to current voltage
if n2v(newNote) ~= output[3].volts then
– if not, update out3 to new voltage and pulse out4
output[3].volts = n2v(newNote)

function init()
print(‘quantizer loaded’)

Hm, not sure, it looks basically okay but I’m not able to test with crow right away. I would say maybe give some small test scripts or some other Bowery scripts a try? There have been a lot of changes in crow v2.0.0 and I’m not sure if everything on Bowery has been updated / tested.

1 Like